TM有毒吧。。。全WA

P1048 [NOIP2005 普及组] 采药

if(w[i]<=y)
by 张曜玺 @ 2017-08-28 20:09:57


应该是小于j啊
by 张曜玺 @ 2017-08-28 20:10:27


太谢谢了、
by FireKid @ 2017-08-28 20:11:01


我还是喜欢一维数组背包
by yy233 @ 2017-09-09 14:05:30


循环要倒序 ```cpp #include<bits/stdc++.h> using namespace std; int c[30010],w[30010],f[30010]; int main() { int t,n,i,j; cin>>t>>n; for(i=1;i<=n;i++) cin>>w[i]>>c[i]; for(i=1;i<=n;i++) for(j=t;j>=w[i];j--)//此处循环倒序 f[j]=max(f[j],f[j-w[i]]+c[i]); cout<<f[t]; } ```
by 皮某 @ 2017-09-30 23:18:39


第一:最好自己写一个max函数,不要投巧 第二:f数组开到1000+(只能说数据强...)
by 圣弗朗西斯科 @ 2017-10-04 13:34:12


```cpp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int n,m,c[1003],v[1003],f[1003],sum; int main() { cin>>m>>n; for(int i=1;i<=n;i++) cin>>c[i]>>v[i]; for(int i=1;i<=n;i++) for(int j=m;j>=c[i];j--) f[j]=max(f[j],f[j-c[i]]+v[i]); for(int i=1;i<=m;i++) sum=max(sum,f[i]); cout<<sum; return 0; } ```
by 鲸与梦之歌 @ 2017-10-21 10:56:28


上一页 |