QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#629806 | #8136. Rebellious Edge | nathan4690 | WA | 41ms | 32724kb | C++17 | 1.7kb | 2024-10-11 14:57:35 | 2024-10-11 14:57:35 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define el cout << '\n'
#define f1(i,n) for(int i=1;i<=n;i++)
#define __file_name ""
using namespace std;
const ll maxn = 1e6+5, inf=1e18;
ll t,n,m,in[maxn],l,r,wl,dp[maxn], pf[maxn];
vector<pair<ll,ll>> G[maxn];
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
if(fopen(__file_name ".inp", "r")){
freopen(__file_name ".inp","r",stdin);
freopen(__file_name ".out","w",stdout);
}
// code here
cin >> t;
while(t--){
cin >> n >> m;
f1(i,n) {
in[i] = inf;
dp[i] = inf;
G[i].clear();
}
f1(i,m){
ll u, v, w; cin >> u >> v >> w;
if(u > v){
l = v; r = u; wl = w;
continue;
}
G[v].push_back({u, w});
in[v] = min(in[v], w);
}
in[1] = 0;
// Case 1: do not take reversal
ll ans1 = 0;
f1(i,n) {
ans1 += in[i];
pf[i] = pf[i-1] + in[i];
}
// Case 2:
ll ans2 = wl;
f1(i,l-1) ans2 += in[i];
for(ll i=r+1;i<=n;i++) ans2 += in[i];
for(ll u=l+1;u<=r;u++){
for(pair<ll,ll> e: G[u]){
ll c = e.first, w = e.second;
if(c < l){
dp[u] = min(dp[u], w);
}else if(c != l){
dp[u] = min(dp[u], dp[c] + w + max(0ll, pf[u-1] - pf[c+1]));
}
}
}
ans2 += dp[r];
cout << min(ans1, ans2);el;
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 4ms
memory: 32688kb
input:
3 5 6 1 2 4 1 3 2 2 3 0 3 4 1 4 5 1 5 2 1 4 4 1 2 4 1 3 6 1 4 8 4 2 1000000 3 3 1 2 100 2 1 10 2 3 1000
output:
5 18 1100
result:
ok 3 number(s): "5 18 1100"
Test #2:
score: -100
Wrong Answer
time: 41ms
memory: 32724kb
input:
50000 4 5 2 4 998973548 2 3 501271695 4 1 778395982 1 4 32454891 1 2 757288934 4 5 1 4 720856669 2 3 665098951 3 4 407461517 2 1 866914401 1 2 457859826 4 5 1 2 75288664 1 4 624893594 3 2 458973866 2 4 769074655 2 3 834773751 4 5 2 3 237060634 2 4 297307882 3 4 200383586 1 2 42856502 3 1 16574713 4 ...
output:
1291015520 1530420294 1534956009 480300722 1366795927 1541095843 2493849488 858095911 1034153425 793861088 605832428 1051598350 612891589 1265994009 517769091 1678219738 1556463491 93634961 960978736 984886788 1696503797 1002892611 1969660290 1431417780 1515267731 977157479 1937478556 654475526 1401...
result:
wrong answer 104th numbers differ - expected: '875562950', found: '632302125'