1 solutions
-
0
Guest MOD
-
0
模拟一下游戏过程,直到每个怪物的健康点数变成 或更少。然后我们可以认为 /th的怪物的健康值是 ,而不是 (除非 能被 整除,那么剩余的健康值是 ,而不是 )。
现在,所有怪物的生命值都在 到 之间,所以每次我们伤害一个怪物,都会杀死它。因此,生命值为 的怪物会先死亡,然后是生命值为 的怪物,以此类推。因此,让我们按照剩余生命值从高到低对怪物进行排序(别忘了,如果两个怪物的生命值相同,则应按照指数进行比较)。排序后得到的顺序就是问题的答案。
#include <bits/stdc++.h> using namespace std; const int N=300005; struct node { int x,id;//x 是相当于 ai%k }a[N]; int n,k; bool cmp(node A,node B) { if(A.x!=B.x) return A.x>B.x; else return A.id<B.id; } int main() { cin>>n>>k; for(int i=1;i<=n;i++) { a[i].id=i; cin>>a[i].x; a[i].x=a[i].x%k; if(!a[i].x) a[i].x=k; } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) { cout<<a[i].id<<" "; } }
- 1
Information
- ID
- 1435
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- (None)
- # Submissions
- 150
- Accepted
- 20
- Uploaded By