求助!wa7个
查看原帖
求助!wa7个
816821
Liyunze123楼主2024/3/18 20:15
#include<bits/stdc++.h>
using namespace std;
int n,k;
struct c{int a,b,ne,pr;}s[200010];
long long ans,sum;
int main(){
    scanf("%d%d",&n,&k),s[0].ne=1,s[n+1].pr=n;
    for(int w=1;w<=n;w++)scanf("%d%d",&s[w].a,&s[w].b),s[w].pr=w-1,s[w].ne=w+1,sum+=s[w].b;
    for(int w=1;w<=k;w++){
        long long m=9e18,t=0;
        for(int x=s[0].ne;x<=n;x=s[x].ne)
            if(s[x].a==s[s[x].ne].a){
                if(s[x].b<m)m=s[x].b,t=x;
                if(s[s[x].ne].b<m)m=s[s[x].ne].b,t=s[x].ne;
            }
        if(!t)for(int x=s[0].ne;x<=n;x=s[x].ne)if(s[x].b<m&&w+(s[s[x].pr].a==s[s[x].ne].a)<=k)m=s[x].b,t=x;
        ans+=m,s[s[t].pr].ne=s[t].ne,s[s[t].ne].pr=s[t].pr,s[t].a=1e7+w;
    }
    for(int w=s[0].ne;w<=n;w=s[w].ne)if(s[w].a==s[s[w].ne].a){printf("-1");return 0;}
    printf("%lld",sum-ans);
    return 0;
}
2024/3/18 20:15
加载中...