社区讨论
CSP-J 2004 T2 花生采摘 30分求调 玄关
学术版参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9wayu
- 此快照首次捕获于
- 2025/11/03 23:06 4 个月前
- 此快照最后确认于
- 2025/11/03 23:06 4 个月前
代码:
CPP#include <bits/stdc++.h>
#define int long long
#define KD return
using namespace std;
int n, m, k, u = 1, last_i, last_j, ans;
struct Kevin {
int v, v_i, v_j;
};
Kevin d[735];
bool cmp (Kevin x, Kevin y) {
KD x.v > y.v;
}
signed main () {
cin >> n >> m >> k;
for (int i = 1;i <= n;i ++) {
for (int j = 1;j <= m;j ++) {
int a;
cin >> a;
d[u].v = a, d[u].v_i = i, d[u].v_j = j;
u ++;
}
}
sort (d + 1, d + 1 + (n * m), cmp);
last_i = d[1].v_i, last_j = d[1].v_j;
if (min (last_i, last_j) > k) {
cout << 0;
KD 0;
}
if (min (last_i, last_j) == k) {
cout << d[1].v;
KD 0;
}
ans += d[1].v;
k -= min (last_i, last_j);
for (int i = 2;i <= n * m;i ++) {
int sum = abs(last_i - d[i].v_i) + abs (last_j - d[i].v_j) + 1;
int sum1 = min (d[i].v_i, d[i].v_j);
if (k - sum - sum1 < 0) {
cout << ans;
KD 0;
}
if (k - sum - sum1> 0) ans += d[i].v, last_i = d[i].v_i, last_j = d[i].v_j, k -= sum;
if (k - sum - sum1 == 0) {
cout << ans + d[i].v;
KD 0;
}
}
cout << ans;
KD 0;
}
各位大佬帮帮我这个蒟蒻吧 实在想不出来了 一个暑假没做题 如果有大佬会的话请私信我
回复
共 6 条回复,欢迎继续交流。
正在加载回复...