蒟蒻90分,WAon#4!

P2577 [ZJOI2004] 午餐

说错了是#2
by zhoukangyang @ 2020-01-31 21:25:35


拜拜我去做作业了
by zhoukangyang @ 2020-01-31 21:26:35


@[devinwang](/user/156004)
by zhoukangyang @ 2020-01-31 21:26:45


```cpp #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,t,dp[44444],ans=0x3f3f3f3f; struct node { int wait,eat; } s[222]; bool cmp(node aa,node bb) { return aa.eat>bb.eat; } int main() { scanf("%d",&n); for(int i = 1; i <= n; i++) scanf("%d%d",&s[i].wait,&s[i].eat); sort(s+1,s+n+1,cmp); memset(dp,0x3f,sizeof(dp)); //used[0]=1, dp[0]=0; for(int i = 1; i <= n; i++) { for(int j = t; j >= 0; j--) { dp[j+s[i].wait]=min(dp[j+s[i].wait],max(dp[j],s[i].wait+s[i].eat+j)); //将i加入第一个队列 dp[j]=max(dp[j],s[i].eat+(s[i].wait+t)-j); //将i加入第二个队列 //if(used[j]) dp[j]=max(dp[j],t-j+s[i].eat); //if(j>=s[i].wait) if(used[j-s[i].wait]) { // if(used[j]) dp[j]=min(dp[j],max(j+s[i].eat,dp[j-s[i].wait])); // else used[j]=1,dp[j]=max(max(j+s[i].eat,dp[j-s[i].wait]),t-s[i].eat); // } } t+=s[i].wait; } for(int i = 1; i <= t; i++) ans=min(ans,dp[i]); printf("%d",ans); return 0; } ```
by devinwang @ 2020-02-01 09:47:47


**谢谢sro王老师orz!!!!!!!!!!**
by zhoukangyang @ 2020-02-01 14:11:52


|