摘要: 因为每组至多选择一个物品,可以将每组看做一个整体,这样就类似于01背包问题。 用$f(i,j)$表示前$i$组物品放入一个容量不超过$j$的背包可以获得的最大价值。 对于第$i$组物品: 不放入第$i$组物品,\(f(i,j)\)=\(f(i-1,j)\) 放入第$i$组的第$k$个物品,\(f(i 阅读全文
posted @ 2020-10-02 22:32 Dazzling! 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 暴力拆分 暴力拆分就是把第$i$种物品看做$s_i$个独立的物品,每个物品只有一个,转化为01背包问题。 const int N=110; int f[N]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { int v,w,s; ci 阅读全文
posted @ 2020-10-02 22:25 Dazzling! 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 状态表示:$f(i,j,k,l)\(表示第一个人走到\)(i,j)\(,第二个人走到\)(k,l)$的价值最大值 特判一下坐标相等情况就好了。 const int N=15; int f[N][N][N][N]; int g[N][N]; int n; int main() { cin>>n; in 阅读全文
posted @ 2020-10-02 10:45 Dazzling! 阅读(142) 评论(0) 推荐(0) 编辑