小红书8.19第三题为啥只A了82%,求各位大佬帮忙看看

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void Q3() {
int n, m, k;
cin >> n >> m >> k;
vector<int> A(n);
vector<int> H(n);
for (int i = 0; i < n; ++i) {
cin >> A[i];
}
for (int i = 0; i < n; ++i) {
cin >> H[i];
}
vector<vector<pair<int, int>>> g(n);
for (int i = 0; i < m; ++i) {
int u, v, w;
cin >> u >> v >> w;
--u;
--v;
g[u].emplace_back(v, w);
g[v].emplace_back(u, w);
}
uint64_t ans = 0;
int t = k;
uint64_t v = 0;
for (int i = 0; i < n; ++i) {
t -= H[i];
v += A[i];
        if (t >= 0) {
            for (auto& e1 : g[i]) {
                if (e1.first == i) continue;
    t -= H[e1.first];
    t -= e1.second;
    v += A[e1.first];
    if (t >= 0) {
    for (auto& e2 : g[e1.first]) {
                        if (e2.first == i || e2.first == e1.first) continue;
    t -= H[e2.first];
    t -= e2.second;
    v += A[e2.first];
    if (t >= 0) {
    ans = max(ans, v);
    }
    t += H[e2.first];
    t += e2.second;
    v -= A[e2.first];
    }
    }
    t += H[e1.first];
    t += e1.second;
    v -= A[e1.first];
    }
        }
t += H[i];
v -= A[i];
}
cout << ans;
}

int main() {
Q3();
return 0;
}
#小红书#
全部评论
在后面每一重循环都进行了ans = max(ans, v)就过了, 可能是存在没有三个相邻的的情况
2
送花
回复
分享
发布于 2023-08-19 18:21 重庆
我只A了18%,你快来与我合体组成100%吧😥
1
送花
回复
分享
发布于 2023-08-19 18:37 北京
网易互娱
校招火热招聘中
官网直投
最多3不是一定3
点赞
送花
回复
分享
发布于 2023-08-20 20:21 上海

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务