2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N=1e3+5; int a[N][N], b[N], f[N]; int main() { int n, m, p; scanf("%d%d%d", &n, &m, &p); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d", &a[i][j]); for(int i=1; i<=n; i++) scanf("%d", &b[i]); memset(f, -63, sizeof(f)); f[0]=0; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) { int sum=f[i-1]-b[j]; for(int k=0; k<p && i+k<=m; k++) { int t=(j+k<=n)? j+k: (j+k-n); sum+=a[t][i+k]; f[i+k]=max(f[i+k], sum); } } printf("%d\n", f[m]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=1e3+5; int a[N][N], b[N], f[N]; int main() { int n, m, p; scanf("%d%d%d", &n, &m, &p); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d", &a[i][j]); for(int i=1; i<=n; i++) scanf("%d", &b[i]); memset(f, -63, sizeof(f)); f[0]=0; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) { int sum=f[i-1]-b[j]; for(int k=0; k<p && i+k<=m; k++) { int t=(j+k<=n)? j+k: (j+k-n); sum+=a[t][i+k]; f[i+k]=max(f[i+k], sum); } } printf("%d\n", f[m]); return 0; }
- 1
信息
- ID
- 658
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 13
- 已通过
- 9
- 上传者