1 solutions
-
-1
#include<bits/stdc++.h> using namespace std; const int N=110; int f[N][N];//f[i][j] 表示在前i个数中选,余数为j的最大值 int main() { int n,k; cin>>n>>k; memset(f,-0x3f,sizeof f); f[0][0]=0; for(int i=1;i<=n;i++) { int w; cin>>w; for(int j=0;j<k;j++) { f[i][j]=f[i-1][j]; //不选第i个数 f[i][j]=max(f[i][j],f[i-1][((j-w)%k+k)%k]+w); // 选择第i个数 } } cout<<f[n][0]; return 0; }
- 1
Information
- ID
- 1439
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 3
- Accepted
- 2
- Uploaded By