QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#739185#9569. Subwaytest_algthRE 123ms985872kbC++144.8kb2024-11-12 21:06:012024-11-12 21:06:05

Judging History

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

  • [2024-11-12 21:06:05]
  • 评测
  • 测评结果:RE
  • 用时:123ms
  • 内存:985872kb
  • [2024-11-12 21:06:01]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;
#define fi first
#define se second
#define mkp make_pair
#define pb push_back
typedef pair <int, int> pii;

inline int read() {
	int x = 0, f = 0;
	char c = getchar();
	while (!isdigit(c)) {if (c == '-') f = 1; c = getchar();}
	while (isdigit(c)) x = (x << 1) + (x << 3) + (c & 15), c = getchar();
	return f? -x : x;
}

const int MAXN = 2e5;
struct DS {
	priority_queue <pii> q2, d2;
	priority_queue <pii, vector<pii>, greater<pii>> q1, d1;
	inline int size() {return q1.size() - d1.size();}
	pii max() {
		while (d2.size() && q2.top() == d2.top()) q2.pop(), d2.pop();
		if (q2.size())
			return q2.top();
		return mkp(-1, -1);
	}
	pii min() {
		while (d1.size() && q1.top() == d1.top()) q1.pop(), d1.pop();
		if (q1.size())
			return q1.top();
		return mkp(-1, -1);
	}
	void ins(pii x) {q1.push(x); q2.push(x);}
	void del(pii x) {d1.push(x); d2.push(x);}
}ds[MAXN + 10];


typedef long long LL;
typedef pair<LL, LL> pll;
const int MAXS = MAXN*60*5;
const LL inf = 2e18;
struct SEG {
	pll tag[MAXS]; //fi k, se b
	int lc[MAXS], rc[MAXS], tot;
	inline LL calc(pll v, LL x) {
		if (v == mkp(0ll, 0ll)) return inf;
	//	cerr << v.fi << " " << v.se << " " << x << endl;
		return v.fi * x + v.se;
	}
	void upd2(int l, int r, pll v, int &s) {
		if (!s) s = ++tot;
		if (tag[s] == mkp(0ll, 0ll)) {
			tag[s] = v;
			return;
		}
		int mid = l + r >> 1;
		LL v1 = calc(v, mid);
		LL v2 = calc(tag[s], mid);
		if (v1 < v2) swap(v1, v2), swap(tag[s], v);
		if (l == r) return;
		if (calc(v, l) < calc(tag[s], l)) upd2(l, mid, v, lc[s]);
		else upd2(mid + 1, r, v, rc[s]);
	}

	void upd1(int l, int r, int L, int R, pll v, int &s) {
		if (!s) s = ++tot;
		if (L > r || R < l) return;
		if (L <= l && r <= R) {
			upd2(l, r, v, s);
			return;
		}
		int mid = l + r >> 1;
		upd1(l, mid, L, R, v, lc[s]);
		upd1(mid + 1, r, L, R, v, rc[s]);
		return;
	}
	LL query(int l, int r, int x, int s) {
		if (!s) return inf;
		if (l == r) return calc(tag[s], x);
		int mid = l + r >> 1; LL v = calc(tag[s], x);
		if (x <= mid) return min(query(l, mid, x, lc[s]), v);
		return min(query(mid + 1, r, x, rc[s]), v);
	}
}seg;

pii pos[MAXN + 10];
//vector <pii> G[MAXN + 10];
int a[MAXN + 10], b[MAXN + 10];
LL dp[MAXN + 10];

typedef pair <LL, int> pli;
priority_queue <pli, vector<pli>, greater<pli>> q;
int rt[MAXN + 10];

const int MAXW = 1e6;
LL query(int x, int p) {
  if (p < 0 || p > MAXN) {
      cout << "GONNO\n";
      exit(0);
    }
	return seg.query(1, MAXW, x, rt[p]);
}

inline void chkmin(int x, LL v) {
  if (x < 0 || x > MAXN) {
      cout << "YONNO\n";
      exit(0);
    }
	if (dp[x] > v)
		dp[x] = v, q.push(mkp(v, x));
}

bool vis[MAXN + 10];
int w[MAXN + 10];

//vector <pair<int, LL>> G[MAXN + 10];
void dij() {
	while (!q.empty()) {
		int x = q.top().se; q.pop();
		if (vis[x]) continue;
		vis[x] = 1;
		int p = pos[x].fi;
		LL k = ::b[pos[x].se], m = dp[x];
		ds[p].del(mkp(a[pos[x].se], x));
    if (p < 0 || p > MAXN) {
      cout << "NONNO\n";
      exit(0);
    }
		seg.upd1(1, MAXW, 1, MAXW, mkp(k, m), rt[p]);
		if (ds[p].size()) {
	//		DS tmp = ds[p];
//			while (ds[p].size()) {
				pii p1 = ds[p].min();
				pii p2 = ds[p].max();
				LL v1 = query(p1.fi, p);
				LL v2 = query(p2.fi, p);
				chkmin(p1.se, v1);
				chkmin(p2.se, v2);
			//	ds[p].del(p1);
	//		}
	//		ds[p] = tmp;
		}
		if (w[x]) {
			if (x + 1 == 6) {
			//	cerr << "s" << endl;
			}
			chkmin(x + 1, dp[x] + w[x]);
		}
		/*
		for (auto i : G[x]) {
			int v = i.fi; LL w = i.se;
			chkmin(v, dp[x] + w);
		}*/
	}
}


//vector <int> vec[MAXN + 10];
signed main() {
//	freopen ("std.in", "r", stdin);
//	freopen ("std.out", "w", stdout);
	int n, k;
	n = read(), k = read();
	for (int i = 1; i <= k; ++i) a[i] = read();
	for (int i = 1; i <= k; ++i) b[i] = read();
	int tot = 0;
	for (int i = 1; i <= k; ++i) {
		int p = read();
		for (int j = 1; j <= p; ++j) {
			int x = read();
			pos[tot + j].fi = x;
			pos[tot + j].se = i;
			ds[x].ins(mkp(a[i], tot + j));
	//		vec[x].pb(tot + j);
			if (j < p) {
				w[tot + j] = read();
				//G[tot + j].pb(mkp(tot + j + 1, w));
			}
		}
		tot += p;
	}
	//cerr << tot << endl;
	/*
	for (int i = 1; i <= n; ++i)
		for (auto u : vec[i])
			for (auto k : vec[i])
				G[u].pb(mkp(k, 1ll * b[pos[u].se] * a[pos[k].se]));
	*/
	for (int i = 1; i <= tot; ++i) {
		if (pos[i].fi == 1) q.push(mkp(0ll, i));
		else dp[i] = inf;
	}
	dij();

	static LL ans[MAXN + 10];
	for (int i = 1; i <= n; ++i) ans[i] = inf;
	for (int i = 1; i <= tot; ++i) {
	//	cout << dp[i] << " ";
		ans[pos[i].fi] = min(ans[pos[i].fi], dp[i]);
	}
	//cout << endl;
	for (int i = 2; i <= n; ++i)
		printf("%lld ", ans[i]);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 36ms
memory: 969184kb

input:

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

output:

2 5 21 14 18 

result:

ok 5 number(s): "2 5 21 14 18"

Test #2:

score: 0
Accepted
time: 24ms
memory: 969176kb

input:

6 3
1 5 1
5 5 1
5 1 2 2 100 3 100 6 1 4
5 1 100 2 4 3 100 5 1 4
2 3 1 5

output:

2 31 43 37 136 

result:

ok 5 number(s): "2 31 43 37 136"

Test #3:

score: 0
Accepted
time: 35ms
memory: 970520kb

input:

5 9
278281 70119 511791 834898 25300 63487 609134 236836 394497
835557 287345 579404 879128 636344 306393 569430 152565 47119
2 3 823004250 4
2 1 25427550 3
2 1 15849621 3
2 1 701911826 5
3 5 679672631 3 907176714 2
2 1 817370554 2
2 3 697987914 2
2 4 873900795 2
2 1 814305954 5

output:

817370554 15849621 80811085745 701911826 

result:

ok 4 number(s): "817370554 15849621 80811085745 701911826"

Test #4:

score: 0
Accepted
time: 48ms
memory: 969156kb

input:

5 10
436148 103565 528276 212202 680282 92724 609031 560815 80390 406327
546832 581372 731920 348686 791433 98906 112247 118131 361076 724950
4 1 213029090 4 415633732 5 581145231 3
2 4 306227294 2
2 1 713116112 4
2 3 99672714 5
2 3 975143846 1
5 4 249118026 5 689334413 1 597093740 2 553624319 3
3 4...

output:

597093740 765908995 213029090 628662822 

result:

ok 4 number(s): "597093740 765908995 213029090 628662822"

Test #5:

score: 0
Accepted
time: 43ms
memory: 968468kb

input:

3 5
696710 837216 390019 431068 960618
589388 829806 692481 154511 282620
2 1 711629163 3
2 1 781784306 3
2 1 686636041 3
2 3 794790206 2
2 1 844212542 2

output:

844212542 686636041 

result:

ok 2 number(s): "844212542 686636041"

Test #6:

score: 0
Accepted
time: 23ms
memory: 969112kb

input:

3 8
344877 101098 328614 735002 476606 635558 573861 261083
964379 333960 25186 276560 258996 683650 765559 582374
2 3 838262394 1
2 2 863940316 3
2 2 476918371 3
3 3 320092619 1 400754003 2
3 3 150885055 2 90507792 1
2 3 190275693 2
2 2 600234969 3
2 2 679446528 3

output:

400754003 29224357199 

result:

ok 2 number(s): "400754003 29224357199"

Test #7:

score: 0
Accepted
time: 44ms
memory: 969672kb

input:

50 52
895514 29433 851800 887860 340384 95967 506578 666268 850660 602220 717255 242039 34055 752012 248567 170469 505996 823344 143369 390858 112988 892365 15368 617804 351619 557340 788960 990487 283825 272924 24678 130649 341049 980236 558990 254726 682005 963825 953074 603477 706464 340694 23541...

output:

632126151 479346918 492618840 3695787776 22624579200 174047740 416387993526 21429733469 15831777447 203893499 522142321620 977566721 279122223 30345963113 804573598 73397618725 6389037892 224856032596 416404080694 75356833904 69909552850 4504114918 13173874327 1104455938 275720760247 136977429637 22...

result:

ok 49 numbers

Test #8:

score: 0
Accepted
time: 40ms
memory: 976824kb

input:

50 186
909405 536090 349598 989013 812836 176449 79855 101754 179492 328610 751840 298905 429840 327083 222463 770826 222448 679356 524717 759894 186015 464746 390432 205629 893518 619709 777762 985329 612480 308146 507216 337177 463052 10105 150939 411855 75743 831031 391242 914978 198839 259846 36...

output:

279207921 30546650 3955157971 366881738 678883775 822326137 828131153 510756214 2799968412 2039093375 2727811374 2032421076 1966318841 894245748 2686792493 218322703 721713806 962052764 2586140415 201519887 722596289 49603757 329009601 562632121 73396118 399363911 1252345566 631600417 106456928 5055...

result:

ok 49 numbers

Test #9:

score: 0
Accepted
time: 35ms
memory: 970188kb

input:

50 746
109522 187240 733057 796323 66411 270785 937748 93610 470338 557856 166396 453860 431444 832088 13928 85925 15012 650718 328138 113957 812853 420621 146202 494017 985809 97315 96915 329400 118469 310530 501365 375790 461794 395440 784193 383084 825278 651991 584960 198686 644465 936326 856317...

output:

108689636 452441994 85834082 194842954 1581446 78212329 192476904 317795566 17889600 204753389 160234611 32867254 60240077 5211225 59666696 182239665 3783349 260084869 211347631 275823469 278103417 62390636 110457213 390191494 14670321 1101923 516180268 190362002 66561551 565544855 21826762 21720545...

result:

ok 49 numbers

Test #10:

score: 0
Accepted
time: 40ms
memory: 968464kb

input:

100 241
564812 561763 140723 436240 394309 44156 384984 144017 947539 422591 408747 362914 763371 162274 318323 676445 200578 532099 333815 768706 880020 140834 689221 544561 536480 764898 626990 221618 173930 13451 775752 248365 66936 533899 658027 131826 28438 795120 203253 433075 523346 599087 67...

output:

267913444 25339157310 8314344093 5464367180 1286326436 90461126 8907606133 16347606802 14711829080 8971431750 170752878 397694350 1037375748 18879356054 1501065529 2069064987 9584178341 17014391217 903970115 490753396 1632578522 10191345537 26994814823 2195645069 11593917652 17481016054 759764904 72...

result:

ok 99 numbers

Test #11:

score: 0
Accepted
time: 32ms
memory: 970308kb

input:

100 909
354490 607942 638780 621647 693678 345069 712251 189946 997948 842605 432303 208309 279462 858887 48769 974330 209759 652626 989265 72153 199248 326709 19953 978295 817366 854640 719591 770122 370818 808084 794671 257438 367000 694918 70071 168530 368273 624129 870946 439004 183705 785489 77...

output:

333297663 399355935 1059814556 1107743829 1427474071 696020875 353795528 459479343 659808640 1241037904 609650958 1306280384 377707905 26924777 786395257 123000005 1573062540 17829641 1567227849 189812239 370915753 928681025 89799511 815276047 135696305 515669937 942621003 445110058 86765197 1037062...

result:

ok 99 numbers

Test #12:

score: 0
Accepted
time: 47ms
memory: 970552kb

input:

1000 1789
943374 138795 977938 443021 385160 611446 873697 123265 14099 169470 105296 236046 377530 677105 433109 673693 542845 669265 772059 343016 454867 119346 90752 210176 359971 736639 253271 241927 403402 177845 24872 969078 397336 60325 932971 633624 626450 101687 358225 707661 256242 599586 ...

output:

695358284 57840977 47729563480 435035512 53612876532 26933106204 4709406363 97679790525 119919863949 78014553223 324259812 40737969101 825514049 152856002235 25891521677 92733560736 98950794057 182569608 369133896 55806982817 16885319597 88498741741 90610242716 52312675258 77437996874 11273252242 56...

result:

ok 999 numbers

Test #13:

score: 0
Accepted
time: 51ms
memory: 969412kb

input:

1000 1328
942464 700134 838046 230830 933766 241402 754798 823043 908485 771434 356964 779662 242435 658845 57070 349037 920119 952268 194414 510421 654479 753093 51195 678925 521131 537897 685665 725809 233695 739566 778076 336559 62389 81629 777441 708621 65449 395413 249430 591777 980459 77062 91...

output:

234864701 70427560643 33979112868 42154802 71102236248 360025339 8808877949 77704918952 202854481721 482146430 362270842220 187668535546 142540492218 202398929923 87515104508 103824540069 292703838878 70226700124 112913296906 204185466003 294581984792 344742221973 131973239350 55299336706 2803617572...

result:

ok 999 numbers

Test #14:

score: 0
Accepted
time: 115ms
memory: 979996kb

input:

1000 7893
234290 650221 485034 842643 583731 316391 855877 823188 996737 358070 913797 57603 43458 220809 843466 16281 586350 16643 661960 482050 214036 744249 692933 179360 771862 316856 434846 586374 290472 17854 418050 919421 61269 515068 557493 392514 238650 237722 168143 347078 924169 447795 19...

output:

811896320 1293855635 3137682407 683460714 124384666 3296401445 1891230314 617384608 818485965 926302922 908780409 371762097 530183257 5228061326 2528845153 2848035487 6292785548 3903673375 4384276771 824141642 2803177585 1373654628 2979388693 3991276711 1077652949 1076377042 2477897384 1012232752 30...

result:

ok 999 numbers

Test #15:

score: 0
Accepted
time: 67ms
memory: 977216kb

input:

10000 17223
411638 198168 78675 791920 399414 264260 756544 346010 72555 798265 399527 770715 218981 209633 792241 825286 312326 307287 803037 449058 805254 687533 938875 188202 566450 824807 986611 451083 581033 152703 385916 972649 621726 888799 212068 256602 249113 701737 251023 528041 668534 932...

output:

264478456 19629721444 58747142191 104890162435 81066903934 91271124384 22059849400 70219594888 158782955 67401328996 69908156642 88420661476 38894396830 71239910353 187511078 47005947919 48165339358 116258852571 27391548301 44644425059 32244633281 77343528772 110200074127 714011432 47544674155 42533...

result:

ok 9999 numbers

Test #16:

score: 0
Accepted
time: 123ms
memory: 985872kb

input:

10000 25193
994140 551560 777647 912578 474695 874446 518615 417794 420734 440280 350540 541909 459397 623405 484132 530213 893346 876986 371447 608193 954849 983503 977635 78490 913680 862880 157577 427719 908035 466245 876429 74305 69905 39098 798745 946215 57237 807776 931482 669564 337518 699578...

output:

845652800 329776210 619974790 29929115140 30865901800 23200678780 19487956608 20645175064 28571777786 32256070176 25974785637 39313190 16417867617 27530962994 39937693673 28768213109 31601702992 2731250211 18352720960 1655075805 35020768680 30915562998 36375405013 18515092663 17652203888 23185095801...

result:

ok 9999 numbers

Test #17:

score: -100
Runtime Error

input:

10000 35595
493555 197324 654547 122496 889265 384537 919812 673444 123975 149073 118275 853523 987923 20299 51365 84516 23229 626560 339071 867988 355757 37199 555437 401153 593680 983098 125135 319858 898774 910056 544710 960716 900023 211809 578683 494558 432041 145877 299929 162775 168492 515157...

output:


result: