暴力出奇迹,没有TLE
2026-09-10 20:23:03
发布于:浙江
9阅读
0回复
0点赞
忘加连续判定了,所以只有GO能AC,洛谷差一点
#include <bits/stdc++.h>
using namespace std;
struct node{
int a;
int b;
};
bool cmp(node x,node y){
if(x.a!=y.a){
return x.a<y.a;
}
else{
return x.b>y.b;
}
}
node c[100010];
int a[100010];
int b[100010];
int m2[100010];
bool m1[100010];
int main(){
int m,n,k;
cin>>m>>n>>k;
int ans=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
c[i].a=a[i];
c[i].b=b[i];
}
sort(c+1,c+n+1,cmp);
for(int i=1;i<=n;i++){
if(m2[c[i].a]>=k&&m1[c[i].a]==0){m1[c[i].a]=1;}
else if(m2[c[i].a]>=k){continue;}
else{ans++;m2[c[i].a]+=c[i].b;}
}
if(m2[c[n].a]>=k){m1[c[n].a]=1;}//因为当最后一门学科刚好需要最后一个书的时候,会漏掉一个
bool f=1;
for(int i=1;i<=m;i++){
if(m1[i]==0){f=0;}
}
if(f==0){ans=-1;}
cout<<ans;
return 0;
}
这里空空如也








有帮助,赞一个