相信大家都能看出这是多重背包 但问题是怎么去掉某个玩偶 去掉玩偶就可以单独求前面的和后面的,只需要一正一反两个背包就好了,剩下就是正常的多重背包。 AC代码 #include <bits/stdc++.h> using namespace std; int fl[100010][1010],fr[100010][1010];//正反背包 int v[100010],w[100010],cnt,l[1010],r[1010]; int main(){ int n,a,b,c,q,d,e,maxx; cin >> n; for(int i = 1;i <= n;i++...