第一题20分的看这
就
#include<bits/stdc++.h>//I AK ZHIS using namespace std; int n,k,cnt;long long sum; struct sb{ int t,u; }a[200001]; bool cmp(sb x,sb y){ return x.u>y.u; } int main(){ cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i].t; for(int i=1;i<=n;i++)cin>>a[i].u; sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++){ if(cnt==k)break; if(cnt>=a[i].t)continue; cnt++;sum+=a[i].u; }cout<<sum; return 0;//IOI AK ME TOO }
思路:把最后一个 for 循环改成
for(int i=1;i<=k;i++)sum+=a[i].u;
why?
题目说了时刻不重复且 k<=n 那么一定是充足的