NZOJ 模拟赛4
T1 数字游戏
大家列队后,都觉得累了,于是一起坐到院子中的草地上休息。这时Anna突然想跟她的最大竞争对手Cici玩一个数字游戏,她要你编写程序帮助她取得胜利。
第i次游戏初始时有一个整数N_i(1 <= N_i <= 1,000,000),游戏以Anna先开始,然后是Cici,这样两人轮流进行。在每一轮中,一个游戏者可以把当前整数中减去原整数中最大的数字或最小的非零数字,形成一个新的整数。例如从3014开始,我们可以减去1或4,分别形成整数3013或3010.直到这个整数变为0时游戏结束。游戏结束时最后轮到那人就是胜利者。
Anna和Cici总共进行G(1 <= G <= 100)次游戏。请你帮助确定每次游戏到底是Anna还是Cici获得胜利。Anna和Cici两人都是足够聪明的,如果轮到某人时,对方留给她的数是必胜的,她将毫不犹豫按最优策略取得胜利。
假如某次游戏N_i=13。Anna先走并从中减去3,剩下10,然后Cici只能减去1,剩下9,Anna减去9,剩下0游戏结束,Anna取得这次游戏的胜利。
考察对SG函数的运用,为所有后继节点权值的 \(Mex\) 和,如果 \(SG[x] ~ = ~ 0\) 则必败,否则必胜。
参考代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int sg[N];
int check(int x)
{
if (sg[x] != -1) return sg[x];
int maxx = 0, minn = 9, k = x;
while (k)
{
int t = k % 10;
k /= 10;
if (t) maxx = max(t, maxx), minn = min(t, minn);
}
unordered_set<int> S;
S.insert(check(x - maxx));
S.insert(check(x - minn));
for (int i = 0; ; i ++ )
if (!S.count(i))
return sg[x] = i;
}
void solve()
{
int n;
cin >> n;
check(n) ? puts("YES") : puts("NO");
}
int main()
{
memset(sg, -1, sizeof sg);
sg[0] = 0;
int T;
cin >> T;
while (T -- ) solve();
}
T2 电话时间(phone)
某人总是花很多时间给父母打电话。有一次他记录了打电话的开始时间和结束时刻t1和t2,请你帮他算算此次通话一共用了多少秒。又有一次,他记录了打电话的开始时刻t1和通话的时间长度len,请你帮他计算他在什么时刻结束通话。
已知每次通话时间小于24个小时。
小模拟,按照题目要求模拟即可。
T3 开心农场
Chroi整个暑假忙于OI,没什么时间照顾开心农场,需要你的帮助。他可以告诉你他哪些时间上线,你要做的就是告诉他最多可赚多少钱。而且由于Chroi的农场等级比较低,所以只能种单季作物,就是只能收获一次的。
在开心农场中,每个用户都有一定数目的土地,每次上线可以做的事是在土地上摘果实、卖果实、种下种子,每块土地上只能种一种作物,每块土地各自独立。
假设Chroi每次上线的时长是一瞬间,他能在瞬间做完所有他想做的事。
输入文件包含多行,第一行有三个正整数n,m,t,k,分别表示Chroi的农场中有n块地,共有m种作物可以选择,一天有t个时刻,有k个时刻Chroi可以上线。
接下来的m行每行输入三个正整数,第一个数字表示种子价格,第二个数字表示种子成熟时间(小于t),第三个数字表示成熟后果实的售价。再次提示,这些都是整数。
再接下来的一行有k个自然数,保证该整数为0,1,2...t-1中的一个,为Chroi可以上线的时刻。这k个自然数不会重复。
输入文件到此结束。
首先很自然的一个想法是,这么多地,如果种植了某种作物,又种植的其他作物,那么只种价值最高的那种作物一定是最优的。
第二个想法是,如果有两种作物种植时间相等,那么选择最划算的那个一定最优。
然后考虑如何dp,很直接的想法是按照时间dp,对于当前时间节点 \(dp[i]\),如果存在一个时间节点 \(dp[j](j < i)\),Chroi恰好能在 \(i, ~ j\) 这两个时刻都上线,那么可以列出状态转移方程 \(dp[i] = dp[j] + w\),\(w\) 表示能种植在这段区间的作物,利用一个前缀 \(max\) 数组存储最优 \(w\),每次合法时考虑种植最优的即可。
参考代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3010;
int n, m, t, k, st[N];
ll w[N], dp[N], maxx[N];
int main()
{
cin >> n >> m >> t >> k;
for (int i = 1; i <= m; i ++ )
{
ll a, b, c;
cin >> a >> b >> c;
w[b] = max(w[b], c - a);
}
for (int i = 1; i < t; i ++ ) maxx[i] = max(maxx[i - 1], w[i]);
for (int i = 1; i <= k; i ++ )
{
int a;
cin >> a;
st[a] = 1;
}
for (int i = 0; i < t; i ++ )
for (int j = 0; j < i; j ++ )
if (st[i] && st[j])
dp[i] = max(dp[j] + maxx[i - j] * n, dp[i]);
ll ans = 0;
for (int i = 0; i < t; i ++ ) ans = max(ans, dp[i]);
cout << ans << endl;
return 0;
}
T4 选票统计
有k名候选者,有n(n<=10000)人参加了投票,与以往不同的是,这次所有得票数超过n/4的人都是优胜者。请你统计收到的n张选票,找出符合条件的优胜者(可能不止一个)。
第一行一个整数n。
第二行有n个正整数,每个数字代表一张选票所选的人的编号(编号<longint范围)。
每行一个正整数,为优胜者的编号,由小到大,一行一个优胜者的编号。如果没人获胜,则输出“No such person.”。
模拟一下,开一个桶记录票数,扫一遍就是答案。
NZOJ 模拟赛4的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- PKUSC 模拟赛 day1 下午总结
下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
- BZOJ2741: 【FOTILE模拟赛】L
2741: [FOTILE模拟赛]L Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1170 Solved: 303[Submit][Status] ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
随机推荐
- 【YashanDB数据库】YAS-02143 invalid username/password, login denied
[问题分类]错误码处理 [关键字]jdbc,02143 [问题描述]应用启动后,报错YAS-02143 invalid username/password, login denied [问题原因分析] ...
- 推荐一款开源、高效、灵活的Redis桌面管理工具:Tiny RDM!支持调试与分析功能!
1.引言 在大数据和云计算快速发展的今天,Redis作为一款高性能的内存键值存储系统,在数据缓存.实时计算.消息队列等领域发挥着重要作用.然而,随着Redis集群规模的扩大和复杂度的增加,如何高效地管 ...
- spark 中怎么像 pandas 里面对时间数据做 resample
1. 笨办法 pandas Dataframe 可以很容易做时序数据的 resample,按照一定的frequency 聚合数据. 但是spark 中因为没有顺序的概念就不太好做,下面是怎么在spar ...
- Go日志管理库zap
一.zap介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 1.能够将事件记录到文件中,而不是应用程序控制台. 2.日志切割-能够根据文件大小.时间或间隔等来切割日志文件. ...
- OData – 基础语法 Basic
前言 有时候太久没有写真的会忘记,官网又太罗里吧嗦,还是写一篇帮助以后快速复习进入状况吧. Request URL: "/root/version/entities" OData ...
- JavaScript – Temporal API & Date
前言 Temporal API 是 JS 的新东西,用来取代 Date.虽然现在 (12-09-2024) 依然没有任何游览器支持 Temporal API,但它已经是 stage 3 了,而且有完整 ...
- RxJS 系列 – Join Operators
前言 前几篇介绍过了 Creation Operators Filtering Operators Join Creation Operators Error Handling Operators T ...
- ASP.NET Core Library – FluentValidation
前言 之前就有写过学习笔记: Asp.net core 学习笔记 Fluent Validation 但都是用一点记入一点,零零散散不好读, 这一篇来稍微整理一下. 主要参考: Fluent Vali ...
- 1 月 25 日见|Flutter Forward 活动日程表正式发布!
2023 年 1 月 25 日 (正月初四),我们将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播.本次活动将展示最新的 Flutter 技术更新,包括一个主题演讲以 ...
- QQ或者微信可以放昵称的超好看的符号
☪︎⋆ ✯ ⛈ •ᴗ• •ᴥ• ◔.̮◔ ᕱ ᕱ ⸝⸝· ᴥ ·⸝⸝ ʕ·͡ˑ·ཻʔ ʕ•̫͡•ོʔ ˃̣̣̥᷄⌓˂̣̣̥᷅ °꒰'ꀾ'꒱° ⋆ᶿ̵᷄ ˒̼ ᶿ̵᷅⋆ ˙ϖ˙ ⚝ ︎ .˗ˏˋ♡ˎˊ˗ ...