6 solutions

  • 0
    @ 2021-10-17 16:20:55

    分析: 我们要赚最多的钱就要把尽可能将所有游戏都完成,尽量舍弃价值小的。我们用一个结构体来储存时间和价值,然后把游戏价值按从大到小进行排序,创建一个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
    94
    Accepted
    51
    Uploaded By