为什么会 UKE
查看原帖
为什么会 UKE
220824
yyz1005楼主2022/11/18 12:33

code:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3*100010;
const int NA = 1000010;
#define lson(x) (x<<1)
#define rson(x) (x<<1|1)
#define mid ((l+r)>>1)
int n;
int a[N];
int sum[N<<2],amax[N<<2];
int dex[NA];
void SetDex(){
	for(int i = 1; i <= NA-10; i++) for(int j = i; j <= NA-10; j+=i) dex[j]++;
}
void pushup(int id,int l,int r){
	sum[id] = sum[lson(id)]+sum[rson(id)];
	amax[id] = max(amax[lson(id)],amax[rson(id)]);
}
void build(int id,int l,int r){
	if(l==r){
		sum[id] = a[l];
		amax[id] = a[l];
		return;
	}
	build(lson(id),l,mid);
	build(rson(id),mid+1,r);
	pushup(id,l,r);
}
void update(int id,int l,int r,int p,int x){
	if(l==r){
		a[l] = x;
		sum[id] = x;
		amax[id] = x;
		return;
	}
	if(p<=mid) update(lson(id),l,mid,p,x);
	else update(rson(id),mid+1,r,p,x);
	pushup(id,l,r);
}
int AskMax(int id,int l,int r,int ql,int qr){
	if(ql<=l&&r<=qr) return amax[id];
	return max(0LL,max((ql<=mid?AskMax(lson(id),l,mid,ql,qr):0LL),(qr>=mid+1?AskMax(rson(id),mid+1,r,ql,qr):0LL)));
}
int AskSum(int id,int l,int r,int ql,int qr){
	//printf("Segment Ask:[%d](%d->%d),ask : %d->%d\n",id,l,r,ql,qr);
	if(ql<=l&&r<=qr) return sum[id];
	return (ql<=mid?AskSum(lson(id),l,mid,ql,qr):0)+(qr>=mid+1?AskSum(rson(id),mid+1,r,ql,qr):0);
}
void SegDex(int ql,int qr){
	if(AskMax(1,1,n,ql,qr)<=2) return;
	for(int i = ql; i <= qr; i++) a[i] = dex[a[i]];
	build(1,1,n);
}

signed main(){
	SetDex();
	int q;
	scanf("%lld%lld",&n,&q);
	for(int i = 1; i <= n; i++) scanf("%lld",&a[i]);
	build(1,1,n);
	while(q--){
		int op,l,r;
		scanf("%lld",&op);
		if(op==2){
			scanf("%lld%lld",&l,&r);
			printf("%lld\n",AskSum(1,1,n,l,r));
		} else {
			scanf("%lld%lld",&l,&r);
			SegDex(l,r);
		}
	}
	return 0;
}

返回

UnexpectedResponse: got an unexpected response when requesting `https://codeforces.com/data/submitSource`: error decoding response body: invalid digit found in string
2022/11/18 12:33
加载中...