社区讨论

玄关求调

P14259兄妹(siblings)参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhj0y8h6
此快照首次捕获于
2025/11/03 18:56
4 个月前
此快照最后确认于
2025/11/03 18:56
4 个月前
查看原帖
CPP
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int MAX_R = 500;
const int MAX_SUM = 250000;

int x[MAX_R + 1];
bool f[MAX_SUM + 1];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while (T --) {
        memset(x, 0, sizeof(x));
        memset(f, 0, sizeof(f));
        int n;
        cin >> n;
        int max_r = 0;
        for (int i = 0; i < n; i ++) {
            int r, c;
            cin >> r >> c;
            x[r] = max(x[r], c);
            max_r = max(max_r, r);
        }
        
        int r = max_r;
        while (r > 0 && x[r] == 0) r --;
        int total_c = 0;
        for (int i = 1; i <= r; i++) {
            total_c += x[i];
        }
        
        f[0] = true;
        int ans = 300000;
        int s = 0;
        for (int i = 1; i <= r; i ++) {
            if (x[i] == 0) continue;
            for (int j = s; j >= 0; j --) {
                if (f[j]) {
                    f[j + x[i]] = true;
                }
            }
            s += x[i];
            for (int j = 0; j <= s; j ++) {
                if (f[j]) {
                    ans = min(ans, max(i + j, r + total_c - j));
                }
            }
        }
        cout << ans * 2 << '\n';
    }
    
    return 0;
}
只有第一个测试点的十分,剩下的RE和WA

回复

3 条回复,欢迎继续交流。

正在加载回复...