P2196 [NOIP1996 提高组] 挖地雷 60求调
  • 板块题目总版
  • 楼主CBQZZYJ
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/23 15:31
  • 上次更新2023/12/23 17:43:10
查看原帖
P2196 [NOIP1996 提高组] 挖地雷 60求调
977730
CBQZZYJ楼主2023/12/23 15:31

测试点3和测试点5WA了

#include <bits/stdc++.h>
using namespace std;
#define int long long
int dp[25], n, p[25], pre[25];
bool G[25][25];
void print(int now) {
    if (pre[now]) {
        print(pre[now]);
    }
    cout << now << " ";
}
signed main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> p[i];
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1, x; j < i; j++) {
            cin >> x;
            G[i][j] = x;
        }
    }
    dp[1] = p[1];
    for (int i = 1; i <= n; i++) {
        dp[i] = p[i];
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (G[i][j] && p[i] + dp[j] >= dp[i]) {
                pre[i] = j, dp[i] = p[i] + dp[j];
            }
        }
    }
    int mx = 0, mxi = 0;
    for (int i = 1; i <= n; i++) {
        if (mx <= dp[i]) {
            mx = dp[i], mxi = i;
        }
    }
    print(mxi);
    cout << endl << mx;
    return 0;
}
2023/12/23 15:31
加载中...