背包
by songyihang @ 2019-05-20 13:54:24
```
int n,T,m[101],s[101],c[101][101],g[101][101],ans,f[201];
int main()
{
cin>>n>>T;
for(int i=1;i<=n;i++)
{
cin>>m[i]>>s[i];
for(int j=1;j<=m[i];j++)
cin>>c[i][j]>>g[i][j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m[i];j++)
{
if(s[i]==0)
{
for(int k=0;k<=)
}
}
}
cout<<;
return 0;
}
```
by Donald_J_Trump @ 2019-05-20 13:55:39
状态转移方程f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
方程之中,现在需要放置的是第i件物品,这件物品的体积是c[i],价值是w[i],因此f[i-1][v]代表的就是不将这件物品放入背包,而f[i-1][v-c[i]]+w[i]则是代表将第i件放入背包之后的总价值,比较两者的价值,得出最大的价值存入现在的背包之中。
by songyihang @ 2019-05-20 13:55:39
中间不知道怎么办
by Donald_J_Trump @ 2019-05-20 13:56:00
循环每一个集,比对时间还够不够,假如够就选出快乐最高的做
by songyihang @ 2019-05-20 14:08:22