题目名称 | 3417. [统一省选 2020]冰火战士 |
---|---|
输入输出 | haoi2020_icefire.in/out |
难度等级 | ★★★☆ |
时间限制 | 3000 ms (3 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 | syzhaoss 于2020-06-23加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:6, 通过率:16.67% | ||||
徐诗畅 | 100 | 8.894 s | 50.24 MiB | C++ |
遥时_彼方 | 90 | 7.938 s | 0.00 MiB | C++ |
flyfree | 50 | 17.859 s | 49.36 MiB | C++ |
遥时_彼方 | 0 | 6.079 s | 0.00 MiB | C++ |
遥时_彼方 | 0 | 6.415 s | 0.00 MiB | C++ |
32987018 | 0 | 9.165 s | 0.00 MiB | C++ |
关于 冰火战士 的近10条评论(全部评论) | ||||
---|---|---|---|---|
树状数组+二分(倍增)90pts
树状数组+二分(倍增)+离散化 100pts 离散化什么的留给后人>>
遥时_彼方
2021-12-01 13:25
1楼
|
haoi2020_icefire.in
输出文件:haoi2020_icefire.out
简单对比一场比赛即将开始。
每位战士有两个属性:温度和能量,有两派战士:冰系战士的技能会对周围造成降温冰冻伤害,因而要求场地温度不低于他的自身温度才能参赛;火系战士的技能会对周围造成升温灼烧伤害,因而要求场地温度不高于他的自身温度才能参赛。
当场地温度确定时,双方能够参赛的战士分别排成一队。冰系战士按自身温度从低到高排序,火系战士按自身温度从高到低排序,温度相同时能量大的战士排在前面。首先,双方的第一位战士之间展开战斗,两位战士消耗相同的能量,能量少的战士将耗尽能量退出比赛,而能量有剩余的战士将继续和对方的下一位战士战斗(能量都耗尽则双方下一位战士之间展开战斗)。如此循环,直至某方战士队列为空,比赛结束。
你需要寻找最佳场地温度:使冰火双方消耗总能量最高的温度的最高值。
现在,比赛还处于报名阶段,目前还没有任何战士报名,接下来你将不断地收到报名信息和撤回信息。其中,报名信息包含报名战士的派系和两个属性,撤回信息包含要撤回的报名信息的序号。每当报名情况发生变化(即收到一条信息)时,你需要立即报出当前局面下的最佳场地温度,以及该场地温度下双方消耗的总能量之和是多少。若当前局面下无论何种温度都无法开展比赛(某一方没有战士能参赛),则只要输出 Peace。
第一行一个数 Q,表示信息的数量。
接下来 Q 行,每行为 1 t x y(t ∈ {0,1},x 和 y 都是正整数)或 2 k(k 是正整数):
1 t x y 表示一条报名信息,t = 0 时报名战士是冰系,t = 1 时报名战士时火系,x表示战士的自身温度,y 表示战士的能量。
2 k 表示一条撤回信息,撤回的是第 k 条信息。被撤回的信息一定是报名信息,已被撤回的信息不会再次被撤回。
共 Q 行,每行有两个用空格隔开的正整数,分别表示当前局面下的最佳温度和该温度下冰火双方消耗的总能量之和。
8
1 1 103 150
1 0 100 100
1 1 102 150
1 0 103 300
2 1
1 1 101 100
1 1 104 350
1 0 100 400
Peace
103 200
103 200
103 200
102 200
102 200
104 700
102 1000
为说明方便,约定:若第 k 条信息是报名信息,则该条报名信息对应战士 k。样例中含有战士 1、2、3、4、6、7、8,由于第 5 条是撤回信息,所以没有战士 5。
下面逐个解释每个输出:
1. 只有火系战士:战士 1,无法比赛,输出 Peace。
2. 温度为 100 ∼ 103 都能消耗最多的能量 200:战士 1 对阵战士 2 消耗能量 200,最佳温度为 103。
3. 温度为 100 ∼ 103 都能消耗最多的能量 200:战士 1 对阵战士 2 消耗能量 200,最佳温度为 103。
4. 温度 103 能消耗最多的能量 300:首先,战士 1 对阵战士 2 消耗能量 200;然后,战士 1 对阵战士 4 消耗能量 100,最佳温度为103。
5. 从现在起战士 1 不再存在。温度 100 ∼ 102 能消耗最多的能量 200:战士 2 对阵战士 3 消耗能量 200,最佳温度为 102。
6. 温度 100 ∼ 102 能消耗最多的能量 200:战士 2 对阵战士 3 消耗能量 200,最佳温度为 102。
7. 温度 100 ∼ 104 能消耗最多的能量 700:首先,战士 2 对阵战士 7 消耗能量 200;然后,战士 4 对阵战士 7 消耗能量 500,最佳温度为 104。
8. 温度 100 ∼ 102 能消耗最多的能量 1000:首先,战士 7 对阵战士 8 消耗能量 700;然后,战士 1 对阵战士 8 消耗能量 100;接着,战士 1 对阵战士 2 消耗能量 200,最佳温度为 102。
见选手目录下的 icefire/icefire2.in 与 icefire/icefire2.ans。
10% 的数据:Q ≤ 100,x ≤ $10^3$ 。
另有 20% 的数据:Q ≤ $10^4$ ,x ≤ 5000,不存在撤回信息,且输入的 x 按顺序不降。
60% 的数据(包含上述 20%,下同):Q ≤ 2 × $10^5$ ,x ≤ 2 × $10^5$ 。
90% 的数据:Q ≤ 2 × $10^6$ ,x ≤ 2 × $10^6$ 。
100% 的数据:1 ≤ Q ≤ 2 × $10^6$ ,1 ≤ x ≤ 2 × $10^9$ ,所有 y 之和不超过 2 × $10^9$ ,保证不存在 t,x,y 完全相同的两个战士。
HAOI 2020 Day1 Task1