从左到右, 从右到左分别dp一次, 然后就可以回答询问了. ---------------------------------------------------------- #include<bits/stdc++.h> using namespace std; const int V = 1000; const int maxn = 1009; int L[maxn][maxn], R[maxn][maxn]; int w[maxn], v[maxn], c[maxn], N…
有一点乱搞吧......对人对背包的理解有些考验,要想知道去掉某个点的值,可以选择对前缀求一次背包,后缀求一次背包,而且不省掉价钱那一维, 这样每个点就可以由前后组合成了,枚举一下价钱取max即可 直接01的多重背包就可以过 #include<bits/stdc++.h> using namespace std; ; int n,m,q,ans,v[maxn],w[maxn],c[maxn]; int f[maxn][maxn],g[maxn][maxn]; int main(){ scanf…