1 条题解
-
0
#include<bits/stdc++.h> #define int long long const int inf = 0x3f3f3f3f; const int N = 41; using namespace std; int dp[N][N][N][N]; int a[351]; int w[351]; signed main(){ int n , m; cin >> n >> m; for(int i = 0 ; i < n ; i ++){ cin >> w[i]; } int k1 = 0; int k2 = 0; int k3 = 0; int k4 = 0; for(int i = 1 ; i <= m ; i ++){ cin >> a[i]; if(a[i] == 1){ k1 ++; }else if(a[i] == 2){ k2 ++; }else if(a[i] == 3){ k3 ++; }else{ k4 ++; } } // dp[0][0][0][0] = w[0]; for(int i = 0 ; i <= k1 ; i ++){ for(int j = 0 ; j <= k2 ; j ++){ for(int p = 0 ; p <= k3 ; p ++){ for(int q = 0 ; q <= k4 ; q ++){ int t = w[1 * i + 2 * j + 3 * p + 4 * q]; int v = 0; if(i){ v = max(dp[i - 1][j][p][q] , v); } if(j){ v = max(dp[i][j - 1][p][q] , v); } if(p){ v = max(dp[i][j][p - 1][q] , v); } if(q){ v = max(dp[i][j][p][q - 1] , v); } dp[i][j][p][q] = v + t; } } } } cout << dp[k1][k2][k3][k4]; return 0; }
- 1
信息
- ID
- 525
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 85
- 已通过
- 20
- 上传者