UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#203784#151. Boomtkswls1008348ms127720kbC++112.8kb2024-03-19 09:29:502024-03-19 12:32:24

answer

#include <bits/stdc++.h>
#pragma GCC optimize(2)
#define ll long long
#define i128 __int128
using namespace std;
int n, m, t, l[100005], a[100005], r[100005], b[350][100005], op, name[100005], gl[350], gr[350];
ll suml[100005], sumr[100005], ssum[350];
i128 sum[350], ans;
inline ll gets(int p, int q) {
	ll cnt = 0;
	if (name[p] == name[q]) {
		cnt = sumr[p];
		if (q != gr[name[p]]) {
			cnt -= sumr[q + 1];
		}
		return cnt;
	}
	if (name[p] == name[q] - 1) {
		return sumr[p] + suml[q];
	}
	return sumr[p] + suml[q] + ssum[name[q] - 1] - ssum[name[p]];
}
template<typename type>
inline void read(type &x) {
	x = 0;
	bool flag(0);
	char ch = getchar();
	while (!isdigit(ch)) flag = ch == '-', ch = getchar();
	while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
	flag ? x = -x : 0;
}
template<typename type>
inline void write(type x, bool mode = 1) {
	x < 0 ? x = -x, putchar('-') : 0;
	static short Stack[50], top(0);
	do Stack[++top] = x % 10, x /= 10;
	while (x);
	while (top) putchar(Stack[top--] | 48);
	mode ? putchar('\n') : putchar(' ');
}
signed main() {
	read(n);
	t = min(n, (int)sqrt(n) + 1);
	for (int i = 1; i <= n; i++) {
		read(a[i]);
		name[i] = (i - 1) / t + 1;
		ssum[name[i]] += a[i];
	}
	op = name[n];
	for (int i = 1; i <= op; i++) {
		ssum[i] += ssum[i - 1];
		gl[i] = (i - 1) * t + 1, gr[i] = min(n, i * t);
	}
	for (int i = 1; i <= op; i++) {
		for (int j = gl[i]; j <= gr[i]; j++) {
			if (j == gl[i]) {
				suml[j] = a[j];
			} else {
				suml[j] = suml[j - 1] + a[j];
			}
		}
		for (int j = gr[i]; j >= gl[i]; j--) {
			if (j == gr[i]) {
				sumr[j] = a[j];
			} else {
				sumr[j] = sumr[j + 1] + a[j];
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		read(l[i]), read(r[i]);
		b[name[i]][l[i]]++;
		b[name[i]][r[i] + 1]--;
		sum[name[i]] += gets(l[i], r[i]);
	}
	for (int i = 1; i <= op; i++) {
		for (int j = 1; j <= n; j++) {
			b[i][j] += b[i][j - 1];
		}
	}
	int qwe, p, q, w;
	read(m);
	for (int i = 1; i <= m; i++) {
		read(qwe), read(p), read(q);
		if (qwe == 1) {
			w = q - a[p];
			a[p] = q;
			for (int j = name[p]; j <= op; j++) {
				ssum[j] += w;
			}
			for (int j = p; j <= gr[name[p]]; j++) {
				suml[j] += w;
			}
			for (int j = gl[name[p]]; j <= p; j++) {
				sumr[j] += w;
			}
			for (int j = 1; j <= op; j++) {
				sum[j] += 1ll * b[j][p] * w;
			}
		} else {
			ans = 0;
			if (name[p] == name[q]) {
				for (int i = p; i <= q; i++) {
					ans += gets(l[i], r[i]);
				}
			} else {
				for (int i = name[p] + 1; i < name[q]; i++) {
					ans += sum[i];
				}
				for (int i = p; i <= gr[name[p]]; i++) {
					ans += gets(l[i], r[i]);
				}
				for (int i = q; i >= gl[name[q]]; i--) {
					ans += gets(l[i], r[i]);
				}
			}
			write(ans, 1);
		}
	}
}

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 15
Accepted

Test #1:

score: 15
Accepted
time: 0ms
memory: 1436kb

input:

978
622650072 984943658 144108929 470211272 101027544 457850877 458777922 7237707 823564440 11543816...

output:

40338284513108
71903057781631
95881406749369
32494373280638
25239917056405
77776995079159
8929433735...

result:

ok 476 numbers

Test #2:

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

input:

955
97816498 969887315 140734213 940422544 202055088 768218109 770072199 866991770 647128879 8339268...

output:

5909582694825
72933138303449
60946016518588
18602770751803
28953229400158
114537104644919
2428148244...

result:

ok 507 numbers

Test #3:

score: 0
Accepted
time: 1ms
memory: 1440kb

input:

983
572982925 807347327 284843142 410633815 303082632 78585340 81366475 726745832 323209673 19883084...

output:

64619788231040
34771316231255
7690174058410
7682293272021
37970268503162
85254621035534
608512714031...

result:

ok 478 numbers

Test #4:

score: 0
Accepted
time: 1ms
memory: 1432kb

input:

960
48149351 792290984 281468426 880845087 404110176 536436217 540144397 586499894 146774112 1667853...

output:

41114344825882
60311968398660
48132881762704
45714920538102
44141876670961
50501010805882
6830661712...

result:

ok 501 numbers

Test #5:

score: 0
Accepted
time: 1ms
memory: 1440kb

input:

988
670799423 629750996 425577355 203572713 505137720 846803449 851438674 446253956 970338552 282223...

output:

46641372787008
27868811408764
117580914181633
4604662320095
78452294512583
29900119929875
2600471168...

result:

ok 489 numbers

Test #6:

score: 0
Accepted
time: 1ms
memory: 1432kb

input:

965
145965849 614694653 422202639 673783985 606165264 157170680 162732950 306008018 646419346 250178...

output:

66113933859392
3885495157880
96944338904036
37862676947951
101176127728590
1653331975884
89002493077...

result:

ok 509 numbers

Subtask #2:

score: 20
Accepted

Test #7:

score: 20
Accepted
time: 55ms
memory: 1448kb

input:

994
621132276 452154665 566311568 143995256 707192808 615021557 621510872 165762080 469983785 365616...

output:

14488483010421
52216943545338
44902719329254
71948990048635
31471596968232
91774250925604
1040746449...

result:

ok 49646 numbers

Test #8:

score: 0
Accepted
time: 58ms
memory: 1448kb

input:

993
96298702 437098322 562936852 614206528 808220352 925388789 932805149 25516142 146064579 33357073...

output:

38789683270103
100927706933150
28255521490049
135070703465875
97933651510985
32282617092619
33488356...

result:

ok 49706 numbers

Test #9:

score: 0
Accepted
time: 54ms
memory: 1444kb

input:

992
718948774 274558334 707045781 84417799 909247896 235756020 244099425 885270205 969629019 4490088...

output:

65926504124246
79783617548920
29410434876213
32226392369641
127025770829730
24560356287715
126516007...

result:

ok 49740 numbers

Test #10:

score: 0
Accepted
time: 57ms
memory: 1444kb

input:

991
194115200 259501991 703671065 407145426 10275439 693606897 702877347 745024267 793193458 4169634...

output:

77752074525804
18031437178974
24962076014026
40877380107636
53160817644438
52125618046811
2776383476...

result:

ok 49613 numbers

Test #11:

score: 0
Accepted
time: 54ms
memory: 1440kb

input:

990
669281627 96962003 847779994 877356698 111302983 3974128 14171623 604778329 469274252 532401579 ...

output:

54458260605737
62909135615977
50571637605894
68862983739597
139380547749282
34772707655098
174397795...

result:

ok 49684 numbers

Subtask #3:

score: 25
Accepted

Test #12:

score: 25
Accepted
time: 902ms
memory: 127324kb

input:

99483
144448053 81905660 844405278 347567969 212330527 314341360 325465900 464532391 292838691 50035...

output:

118744287784850
183508017270541
22139784574143
141473390682466
53977255634599
69641783321153
7120235...

result:

ok 49390 numbers

Test #13:

score: 0
Accepted
time: 823ms
memory: 127324kb

input:

99273
767098125 66849317 988514207 817779241 313358071 772192237 784243822 324286453 116403130 61579...

output:

145833220844811
56006472614354
173564755567788
134897751427864
129013170266099
17564404128072
174735...

result:

ok 49543 numbers

Test #14:

score: 0
Accepted
time: 871ms
memory: 127316kb

input:

99063
242264551 904309330 985139491 140506867 414385615 82559468 95538098 184040515 792483925 583748...

output:

166372909770134
93195362605507
60589093352508
28033336280698
5232209553940
16457726688219
1219092961...

result:

ok 49763 numbers

Test #15:

score: 0
Accepted
time: 826ms
memory: 127720kb

input:

99854
717430978 889252987 129248419 610718139 515413159 392926700 406832375 43794577 616048364 69918...

output:

88247118114710
1375456264603
23618825687309
160426399524338
58385291737771
56691625101160
4516730811...

result:

ok 49923 numbers

Subtask #4:

score: 40
Accepted

Test #16:

score: 40
Accepted
time: 919ms
memory: 127720kb

input:

99644
192597404 726712999 125873703 80929410 616440703 850777577 865610297 51032284 292129158 667141...

output:

480304783882461775
120192859749203484
905523823754698704
16041383460252000
398851626409541632
923674...

result:

ok 49845 numbers

Test #17:

score: 0
Accepted
time: 899ms
memory: 127324kb

input:

99434
815247476 711656656 122498987 551140682 717468247 161144808 176904573 910786347 115693597 7825...

output:

555316709210731726
254633360850421614
1244760050994749402
670079521158507466
309587351225767348
9575...

result:

ok 49699 numbers

Test #18:

score: 0
Accepted
time: 926ms
memory: 127320kb

input:

99224
290413902 549116668 266607916 21351953 818495791 471512040 488198850 770540409 939258037 75053...

output:

970652707558266443
110388969890056720
972694557242680624
260207513526844630
968241720148561517
18853...

result:

ok 49994 numbers

Test #19:

score: 0
Accepted
time: 935ms
memory: 127320kb

input:

99014
765580329 534060325 263233200 344079580 919523335 929362917 946976772 630294471 615338831 8659...

output:

859798349348274160
264084430712406078
889462584998072945
155686554166711840
151314159586743758
88511...

result:

ok 49709 numbers

Test #20:

score: 0
Accepted
time: 965ms
memory: 127716kb

input:

99805
240746755 371520337 407342129 814290852 20550878 239730148 258271048 490048533 438903270 83392...

output:

913556633961091398
862687977070717615
801175214174815058
522770071025650989
271212620675663199
74164...

result:

ok 49829 numbers

Extra Test:

score: 0
Extra Test Passed