题解

27 条题解

  • 0
    @ 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";否则,输出最多坦克数量。

  • 0
    @ 2017-06-19 16:34:55

    好可怕的题

  • 0
    @ 2012-09-23 12:54:04

    ...我忽然发现

    curimit的题解上 如果curimit无法抵挡陶陶的进攻,那么输出“No Answer!”;

    而题目中 如果curimit无法抵挡陶陶的进攻,那么输出"twbzuobile";

    听谁的????

  • 0
    @ 2012-07-23 07:35:30

    我勒个去 math库都不能用!!!!!

  • 0
    @ 2010-04-08 16:51:06

    果断ORZcurimit。

    要好好学数学,不过我还不会做。

  • 0
    @ 2010-02-27 18:42:46

    ORZ,我还是不会玩

  • 0
    @ 2009-11-20 22:59:12

    inline

  • 0
    @ 2009-11-03 21:03:07

    orz怪盗基德神牛 有60分

  • 0
    @ 2010-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]

  • 0
    @ 2009-11-02 15:27:35

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • 0
    @ 2009-11-02 14:57:29

    宋神牛发个题解啥的啊

  • 0
    @ 2009-11-01 18:23:05

    好好想象人家宋文杰也是NOI金牌的人啊,最难题能让你轻易得做出来就怪了......

  • 0
    @ 2009-10-31 16:28:52

    可以一边让陶陶打一边造坦克吗?

  • 0
    @ 2009-10-29 20:41:26

    这个题在全国冬令营之前,只可能有STD这一个AC程序

  • 0
    @ 2009-10-29 15:53:25

    不会就………………

    OTZ

  • 0
    @ 2009-10-29 12:41:58

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案错误...

     ├ Hint: 博 ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 04:答案错误...

     ├ Hint: 是 ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 05:答案错误...

     ├ Hint: 注 ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 06:运行时错误...|错误号: 216

    ├ 测试数据 07:答案错误...

     ├ Hint: 要 ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 08:运行时错误...|错误号: 216

    ├ 测试数据 09:运行时错误...|错误号: 216

    ├ 测试数据 10:运行时错误...|错误号: 216

    20分……

    我个人感觉像守望者的逃离

  • 0
    @ 2009-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

  • 0
    @ 2009-10-28 18:22:17

    想了40分钟,没想出来。

    也许和x^x的单调性有关

    一个子问题可以是问初始有a0工厂b0坦克,求N天后坦克的最大值

    ***|\**|\**|\**|\**|\**|\**|\**|\**|\***|*

    好像是贪心……

  • 0
    @ 2009-10-27 12:05:26

    悲剧啊~~~~~~~~~~~~~~~~~~~~~~~~

  • 0
    @ 2009-10-26 21:42:32

    Flag   

    题号   P1679

    类型(?)   其它

    通过   1人

    提交   69次

    **通过率   1% **

    难度   0

    虐人的通过率~

信息

ID
1679
难度
9
分类
其他 | 数学其他 | 二分查找其他 | 三分查找 点击显示
标签
递交数
1150
已通过
5
通过率
0%
被复制
6
上传者