早年自出洛谷题目—— 国战

国战

时间限制:1000 ms

题目描述

在由 *创造的 F 宇宙中,有着 n 个国家,每个国家都有一个国王。
i 个国家的国王的性格记为 Ki

国王的性格为 0 代表激进, 1 代表中庸, 2 代表和平。

并且第 i 个国家有 Pi 个士兵和 Si 个劳动人民。每年,每个国家的国王都会按照自己的性格做出相应的行动,这些行动和自己国家的实力在所有国家中的排名有关。简单地说,国王会根据自己王国的排名和自己的性格做出行动。排名根据国家的实力排序。
i 个国家实力的计算公式: Pi*2+Si
每年,第 i 个国家将会有 (Pi+Si*2)*p 个新生儿,其中 p 为输入的数据,表示出生率。

国家对新生儿做出的行动有三种( F 宇宙中,新生儿一年就能长大):
征兵策略:让所有新生儿全部成为士兵
劳动策略:让所有新生儿全部成为劳动人民
折中策略:让一半的新生儿成为士兵,另一半成为劳动人民。若新生儿的数量为奇数,那么士兵比劳动人民多 1

激进的国王排名靠前时,采用折中策略,进攻实力最小的国家。
激进的国王排名靠后时,采用征兵策略。若自己的排名不是最后一名,那么进攻实力最小的国家。
中庸的国王排名靠前时,采用劳动策略,进攻实力最小的国家。
中庸的国王排名靠后时,采用征兵策略。
和平的国王排名靠前时,采用劳动策略。
和平的国王排名靠后时,采用折中策略。

注意:当 n 为偶数时,排名靠前表示实力排名在前一半,排名靠后表示实力排名在后一半。当 n 为奇数时,排名靠前包括排名中间的国家。

每年的每个国家按排名顺序(即按实力从大到小)行动,实力相等时按输入的顺序行动。

进攻:当第 i 个国家进攻第 j 个国家时,比较两个国家士兵的数量,士兵多的国家胜利。士兵一样时,劳动人民多的胜利。劳动人民一样时,输入时靠前的胜利。若第 i 个国家获胜,那么该国会获得 Sj 个劳动人民(这些国家非常有素质,看到其他国的士兵比自己国多的时候就直接自杀了,只留下劳动人民)。同时第 j 个国家灭亡。第 j 个国家获胜时同理。(劳动人民不参加战争,不会损失,直接根据数量判断)

在此处键入或粘贴代码

现在问你哪个国家能活到最后,输出最后国家的编号。编号即它是第几个输入的。

tip:当某一轮每个国家的行动都结束后,会锁定一个新的排名。接下来的一轮行动,每个国家都按此排名的顺序行动,且在某个国家行动后,排名暂时不更改。并且,在第一个国家行动时,这个国家的新生儿已经出生了,而其他国家的新生儿则没有出生。

输入格式

第一行一个整数 n 和一个双精度浮点数 p
接下来 n 行,每行三个整数,第 i+1 行的三个整数是 Ki ,Pi,Si

输出格式

一行一个整数,表示活到最后国家的编号

样例组

样例1

输入

3 0.5
0 1000 500
1 800 800
2 500 1000

输出

2

样例2

输入

4 0.5
0 500 500
1 400 600
0 600 300
2 1000 1000

输出

3

提示说明

1<=n<=100
0.1<=p<=1
0<=Ki<=2
0<=Pi,Si<=5000
编号从 1 开始计数
样例 1 解析:
激进的1号国首先把和平的3号国灭了,然后1号国因为折损兵力而比2号国弱,所以2号国就把1号国灭了。

注:对于 30% 的测试数据, n>90

1 个赞

主打一个题目长但简单

求加

2 个赞

image
@杨北辰

3 个赞

@信友队汪老师 有没有别的方法上报测试点

手敲太烦

能不能传送文件?

不行

放到网盘上! :hugs:

阿米诺斯,我没有

百度网盘能吗

我再想想解决办法。 :thinking:

可以的

巧了,不会用

突然悟了

提取码:676n

1 个赞


*咳嗽

2 个赞

image

1 个赞

*战略性咳嗽

2 个赞

有什么问题吗

1 个赞

专门为你出的啊

3 个赞