社区讨论

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 条回复,欢迎继续交流。

正在加载回复...