QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#785733#7419. Jiry MatchingsArgharizaTL 1693ms56800kbC++144.2kb2024-11-26 18:59:262024-11-26 18:59:28

Judging History

你现在查看的是最新测评结果

  • [2024-11-26 18:59:28]
  • 评测
  • 测评结果:TL
  • 用时:1693ms
  • 内存:56800kb
  • [2024-11-26 18:59:26]
  • 提交

answer

#include <bits/stdc++.h>
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define R(i, x, y) for (int i = (x); i >= (y); i--)
#define FIO(FILE) freopen(FILE".in", "r", stdin), freopen(FILE".out", "w", stdout)

using namespace std;
typedef long long ll;
typedef pair<int, ll> pi;
typedef vector<ll> ve;
bool Mbe;

const ll inf = 1e18;

struct Mink {
	
	ve f;
	
	Mink () { f.clear(); }
	Mink (int n) { f.resize(n, 0); }
	Mink (int n, ll w) { f.resize(n, w); }
	Mink (ve w) { f = w; }
	
	ll & operator [] (const int &r) {
		return f[r];
	}
	
	int size() {
		return (int)f.size();
	}
	
	void emplace_back(ll w) {
		f.eb(w);
	}
	
	ve::iterator begin() {
		return f.begin();
	}
	
	ve::iterator end() {
		return f.end();
	}
	
	friend Mink operator + (Mink l, Mink r) {
		int sl = l.size(), sr = r.size();
		Mink cl(sl - 1), cr(sr - 1), res(sl + sr - 1), cres(sl + sr - 2);
		res[0] = l[0] + r[0];
		F (i, 0, sl - 2) {
			cl[i] = l[i + 1] - l[i];
		}
		F (i, 0, sr - 2) {
			cr[i] = r[i + 1] - r[i];
		}
		merge(cl.begin(), cl.end(), cr.begin(), cr.end(), cres.begin(), greater<int> ());
		F (i, 0, sl + sr - 3) {
			res[i + 1] = res[i] + cres[i];
		}
		return res;
	}
	
	friend Mink operator + (Mink l, ll r) {
		Mink res = l;
		res.eb(-inf);
		F (i, 1, l.size()) {
			res[i] = max(res[i], l[i - 1] + r);
		}
		return res;
	}
	
	friend Mink max(Mink l, Mink r) {
		int s = max(l.size(), r.size());
		Mink res(s, -inf);
		F (i, 0, s - 1) {
			if (i < l.size()) {
				res[i] = max(res[i], l[i]);
			}
			if (i < r.size()) {
				res[i] = max(res[i], r[i]);
			}
		}
		return res;
	}
	
};

struct Info1 {
	
	Mink f[2];
	
	Info1 () { }
	Info1 (Mink a, Mink b) { f[0] = a, f[1] = b; }
	
	Mink & operator [] (const int &r) {
		return f[r];
	}
	
	Info1 operator + (const ll &r) const {
		return Info1(max(f[0], f[1]), f[0] + r);
	}
	
};

struct Info2 {
	
	ll wr;
	Mink f[2][2];
	
	Mink* operator [] (const int &r) {
		return f[r];
	}
	
	Info2 () { }
	Info2 (Info1 a, ll b) { f[0][1] = f[1][0] = Mink(1, -inf), f[0][0] = a[0], f[1][1] = a[1], wr = b; }
	
};

const int N = 2e5 + 5;

int n;
int fa[N], sz[N], son[N], wson[N];

Info1 f[N];

vector<pi> G[N];

Info1 conq(vector<Info1>::iterator l, vector<Info1>::iterator r) {
	if (l == r - 1) {
		return *l;
	}
	auto mid = l + (r - l) / 2;
	Info1 L = conq(l, mid), R = conq(mid, r);
	return Info1(L[0] + R[0], max(L[1] + R[0], L[0] + R[1]));
}

Info2 conq(vector<Info2>::iterator l, vector<Info2>::iterator r) {
	if (l == r - 1) {
		return *l;
	}
	auto mid = l + (r - l) / 2;
	Info2 L = conq(l, mid), R = conq(mid, r), res;
	F (i, 0, 1) {
		F (j, 0, 1) {
			Mink a = (L[i][0] + R[0][j]) + L.wr;
			Mink b = max(L[i][0], L[i][1]) + max(R[0][j], R[1][j]);
			res[i][j] = max(a, b);
		}
	}
	res.wr = R.wr;
	return res;
}

void dfs1(int u, int fat) {
	sz[u] = 1, fa[u] = fat;
	for (pi p : G[u]) {
		int v = p.fi;
		if (v == fat) {
			continue;
		}
		dfs1(v, u);
		sz[u] += sz[v];
		if (sz[son[u]] < sz[v]) {
			son[u] = v;
		}
	}
	for (pi p : G[u]) {
		int v = p.fi, w = p.se;
		if (v == son[u]) {
			wson[u] = w;
		}
	}
}

void dfs2(int u, int pr) {
	f[u][0] = f[u][1] = Mink(1, 0);
	if (!son[u]) {
		return;
	}
	dfs2(son[u], pr);
	for (pi p : G[u]) {
		int v = p.fi;
		if (v != fa[u]) {
			dfs2(v, v);
		}
	}
	vector<Info1> F;
	for (pi p : G[u]) {
		int v = p.fi, w = p.se;
		if (v != fa[u]) {
			F.eb(f[v] + w);
		}
	}
	if (!F.empty()) {
		f[u] = conq(F.begin(), F.end());
	}
}

void solve() {
	cin >> n;
	F (i, 1, n - 1) {
		int u, v, w;
		cin >> u >> v >> w;
		G[u].eb(v, w), G[v].eb(u, w);
	}
	dfs1(1, 0);
	dfs2(1, 1);
	Mink res = max(f[1][0], f[1][1]);
	F (i, 1, n - 1) {
		if (i < res.size()) {
			cout << res[i] << ' ';
		} else {
			cout << "? ";
		}
	}
}

bool Med;
int main() {
	// FIO("");
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cerr << (&Mbe - &Med) / 1048576.0 << " MB\n";
	int T = 1;
	// cin >> T;
	while (T--) solve();
	cerr << (int)(1e3 * clock() / CLOCKS_PER_SEC) << " ms\n";
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 5ms
memory: 19460kb

input:

5
1 2 3
2 3 5
2 4 4
3 5 2

output:

5 6 ? ? 

result:

ok single line: '5 6 ? ? '

Test #2:

score: 0
Accepted
time: 0ms
memory: 19092kb

input:

10
2 8 -5
5 10 5
3 4 -5
1 6 5
3 9 5
1 7 -3
4 8 -5
10 8 -5
1 8 -3

output:

5 10 15 10 ? ? ? ? ? 

result:

ok single line: '5 10 15 10 ? ? ? ? ? '

Test #3:

score: 0
Accepted
time: 0ms
memory: 20956kb

input:

2
1 2 35

output:

35 

result:

ok single line: '35 '

Test #4:

score: 0
Accepted
time: 4ms
memory: 20168kb

input:

100
75 98 770328247
87 98 -219729992
98 35 578758971
98 93 -348642106
63 98 -638036803
83 25 -744163505
21 98 810313834
97 25 131957988
19 98 -711567435
8 25 68874404
43 98 184473508
28 94 171940607
92 28 971759198
51 98 -674532123
28 6 797727320
98 95 1154600
98 58 683765502
28 12 358426364
4 42 65...

output:

990461444 1951945471 2906346403 3825083089 4484694703 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 

result:

ok single line: '990461444 1951945471 290634640... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #5:

score: 0
Accepted
time: 0ms
memory: 20140kb

input:

203
139 160 -585848305
172 95 -541522893
170 39 5557137
106 39 -778170145
3 95 -436330773
39 6 -437501664
16 130 -452155774
65 148 68947909
160 62 959671488
109 39 -800234924
39 69 -419168940
23 16 876930246
95 84 393547919
11 39 640235516
37 95 100755747
39 36 930905421
95 103 150613974
39 60 55894...

output:

980020055 1939691543 2855429156 3756427595 4562844897 4346623326 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '980020055 1939691543 285542915... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #6:

score: 0
Accepted
time: 0ms
memory: 18868kb

input:

406
77 136 -97512557
231 136 542346963
130 177 -388708409
390 136 686852490
342 127 883069794
128 136 477257139
254 136 -475703031
136 32 -928318588
136 295 510781030
102 342 871598741
137 214 648132758
342 3 697615122
136 120 -301371460
406 43 154140155
406 55 921120861
72 371 88488927
183 136 -146...

output:

996418061 1986908701 2975920530 3898989188 4755959611 5559326552 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '996418061 1986908701 297592053... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #7:

score: 0
Accepted
time: 4ms
memory: 18780kb

input:

812
72 362 -368276642
362 196 -634964868
362 743 -833364678
244 362 78813293
111 20 -210495433
455 362 455557250
229 64 -426691307
756 362 139006554
362 143 473229314
20 534 -699191624
158 362 93363463
312 20 -859248217
157 362 180458703
362 731 299520404
20 323 -735699279
20 742 -812381447
439 20 1...

output:

999034642 1995939938 2980594575 3958550949 4917179479 5765897258 6449371168 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...

result:

ok single line: '999034642 1995939938 298059457... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #8:

score: 0
Accepted
time: 4ms
memory: 19536kb

input:

1625
1142 1405 -551024632
385 1543 919271125
398 981 264110458
385 1176 -413402000
123 385 736435016
252 385 718332198
1294 385 34067686
981 267 -384479151
1552 385 793504414
23 385 -694334331
1197 385 385229583
1016 385 -467572952
536 385 439439632
769 385 358175397
385 858 -647141736
385 178 -3958...

output:

999537220 1998889246 2996051177 3986098023 4948945555 5833220615 6655752159 6915163854 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999537220 1998889246 299605117... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #9:

score: 0
Accepted
time: 11ms
memory: 20496kb

input:

3250
2887 101 258851508
2017 1662 546412652
1662 629 -28215881
1756 1662 450358858
2981 1692 799511924
3193 1662 363320660
1692 905 -323671345
1692 2935 19706073
2913 3047 -25735169
1149 2887 -805060913
1692 461 824382188
1692 2403 929982454
2509 721 -147417737
1662 770 -721376313
1260 1662 -1568571...

output:

999996265 1997699858 2994629552 3984126644 4965926521 5932717085 6881879351 7821660229 8728166024 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...

result:

ok single line: '999996265 1997699858 299462955... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #10:

score: 0
Accepted
time: 20ms
memory: 20224kb

input:

7500
4955 6802 -495321867
6802 2205 -674830428
6287 3296 931013751
6802 7002 -972370682
5968 6802 -4844061
6802 4769 239749327
1694 6802 -468455800
6802 976 158103224
6802 5250 381161328
5281 6802 -109984276
4676 2299 563014102
2299 297 -529154962
4317 2436 861997552
3474 2299 938353692
6802 6742 11...

output:

999621933 1999210349 2998150687 3996516968 4992090923 5980299116 6965962239 7791569767 8521331693 9157667141 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999621933 1999210349 299815068... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #11:

score: 0
Accepted
time: 145ms
memory: 20904kb

input:

12500
12420 8595 -255200982
11605 5490 845231189
8595 5721 390643780
5512 5490 268180812
11132 10795 956887552
7633 8595 -622785013
7562 8595 513664257
9744 8595 -675715598
6080 8595 999680752
11864 8595 -967505600
9961 8595 613622983
1356 12167 808408582
2383 8595 -476729851
6969 11132 -942417500
2...

output:

999858209 1999538961 2999084473 3998464234 4997801190 5996643071 6995458737 7992421815 8922828463 9776715075 9864436704 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...

result:

ok single line: '999858209 1999538961 299908447... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #12:

score: 0
Accepted
time: 168ms
memory: 24212kb

input:

25000
17077 20165 -507412418
18419 20161 618820479
19707 19850 -175193487
20165 14994 943405292
20165 24206 -167254127
20706 20165 171657772
21119 20165 116133390
4987 20165 42216677
11925 11458 -917266631
3554 20165 -419663469
3565 9374 453456629
17577 20165 -721380063
23667 10268 616472024
11078 2...

output:

999925482 1999836258 2999615985 3999293406 4997527596 5994797398 6990387648 7966039593 8937696974 9843700482 10677729598 11067646897 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999925482 1999836258 299961598... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #13:

score: 0
Accepted
time: 493ms
memory: 27948kb

input:

50000
18500 2466 792046417
18500 44110 -900904087
21015 11984 -737928618
28173 41859 -519214580
30313 18500 -301917017
42387 41859 -974702020
11984 24167 146595056
18500 21584 903989466
18500 37467 556499768
41859 19205 -9960474
3769 39568 914049493
44621 18500 187544463
18500 15381 -10251112
11984 ...

output:

999937917 1999800424 2999565993 3999252320 4998654018 5997015278 6995342886 7990129710 8964115429 9930869200 10864301226 11747795394 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999937917 1999800424 299956599... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #14:

score: 0
Accepted
time: 327ms
memory: 36528kb

input:

100000
41120 8939 -908804331
41120 59419 937439044
56449 26963 281860304
56449 40366 164393802
70598 56449 17660671
32292 56449 661439314
89841 56449 850663169
56997 56449 -284803758
12053 13650 -277296534
76004 13650 367404917
13650 64459 -238013272
39862 56449 248682228
54227 19569 -913307595
4112...

output:

999969594 1999928060 2999840635 3999730309 4999609571 5999262156 6998303381 7997324865 8994564135 9989627730 10975230325 11947018149 12805065409 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999969594 1999928060 299984063... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #15:

score: 0
Accepted
time: 1690ms
memory: 56800kb

input:

200000
67373 91995 -500869886
70900 10837 -54987159
126177 70900 88807696
142953 91374 61508750
141503 70900 169900986
58548 70900 -39790283
9166 148393 -599860314
69224 38404 630361305
79354 91995 763726682
56066 70900 682115260
194973 70900 -683695849
91995 5518 -141603845
182408 70900 -679035513
...

output:

999999123 1999993982 2999765931 3999482750 4999165478 5998705808 6997961293 7996356785 8994482310 9992017971 10988239271 11973337088 12834111224 13665388181 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999999123 1999993982 299976593... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #16:

score: 0
Accepted
time: 1693ms
memory: 56072kb

input:

200000
189756 112654 13430889
114148 160650 551578800
32649 112654 -34474549
160650 84423 449825891
86820 112654 51028326
112654 63925 -931768736
67025 112654 -433304196
56759 112654 759335947
101542 112654 -882393322
157591 162907 205099452
112654 4322 304631080
84481 137371 576019189
112654 84131 ...

output:

999993776 1999986889 2999959226 3999926704 4999850626 5999598626 6998885935 7998000018 8994632072 9990659751 10986088637 11971120882 12918372872 13799062553 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...

result:

ok single line: '999993776 1999986889 299995922... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '

Test #17:

score: -100
Time Limit Exceeded

input:

200000
194800 126799 652392877
118542 15648 772985966
2384 192813 423677466
153032 118542 -936812159
118542 66351 233167978
2947 118542 -3489841
119976 61565 201430819
2384 183169 405267510
2384 7689 559930836
129177 2384 971258417
61565 42998 -77981354
77645 199693 296926917
77645 144046 -174125055...

output:


result: