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的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  3. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  4. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  7. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  8. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

  9. BZOJ2741: 【FOTILE模拟赛】L

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] ...

  10. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

随机推荐

  1. 玄机蓝队靶场_应急响应_02:apache日志分析

    日志分析这块,感觉都是对grep.awk.sort.wc.uniq,这几个命令的使用. 一:靶场 (1)直接cd到linux日志, cd /var/log 发现apache2目录, cd ./apac ...

  2. 防止npm被墙的小技巧

    方法一: 全局安装中国服务器的包管理工具 npm i cnpm --global 下载包的时候用cnpm取代npm 方法二: 在小黑板输入:npm config set registry https: ...

  3. 每天5分钟复习OpenStack(十五)Ceph与Bcache结合

    上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速. 1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME ...

  4. 在stable diffussion中完美修复AI图片

    无论您的提示和模型有多好,一次性获得完美图像的情况很少见. 修复小缺陷的不可或缺的方法是图像修复(inpainting).在这篇文章中,我将通过一些基本示例来介绍如何使用图像修复来修复缺陷. 需要的软 ...

  5. 云上分布式SQL Server,你值得拥有

    云上分布式SQL Server,你值得拥有 介绍Microsoft SQL Azure 是微软的云关系型数据库,后端存储又称为云 SQL Server(Cloud SQL Server).它构建在 S ...

  6. Spring —— IoC入门案例

    IoC入门案例   思路分析:     1.管理什么?(Service与Dao)     2.如何将被管理的对象告知IoC容器?(配置)     3.被管理的对象交给IoC容器,如何获取到IoC容器? ...

  7. Vue3——axios 安装和封装

    axios 安装和封装 安装 npm install axios 最后通过 axios 测试接口!!! axios 二次封装 在开发项目的时候避免不了与后端进行交互,因此我们需要使用 axios 插件 ...

  8. YAML编写应用的资源清单文件(十五)

    上面我们在 Kubernetes 中部署了我们的第一个容器化应用,我们了解到要部署应用最重要的就是编写应用的资源清单文件.那么如何编写资源清单文件呢?日常使用的时候我们都是使用 YAML 文件来编写, ...

  9. Maya 2019.2 Mtoa 无法正常加载并报错

    事件起因: 在开始安装 Maya2019.2 时自动安装的 Mtoa 的版本为 5.3.1,但是在插件管理器里无法启用插件,于是乎去网上下了一个低的版本 5.1.1,虽然可以使用但是渲染出来的东西不能 ...

  10. war3辅助代码及运行方式

    打开VS2019 点这个 自动生成这么一堆代码,全删了,就剩这些就行 然后点这里 然后向CPP里粘贴以下代码 #include "tlhelp32.h" HANDLE hwnd = ...