UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#213156#584. t3Snow_Dog700ms1360kbC++2.7kb2024-11-09 21:38:062024-11-09 23:22:49

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
struct Tree{
	int l,r;
	int value; //存的max 
	int awa,ewe;
}tree[11451414];
int n,s,m;
int num[11451414];
int now,fu;
 
void bulid(int &v,int l,int r) {
	v = ++fu;
	tree[v].ewe=1e18;
	if (l == r) {
		tree[v].value = num[l];
	}
	else {
		int mid = l + r >> 1;
		bulid(tree[v].l,l,mid);
		bulid(tree[v].r,mid + 1,r);
		tree[v].value = max(tree[tree[v].l].value , tree[tree[v].r].value);
	}
}

void push_down(int v,int l,int r,int add,int turn){
	if(turn != 1e18) {
		tree[v].value = (l + r) * turn;
		tree[v].ewe = turn;
		tree[v].awa = 0; 
	}
	else {
		tree[v].value += (l + r) * add;
		if (tree[v].ewe == 1e18) tree[v].awa += add;
		else tree[v].ewe += add;
	}
}

void two(int v,int l,int r,int ll,int rr,int add,int turn) {
	if (l == ll && r == rr) {
		push_down(v,l,r,add,turn);
	}
	else {
		int mid = l + r >> 1;
		push_down(tree[v].l,l,mid,tree[v].awa,tree[v].ewe);
		push_down(tree[v].r,mid + 1,r,tree[v].awa,tree[v].ewe);
		tree[v].ewe = 1e18;
		tree[v].awa = 0;
		if (rr <= mid) {
			two(tree[v].l,l,mid,ll,rr,add,turn);
		}
		else if (ll > mid) {
			two(tree[v].r,mid + 1,r,ll,rr,add,turn);
		}
		else {
			two(tree[v].l,l,mid,ll,mid,add,turn);
			two(tree[v].r,mid + 1,r,mid + 1,rr,add,turn);
		}
		tree[v].value = tree[tree[v].l].value + tree[tree[v].r].value;
	}
}

int three(int v,int l,int r,int ll,int rr,int k) {
	if (l == r) {
		return pow(tree[v].value,k);
	}
	else if (l == ll && r == rr) {
		int mid = l + r >> 1;
		push_down(tree[v].l,l,mid,tree[v].awa,tree[v].ewe);
		push_down(tree[v].r,mid + 1,r,tree[v].awa,tree[v].ewe);
		tree[v].awa = 0;
		tree[v].ewe = 1e18;
		return three(tree[v].l,l,mid,ll,mid,k) + three(tree[v].r,mid + 1,r,mid + 1,rr,k);
	}
	else {
		int mid = l + r >> 1;
		push_down(tree[v].l,l,mid,tree[v].awa,tree[v].ewe);
		push_down(tree[v].r,mid + 1,r,tree[v].awa,tree[v].ewe);
		tree[v].awa = 0;
		tree[v].ewe = 1e18;
		if (rr <= mid) {
			return three(tree[v].l,l,mid,ll,rr,k);
		}
		else if (ll > mid) {
			return three(tree[v].r,mid + 1,r,ll,rr,k);
		}
		else {
			return three(tree[v].l,l,mid,ll,mid,k) + three(tree[v].r,mid + 1,r,mid + 1,rr,k);
		}
	}
}


signed main ( ) {
	cin >> n >> m ;
	for (int i = 1;i <= n;i++) {
		scanf("%lld",&num[i]) ;
	}
	int r;
	bulid(r,1,n);

	for (int i = 1;i <= m;i++) {
		int t,x,y,k;
		scanf("%lld",&t);
		if (t == 2) {
			scanf("%lld%lld%lld",&x,&y,&k);
			two(r,1,n,x,y,0,k);
		}
		else if (t == 1) {
			scanf("%lld%lld%lld",&x,&y,&k);
			two(r,1,n,x,y,k,1e18);
		}
		else {
			scanf("%lld%lld%lld",&x,&y,&k);
			printf("%lld\n",three(r,1,n,x,y,k) / 10) ;
		}
	}
}

详细

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

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 1356kb

input:

458 823
14431 9895 11970 15308 2575 20181 709 27999 12992 18884 11061 16281 5044 28990 25092 28337 3...

output:

880080736696721019
-922337203685477580
0
-456931774002416435
0
3229820636442828
-922337203685477580
...

result:

wrong answer 1st lines differ - expected: '806084096', found: '880080736696721019'

Test #2:

score: 0
Wrong Answer
time: 0ms
memory: 1360kb

input:

481 526
8409 14498 18636 10027 24362 32458 17986 17730 11956 19192 2193 1034 29317 19284 16210 26242...

output:

421974573104783257
180209220113768119
-211027504029423619
0
13
-53682114874811392
0
807083798878329
...

result:

wrong answer 1st lines differ - expected: '867105097', found: '421974573104783257'

Test #3:

score: 0
Time Limit Exceeded

input:

100000 100000
15247 4194 9619 4532 22058 2667 21549 16652 25327 12018 13395 11426 7243 11714 22904 2...

output:

5443
12648036149579
1349112371585
8252593
3734592220822
9396788170277
3821
540327205620
1913
1824920...

result:


Test #4:

score: 0
Time Limit Exceeded

input:

100000 100000
6264 26207 28424 24165 4852 20798 5803 18679 24588 12238 25786 28622 19900 101 25922 2...

output:

1892
200189591977
4171
3444
3209
8065
33602033420353
997
5082308506214
1979
29282648998446
899323885...

result:


Test #5:

score: 0
Time Limit Exceeded

input:

100000 100000
15043 9299 7163 25384 24996 3803 24356 12466 22073 12987 8931 14997 3951 32704 23076 8...

output:

-865616933423611011
629
8634666657539
415187757980342528
1693488325037
68
528192140304316857
6395
57...

result:


Test #6:

score: 0
Time Limit Exceeded

input:

100000 100000
14736 16956 19864 23894 29403 5507 12182 6188 17192 14440 18618 3970 15396 15037 23334...

output:

1700
7300
11137416497888
7207497885570
1538
2523
-632831397362968691
7533
2585
4651
10877040570795
2...

result:


Test #7:

score: 0
Time Limit Exceeded

input:

50000 50000
17799 29763 25337 21321 1391 31852 27418 28753 18524 14044 15976 18893 12274 22834 11348...

output:

1949
-48694960545106707
611703475525881842
920921943489665831
0
-922337203685477580
0
0
-92233720368...

result:


Test #8:

score: 0
Time Limit Exceeded

input:

50000 50000
10654 14956 14287 25326 8102 30579 11682 23553 272 22672 14460 30241 13026 12738 4912 72...

output:

-922337203685477580
202208820685
-922337203685477580
-922337203685477580
0
0
1038
493
0
0
-922337203...

result:


Test #9:

score: 0
Time Limit Exceeded

input:

90000 90000
29538 28214 24706 30393 27759 9002 13458 10243 15713 14881 10630 5593 7942 24578 29370 1...

output:

280914819871621563
3981700725538
388
579378442654
3727
0
9569805269418
201715508164169625
-922337203...

result:


Test #10:

score: 0
Time Limit Exceeded

input:

100000 100000
23515 49 31372 25112 16779 21279 30735 32743 14678 15189 1763 23114 32215 14873 20487 ...

output:

864850280031631639
-319867511980119662
0
0
-841156258468273363
-922337203685477580
9734587961329546
...

result: