关于一个dp蒟蒻靠完全背包板子打了10分的那些事

P5322 [BJOI2019] 排兵布阵

```cpp ``` 这是一道01背包?
by youth191954 @ 2024-04-16 13:37:26


你这道题是凑答案凑出来的10分吧? 枚举人时小c也要算。 建议这道从2维降到1维 这道题还需要排序,代码如下 ```cpp ``` ```cpp #include<bits/stdc++.h> using namespace std; int s,n,m,a[105][105],dp[20001]; int main(){ cin>>s>>n>>m; for(int j=1;j<=s;++j) for(int i=1;i<=n;++i){ cin>>a[i][j]; } for(int i=1;i<=n;++i)sort(a[i]+1,a[i]+s+1); for(int i=1;i<=n;++i){ for(int j=m;j>=0;--j){ for(int k=0;k<=s;++k){ int v=2*a[i][k]+1; int w=i*k; if(v>j)break; else dp[j]=max(dp[j],dp[j-v]+w); } } } cout<<dp[m]; } ```
by youth191954 @ 2024-04-16 13:50:52


|