不会 DP。
by ACPC @ 2023-10-06 09:17:36
@[A_Passing_Creeper](/user/540363) 没是现学嘛
by rex_qwq @ 2023-10-06 09:18:29
@[A_Passing_Creeper](/user/540363) 破案了,答案算错了
应该这样
```cpp
int minn=inf;
for(int i=0;i<=maxn;i++)minn=min(minn,max(dp[n%2][i],i));
```
by rex_qwq @ 2023-10-06 09:20:52
@[rex_qwq](/user/91737) 好的,我不用重学了(喜
by ACPC @ 2023-10-06 09:21:36
@[A_Passing_Creeper](/user/540363) 好了现在又要重学了
```cpp
#include<bits/stdc++.h>
//#pragma GCC optimize(3,"Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,fma,popcnt,tune=native")
using namespace std;
#define int long long
#define kg putchar(' ')
#define endl puts("")
inline int read(){
int vis=1,ans=0;
char x=getchar();
while(x<'0'||x>'9'){
if(x=='-')vis=-1;
x=getchar();
}
while(x>='0'&&x<='9'){
ans=ans*10+x-'0';
x=getchar();
}
return vis*ans;
}
inline void print(int x){
if(x<0)putchar('-'),x=-x;
if(x>9)print(x/10);
putchar(x%10+'0');
}
int n;
const int N=6e3+90,inf=1e18;
int dp[2][N*5];
int t[N][4];
int maxn;
signed main(){
n=read();
sizeof(dp,0x3f,sizeof(dp));
dp[0][0]=0;
for(int i=1;i<=n;i++){
t[i][1]=read();
t[i][2]=read();
t[i][3]=read();
}
for(int i=1,vis=1;i<=n;i++,vis^=1){
maxn+=max(t[i][1],t[i][3]);
for(int j=maxn;j>=0;j--){
dp[vis][j]=(!t[i][2]?inf:dp[vis^1][j]+t[i][2]);
if(j>=t[i][1])dp[vis][j]=min(dp[vis][j],(!t[i][1]?inf:dp[vis^1][j-t[i][1]]));
if(j>=t[i][3])dp[vis][j]=min(dp[vis][j],(!t[i][3]?inf:dp[vis^1][j-t[i][3]]+t[i][3]));
}
}
int minn=inf;
for(int i=0;i<=maxn;i++)minn=min(minn,max(dp[n%2][i],i));
print(minn);
return 0;
}
```
TLE on #7,WA on #9
by rex_qwq @ 2023-10-06 09:24:55
@[A_Passing_Creeper](/user/540363) 卡常之后不 T了
by rex_qwq @ 2023-10-06 09:27:22
@[A_Passing_Creeper](/user/540363) A了(喜
by rex_qwq @ 2023-10-06 09:28:23
@[rex_qwq](/user/91737) %%%
by ACPC @ 2023-10-06 09:28:53