P1230 智力大沖浪
阿新 • • 發佈:2020-08-02
解提示思路一定要清醒,想好了再幹。
別直接下筆,有思路嗎,沒思路寫什麼
--scz
被這個題卡了1h 我還是太弱了
太弱了
思路本身好想,從後往前掃,能搞就幹,先玩最大,同時間扔一塊
\(\color{red}{但是我寫了啥}\)
#include<iostream> #include<algorithm> #include<queue> #include<cstdio> using namespace std; struct gam{ int m; int t; }g[1000000]; int m; int now; priority_queue <int>q; int n; int last; int d; int co; int wor; bool cmp(gam x,gam y){ if(x.t==y.t) return x.m>y.m; return x.t<y.t; } int ans; int main(){ scanf("%d%d",&m,&n); for(int i=1;i<=n;++i){ scanf("%d",&g[i].t); } for(int i=1;i<=n;++i){ scanf("%d",&g[i].m); wor+=g[i].m; } sort(g+1,g+n+1,cmp); now=g[n].t; last=now;//上一個任務剩餘時間 for(int i=n;i>=1;--i){ q.push(g[i].m); while(g[i].t==g[i-1].t){ i--; q.push(g[i].m); } while(last>g[i-1].t&&last>0){ if(!q.empty()){ co+=q.top(); q.pop(); last--; } else{ last=g[i-1].t; break; } } }; cout<<m-wor+co; return 0; }