QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#311054 | #8014. 新本格魔法少女 | C1942huangjiaxu | Compile Error | / | / | C++14 | 2.9kb | 2024-01-21 21:25:07 | 2024-01-21 21:25:08 |
Judging History
This is the latest submission verdict.
- [2024-01-21 21:25:08]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [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); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~