为什么40分鸭,明明用归并了还是40分呀
  • 板块灌水区
  • 楼主言和YanHe
  • 当前回复1
  • 已保存回复1
  • 发布时间2018/12/14 19:20
  • 上次更新2025/7/28 15:05:04
查看原帖
为什么40分鸭,明明用归并了还是40分呀
125575
言和YanHe楼主2018/12/14 19:20

RT

题目传送门:

来自蒟蒻的疑惑

p1309

代码如下

#include<bits/stdc++.h>
using namespace std;
int n,r,q; 
struct van
{
    int point,power,bian,aj;
}a[201000],win[201000],los[201000];
bool cmp(van x,van y)
{
    return x.point<y.point;
}
bool pmp(van x,van y)
{
    return x.point>y.point;
}
int main()
{
    cin>>n>>r>>q;
    for(int i=1;i<=2*n;i++)
    {
        std::cin>>a[i].point;
    }
    for(int i=1;i<=2*n;i++)
    {
        std::cin>>a[i].power;
    }
    for(int i=1;i<=2*n;i++)
    {
        a[i].bian=i;
        a[i].aj=i;
    }
    sort(a+1,a+1+2*n,cmp);
    for(int i=1;i<=r;i++)
    {
        for(int i=1;i<=n;i++)
        {
            if(a[2*i-1].power>a[2*i].power)
            {
                win[i]=a[2*i-1];
                los[i]=a[2*i];
            }
            else
            {
                win[i]=a[2*i];
                los[i]=a[2*i-1];
            }
        }
        for(int i=1;i<=n;i++)
        {
            win[i].point++;
            a[win[i].aj].point++;
        }
        merge(win+1,win+n+1,los+1,los+n+1,a+1,cmp);
    }
    sort(a+1,a+1+2*n,pmp);
    std::cout<<a[q].bian;
}
2018/12/14 19:20
加载中...