题解
2025-06-30 17:49:48
发布于:浙江
6阅读
0回复
0点赞
思路:
较简单的绿题,简单的模拟即可。
- 每一次比赛时,确定对阵的双方,比较两人实力值的大小,更牛的人分数加一。
- 根据题意,给所有人的分数进行降序排序,如果分数相同,按照编号升序排序,此处可能需要使用自定义比较器。
- 按照要求输出即可。
注意:排序使用 sort
会爆掉,使用归并排序 stable_sort
最佳。
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,r,q;
struct test{
int s,w,id;
}a[200010];
bool cmp(test a,test b){
if(a.s!=b.s)return a.s>b.s;
return a.id<b.id;
}
int main(){
cin>>n>>r>>q;
for(int i=1;i<=n*2;i++){
cin>>a[i].s;
a[i].id=i;
}
for(int i=1;i<=n*2;i++)cin>>a[i].w;
stable_sort(a+1,a+1+n*2,cmp);
for(int i=1;i<=r;i++){
for(int j=1;j<=n*2;j+=2){
if(a[j].w>a[j+1].w)a[j].s++;
else a[j+1].s++;
}
stable_sort(a+1,a+1+n*2,cmp);
}
cout<<a[q].id;
return 0;
}
这里空空如也
有帮助,赞一个