27 条题解
-
0Snow (zhuqirui123) LV 10 @ 2023-10-07 23:41:49
下面是用C++编写的解决此问题的代码:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, final; cin >> n >> final; vector<pair<int, int>> attacks(n); for(int i = 0; i < n; i++) { cin >> attacks[i].first >> attacks[i].second; } sort(attacks.begin(), attacks.end()); // 按时间进行排序 int maxTanks = 0; int tanks = 0; int index = 0; for(int time = 0; time <= final; time++) { if(index < n && time == attacks[index].first) { // 如果当前时间有进攻事件 tanks += attacks[index].second; // 增加进攻的坦克数量 index++; } if(tanks > maxTanks) { // 更新最多坦克数量 maxTanks = tanks; } if(time % 2 == 0) { // 每隔一秒造一个战车工厂 tanks++; } } if(maxTanks > tanks) { cout << "twbzuobile" << endl; } else { cout << maxTanks << endl; } return 0; }
这段代码首先读取输入的攻击次数和最终攻击时间,然后使用一个vector来存储每次攻击的时间和数量。然后根据时间对攻击进行排序。
接下来,代码使用一个循环模拟每秒的战斗情况。在每秒中,如果有进攻事件,则增加相应的坦克数量。并且每隔一秒造一个战车工厂,增加一个坦克。
最后,代码比较最多拥有的坦克数量和实际的坦克数量。如果最多的坦克数量超过了实际的坦克数量,则输出"twbzuobile";否则,输出最多坦克数量。
-
02017-06-19 16:34:55@
好可怕的题
-
02012-09-23 12:54:04@
...我忽然发现
curimit的题解上 如果curimit无法抵挡陶陶的进攻,那么输出“No Answer!”;
而题目中 如果curimit无法抵挡陶陶的进攻,那么输出"twbzuobile";
听谁的???? -
02012-07-23 07:35:30@
我勒个去 math库都不能用!!!!!
-
02010-04-08 16:51:06@
果断ORZcurimit。
要好好学数学,不过我还不会做。
-
02010-02-27 18:42:46@
ORZ,我还是不会玩
-
02009-11-20 22:59:12@
inline
-
02009-11-03 21:03:07@
orz怪盗基德神牛 有60分
-
02010-04-07 11:28:16@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 9ms
├ 测试数据 05:答案正确... 9ms
├ 测试数据 06:答案正确... 41ms
├ 测试数据 07:答案正确... 25ms
├ 测试数据 08:答案正确... 72ms
├ 测试数据 09:答案正确... 41ms
├ 测试数据 10:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:269ms时限放的太宽了。。。应该卡1秒。
题解:
陶陶玩红警 解题报告
江苏苏州中学 宋文杰
1,题目描述
【问题描述】
陶陶最近开始玩红警了,他玩的是自己MOD的一个红警版本。这个版本是这样的:你只能造两样东西,战车工厂和坦克。最初你有一个战车工厂,然后在接下来的每一秒内你可以有两种选择(假设当前有k个战车工厂):1,建造一个战车工厂;2,建造k辆坦克。注意,战车工厂和坦克是不能同时建造的。
陶陶在玩了一个月红警后,认为自己红警水平很厉害了。于是他向curimit发了一份挑战书,他还嚣张地说他会对curimit发动N次攻击。第i次攻击在第time[i]秒末,陶陶会使用num[i]辆坦克来进攻,消灭掉curimit家里同等数量的坦克。如果此时curimit家里没有这么多的坦克的话,那么curimit就死翘翘了。
curimit接到战书后看到看到陶陶如此强大的攻势,被吓得不轻。他想请你帮帮忙,帮他制定一份作战计划(什么时候造战车工厂,什么时候造坦克):curimit希望在抵挡了陶陶的N轮进攻之后,在第final秒末发动最终的总攻击,一举歼灭陶陶的老家。他希望你的作战计划能够在第final秒末造出最多数量的坦克。
【输入文件】
输出文件为tank.in。
第1行为两个整数N,final,含义如题目中所述。
接下来N行,第i行有两个数time[i]和num[i],含义如题目中所述。
【输出文件】
输出文件为tank.out。
输出文件仅包含一行,如果curimit无法抵挡陶陶的进攻,那么输出“No Answer!”;否则输出第final秒末curimit最多能拥有多少辆坦克。
【输入样例】
3 10
5 3
7 13
9 4
【输出样例】
8
【样例解释】
第1秒:造战车工厂。
第2秒:造战车工厂。
第3秒:造战车工厂。
第4秒:造坦克,当前坦克数:4。
第5秒:造坦克,当前坦克数:8。
第5秒:陶陶带了3辆坦克冲了进来,当前坦克数:5。
第6秒:造坦克,当前坦克数:9。
第7秒:造坦克,当前坦克数:13。
第7秒:陶陶带了13辆坦克冲了进来,当前坦克数:0。
第8秒:造坦克,当前坦克数:4。
第9秒:造坦克,当前坦克数:8。
第9秒:陶陶带了4辆坦克冲了进来,当前坦克数:4。
第10秒:造坦克,当前坦克数:8。
在第10秒末,curimit家里最多有8辆坦克。
【数据规模和约定】
10%的数据中N≤5,final≤10;
30%的数据中N≤1000,final≤1000;
100%的数据中N≤100000,final≤109,0≤num[i]≤1018;
100%的数据中1≤time[1] -
02009-11-02 15:27:35@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
02009-11-02 14:57:29@
宋神牛发个题解啥的啊
-
02009-11-01 18:23:05@
好好想象人家宋文杰也是NOI金牌的人啊,最难题能让你轻易得做出来就怪了......
-
02009-10-31 16:28:52@
可以一边让陶陶打一边造坦克吗?
-
02009-10-29 20:41:26@
这个题在全国冬令营之前,只可能有STD这一个AC程序
-
02009-10-29 15:53:25@
不会就………………
OTZ -
02009-10-29 12:41:58@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案错误...
├ Hint: 博 ├ 标准行输出
├ 错误行输出├ 测试数据 04:答案错误...
├ Hint: 是 ├ 标准行输出
├ 错误行输出├ 测试数据 05:答案错误...
├ Hint: 注 ├ 标准行输出
├ 错误行输出├ 测试数据 06:运行时错误...|错误号: 216
├ 测试数据 07:答案错误...
├ Hint: 要 ├ 标准行输出
├ 错误行输出├ 测试数据 08:运行时错误...|错误号: 216
├ 测试数据 09:运行时错误...|错误号: 216
├ 测试数据 10:运行时错误...|错误号: 21620分……
我个人感觉像守望者的逃离 -
02009-10-28 22:11:42@
花了8分钟想出了一个不超时的办法。。。
但是还没想出来。。处理完所有攻击后。怎么算才可以知道最大值啊。。。。。
剩下m周目,已有a座工厂,剩下的n周目建工厂,可以造f(n)架坦克。
f(n)=(a+n)*(m-n)
=a*m+m*n-a*n-n^2
=-n^2+(m-a)*n+a*m
最大值为n取(m-a)/2>0时,f(n)= -((m-a)/2)^2+(m-a)*(m-a)/2+a*m -
02009-10-28 18:22:17@
想了40分钟,没想出来。
也许和x^x的单调性有关
一个子问题可以是问初始有a0工厂b0坦克,求N天后坦克的最大值
***|\**|\**|\**|\**|\**|\**|\**|\**|\***|*
好像是贪心…… -
02009-10-27 12:05:26@
悲剧啊~~~~~~~~~~~~~~~~~~~~~~~~
-
02009-10-26 21:42:32@
Flag
题号 P1679
类型(?) 其它
通过 1人
提交 69次
**通过率 1% **
难度 0虐人的通过率~