P1230 智力大冲浪 题解:准着一个贪心思想,在尽可能短的时间内,做价值尽可能多的题。 因此,我们可以按照价值从大到小排个序,然后对于每一道题看在时间限制内可以做哪几道题
P1230 智力大冲浪
题解:准着一个贪心思想,在尽可能短的时间内,做价值尽可能多的题。
因此,我们可以按照价值从大到小排个序,然后对于每一道题看在时间限制内可以做哪几道题。时间复杂度。
#include<bits/stdc++.h>
using namespace std;
struct pig{
int v,t;
bool operator < (const pig & u)const{
if(v == u.v)
return t < u.t;
return v > u.v;
}
}a[520];
bool vis[520];
int main()
{
//#ifndef ONLINE_JUDGE
// freopen("riddle.in","r",stdin);
// freopen("riddle.out","w",stdout);
//#endif
int n,m,sum = 0;
cin>>m>>n;
for(int i = 0; i < n; ++i)
cin>>a[i].t;
for(int i = 0; i < n; ++i)
cin>>a[i].v;
sort(a,a+n);
for(int i = 0; i < n; ++i){
for(int j = a[i].t-1; j >= 0; --j){
if(vis[j] == 0)
{
vis[j] = 1;
a[i].t = -1;
break;
}
}
}
for(int i = 0; i < n; ++i)
if(~a[i].t){
// printf("%d\n",i);
m -= a[i].v;
}
cout<<m<<endl;
return 0;
}