说错了是#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