社区讨论

40分求条

B4071[GESP202412 五级] 武器强化参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mitpawvd
此快照首次捕获于
2025/12/06 10:55
2 个月前
此快照最后确认于
2025/12/07 21:10
2 个月前
查看原帖
CPP
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,x;
long long c[1001];
vector<int> a[1001];
bool cmp(int x,int y)
{
    return c[x]>c[y];
}
int f()
{
    int x=0;
    for(int i=1;i<=n;++i)
    {
        if(a[i].size()>a[x].size())
            x=i;
    }
    for(int i=1;i<=n;++i)
    {
        if((i!=x)&&(a[i].size()==a[x].size()))
            return 0;
    }
    return x;
}
int main()
{
    long long ans=0;
    cin>>n>>m;
    for(int i=1;i<=m;++i)
    {
        int p;
        cin>>p>>c[i];
        a[p].push_back(i);
    }
    for(int i=2;i<=n;++i)
        stable_sort(a[i].begin(),a[i].end(),cmp);
    while((x=f())!=1)
    {
        int s=0;
        long long r=1e18;
        for(int i=2;i<=n;++i)
        {
            if(a[i].empty()) continue;
            long long t=c[a[i][a[i].size()-1]];
            if(i!=x) t*=2;
            if(t<r)
            {
                s=i;
                r=t;
            }
        }
        ans+=c[a[s][a[s].size()-1]];
        a[1].push_back(a[s][a[s].size()-1]);
        a[s].pop_back();
    }
    cout<<ans;
    return 0;
}
为什么26号过不去?

回复

0 条回复,欢迎继续交流。

正在加载回复...