求助

P1048 [NOIP2005 普及组] 采药

f开小了
by MCH_Satrimiten @ 2021-07-21 09:15:34


`f[101][101]`,你找死? @[wrtleo](/user/221435)
by MarSer020 @ 2021-07-21 09:15:53


@[wrtleo](/user/221435) $1≤T≤1000$
by MCH_Satrimiten @ 2021-07-21 09:16:16


不用滚动数组优化吗
by MCH_Satrimiten @ 2021-07-21 09:17:00


~~(你可以再开小一点)~~ $ 1 \leq T \leq 1000 $
by MarSer020 @ 2021-07-21 09:17:35


大家可以那我这个改好的代码尝试一下 结果根本不对 @[kkksc020](/user/475112) ```cpp #include<iostream> using namespace std; int f[1001][1001],p[1001],ti[1001]; int m,t; int main(){ cin>>t>>m; for(int i=1;i<=m;i++){ cin>>ti[i]>>p[i]; } for(int i=1;i<=m;i++){ for(int j=t;j>=0;j--){ if(j<ti[i]) f[i][j]=f[i-1][j]; f[i][j]=max(f[i-1][j],f[i-1][j-ti[i]]+p[i]); } } cout<<f[m][t]; return 0; } ```
by wrtleo @ 2021-07-21 09:21:33


~~为什么要二维的f数组~~ ``` c #include<iostream> using namespace std; int f[1005],p[105],ti[105]; int m,t; int main(){ cin>>t>>m; for(int i=1;i<=m;i++){ cin>>ti[i]>>p[i]; } for(int i=1;i<=m;i++){ for(int j=t;j>=0;j--){ if(j>=ti[i]){ f[j]=max(f[j],f[j-ti[i]]+p[i]); } } } cout<<f[t]; return 0; } ```
by Apple_Pie @ 2021-07-21 09:30:53


```cpp #include<iostream> using namespace std; int f[1001][1001],p[1001],ti[1001]; int m,t; int main(){ cin>>t>>m; for(int i=1;i<=m;i++){ cin>>ti[i]>>p[i]; } for(int i=1;i<=m;i++){ for(int j=t;j>=0;j--){ if(j<ti[i]) f[i][j]=f[i-1][j]; else f[i][j]=max(f[i-1][j],f[i-1][j-ti[i]]+p[i]); } } cout<<f[m][t]; return 0; } ``` else 都没有
by MCH_Satrimiten @ 2021-07-21 09:31:18


@[wrtleo](/user/221435)
by MCH_Satrimiten @ 2021-07-21 09:31:36


@[wrtleo](/user/221435) 我太弱了,二维调不出来,只会一维优化……
by MarSer020 @ 2021-07-21 09:32:19


| 下一页