求大佬指点!为啥这样ac不了?

链接:https://ac.nowcoder.com/acm/contest/72369/D

#include<bits/stdc++.h>

using namespace std;

#define N 3005

long long a[N],f[N][N];//dp数组,dp[i][j]表示前i个数中除以k的余数为j的当前最大和

int n,k;

int main(){

cin >> n >> k;

for(int i = 1; i <= n; i ++) {cin >> a[i];}

memset(f,-0x3f,sizeof f);

long long maxv = -0x3f3f3f3f;

f[0][0] = 0;

for(int i = 1; i <= n; i ++){

for(int j = 0; j < k; j ++){

f[i][j] = max(f[i - 1][(j - a[i] + k) % k] + a[i],f[i - 1][j]);

//能ac的状态方程: f[i][(j + a[i]) % k] = max(f[i - 1][j] + a[i],f[i - 1][(j + a[i]) % k]);

}

}

for(int i = 1; i <= n; i ++) maxv = max(maxv,f[i][0]);

if(maxv > 0)cout << maxv << endl;

else cout << -1 << endl;

return 0;

}

#悬赏#
全部评论

相关推荐

2025-12-27 22:21
门头沟学院 Java
点赞 评论 收藏
分享
2025-11-26 14:42
郑州轻工业大学 Java
在写周报的打工人很独...:这个笔试昨天晚上做了一下,真难啊,前后端,ai全有
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务