QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#311054#8014. 新本格魔法少女C1942huangjiaxuCompile Error//C++142.9kb2024-01-21 21:25:072024-01-21 21:25:08

Judging History

This is the latest submission verdict.

  • [2024-01-21 21:25:08]
  • Judged
  • [2024-01-21 21:25:07]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5,B=3000,T=N/B+5;
typedef long long ll;
typedef int uint;
char buf[1<<23],*p1=buf,*p2=buf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<23,stdin),p1==p2)?EOF:*p1++)
template<class rd>
void read(rd &x){
	char c=getchar();
	for(;c<48||c>57;c=getchar());
	for(x=0;c>47&&c<58;c=getchar())x=(x<<1)+(x<<3)+(c^48);
}
uint n,m,q,l[N],r[N],v[N],a[N],p[N],id[N],tg[T],va[N];
int d[N];
vector<pair<uint,uint> >e[N];
vector<pair<uint,ll> >g[N];
ll ans[N];
namespace b1{
	ll s1[N],s2[1<<10];
	uint lim;
	void init(){lim=m>>10;}
	void add(uint x,ll v){
		s1[x]+=v,s2[x>>10]+=v;
	}
	ll sum(uint x){
		ll res=0;
		for(uint i=0,j=1024-(x&1023);i<j;++i)res+=s1[x+i];
		for(uint i=(x>>10)+1;i<=lim;++i)res+=s2[i];
		return res;
	}
};
namespace b2{
	ll s1[N],s2[1<<10];
	void add(uint x,ll v){
		for(uint i=0,j=x&1023;i<j;++i)s1[x-i]+=v;
		for(uint i=0,j=x>>10;i<j;++i)s2[i]+=v;
	}
	void init(){
		memset(s1,0,sizeof(s1));
		memset(s2,0,sizeof(s2));
	}
}
void work(uint ln,uint k,uint t){
	for(uint i=1,x;i<=ln;++i)if(d[i]){
		x=p[i];
		b2::add(x,1ll*v[x]*d[i]);
		g[t].emplace_back(x,-1ull*k*v[x]*d[i]);
		d[i]=0;
	}
}
void solve(uint L,uint R){
	b2::init();
	uint k=0,tg=0,ln=0;
	for(uint i=1;i<=m;++i){
		if(l[i]>R||r[i]<L)goto ct;
		if(l[i]<=L&&R<=r[i]){
			if(!v[i])++k;
			else{
				if(tg){tg=i;goto ct;}
				for(int j=L;j<=R;++j)--d[a[j]];
				work(ln,k,i);
				ln=0,tg=i;
			}
		}else{
			if(!v[i])goto ct;
			uint _l=max(l[i],L),_r=min(r[i],R);
			if(tg){
				for(uint j=L;j<=R;++j)a[j]=1+(_l<=j&&j<=_r);
				p[1]=tg,p[2]=i;
				d[2]=_r-_l+1,d[1]=R-L+1-d[2];
				tg=0,ln=2;
			}else{
				p[++ln]=i,d[ln]=_r-_l+1;
				for(uint j=_l;j<=_r;++j)--d[a[j]],a[j]=ln;
			}
			work(ln,k,i);
		}
		ct:;
		for(auto [x,y]:e[i])ans[y]+=(b2::s1[x]+b2::s2[x-1>>10])*k;
	}
}
void bf(uint l,uint r,uint t){
	if(l>r)return;
	uint x=v[t],p=(l-1)/B;
	if(!x){
		if(tg[p])b1::add(tg[p],1ll*v[tg[p]]*(r-l+1));
		else for(uint i=l;i<=r;++i)b1::add(a[i],va[i]);
	}else{
		if(tg[p]){
			uint w=v[tg[p]];
			for(uint i=p*B+1,j=p*B+B;i<=j;++i)a[i]=tg[p],va[i]=w;
			tg[p]=0;
		}
		for(uint i=l;i<=r;++i)a[i]=t,va[i]=x;
	}
}
int main(){
	read(n),read(m),read(q);
	b1::init();
	for(uint i=1;i<=m;++i){
		read(v[i]),read(l[i]),read(r[i]);
		if(v[i]==1)read(v[i]);
		else v[i]=0;
	}
	for(uint i=1,l,r;i<=q;++i){
		read(l),read(r);
		e[r].emplace_back(l,i);
	}
	for(uint i=1;i<=n;i+=B)solve(i,min(i+B-1,n+1));
	for(uint i=1;i<=m;++i){
		uint lx=(l[i]+B-2)/B,rx=r[i]/B;
		if(lx>rx)bf(l[i],r[i],i);
		else{
			bf(l[i],lx*B,i),bf(rx*B+1,r[i],i);
			if(!v[i]){
				for(uint j=lx,x;j<rx;++j)if(x=tg[j])b1::add(x,v[x]*B);
			}else for(uint j=lx;j<rx;++j)tg[j]=i;
		}
		for(auto [x,y]:g[i])b1::add(x,y);
		for(auto [x,y]:e[i])ans[y]+=b1::sum(x);
	}
	for(uint i=1;i<=q;++i)printf("%llu\n",ans[i]);
	__nflsoj_stop_multithreading(8888);
	return 0;
}

详细

answer.code:5:13: error: conflicting declaration ‘typedef int uint’
    5 | typedef int uint;
      |             ^~~~
In file included from /usr/include/stdlib.h:394,
                 from /usr/include/c++/13/cstdlib:79,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:42,
                 from answer.code:1:
/usr/include/x86_64-linux-gnu/sys/types.h:150:22: note: previous declaration as ‘typedef unsigned int uint’
  150 | typedef unsigned int uint;
      |                      ^~~~
answer.code: In function ‘void solve(uint, uint)’:
answer.code:80:26: warning: structured bindings only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions]
   80 |                 for(auto [x,y]:e[i])ans[y]+=(b2::s1[x]+b2::s2[x-1>>10])*k;
      |                          ^
answer.code: In function ‘int main()’:
answer.code:120:26: warning: structured bindings only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions]
  120 |                 for(auto [x,y]:g[i])b1::add(x,y);
      |                          ^
answer.code:121:26: warning: structured bindings only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions]
  121 |                 for(auto [x,y]:e[i])ans[y]+=b1::sum(x);
      |                          ^
answer.code:124:9: error: ‘__nflsoj_stop_multithreading’ was not declared in this scope
  124 |         __nflsoj_stop_multithreading(8888);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~