6 solutions
-
0
分析: 我们要赚最多的钱就要把尽可能将所有游戏都完成,尽量舍弃价值小的。我们用一个结构体来储存时间和价值,然后把游戏价值按从大到小进行排序,创建一个flag对游戏完成与否进行标记 代码: #include #include #include using namespace std; struct set{ int t; int w; bool operator<(const set &rhs)const{ return w>rhs.w; } }; int main() { set a[505]; int m,n,t[505]; memset(t,-1,sizeof(t)); cin>>m; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].t; } for(int i=1;i<=n;i++) { cin>>a[i].w; } sort(a+1,a+1+n); for(int i=1;i<=n;i++) { int flag=0; for(int j=a[i].t;j>=1;j--) { if(t[j]-1) { t[j]=i; flag=1; break; } } if(flag0) { m-=a[i].w; } } cout<<m; }
Information
- ID
- 94
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 95
- Accepted
- 52
- Uploaded By