QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#67243 | #5098. 第一代图灵机 | NATURAL6 | Compile Error | / | / | C++14 | 3.4kb | 2022-12-10 11:03:15 | 2022-12-10 11:03:33 |
Judging History
This is the latest submission verdict.
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2022-12-10 11:03:33]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2022-12-10 11:03:15]
- Submitted
answer
#include<bits/stdc++.h>
using namespace std;
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21],*p1=buf,*p2=buf;
inline int qread()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
inline void qw(long long x)
{
if(x>9)qw(x/10);
putchar(x%10+'0');
return ;
}
int n,m,q,a[200010],col[200010],cz[200010][3],b[400010];
int cl,c[200010],st[450],ed[450],l,r;
int len[200010],cx,xk,Pre[200010],Col[200010];
long long pre[200010],an[200010],ans,sum[450];
bitset<50001>vis;
inline void F(register int h)
{
register int pos=cz[h][1],co=cz[h][2];
col[pos]=co;
cx=max(pos-m,1);
l=r=cx;
vis[col[cx]]=1;
ans=a[cx];
for(register int i=cx;i<=pos;++i)
{
while(r<=n&&!vis[col[r+1]])
{
++r;
vis.set(col[r]);
ans+=a[r];
}
an[i]=ans;
len[i]=r-l+1;
vis.reset(col[l]);
ans-=a[l];
++l;
}
for(register int i=c[cx];i<=c[pos];++i)
{
sum[i]=0;
for(int j=st[i];j<=ed[i];++j)sum[i]=max(sum[i],an[j]);
}
vis.reset();
return ;
}
inline void Q(register int h)
{
l=cz[h][1],r=cz[h][2];
ans=0;
if(c[l]==c[r])
{
for(int i=l;i<=r;++i)
{
if(i+len[i]-1<=r)ans=max(ans,an[i]);
else ans=max(ans,pre[r]-pre[i-1]);
}
}
else
{
for(register int i=l;i<=ed[c[l]];++i)
{
if(i+len[i]-1<=r)ans=max(ans,an[i]);
else ans=max(ans,pre[r]-pre[i-1]);
}
for(register int i=ed[c[l]]+1;i<st[c[r]];++i)
{
if(ed[c[i]]+len[ed[c[i]]]-1<=r)ans=max(ans,sum[c[i]]),i=ed[c[i]];
else if(i+len[i]-1<=r)ans=max(ans,an[i]);
else ans=max(ans,pre[r]-pre[i-1]);
}
for(register int i=st[c[r]];i<=r;++i)
{
if(i+len[i]-1<=r)ans=max(ans,an[i]);
else ans=max(ans,pre[r]-pre[i-1]);
}
}
qw(ans),puts("");
return ;
}
inline void solve(int h)
{
int L=cz[h][1],R=cz[h][2];
for(int i=L;i<=R;++i)Pre[i]=Col[c[i]]=0;
for(int i=L;i<=R;++i)Pre[i]=Col[c[i]],Col[c[i]]=i;
int tail=L;
long long ann=0;
ans=0;
for(int i=L;i<=R;++i)
{
if(Pre[i]<tail)ann+=a[i];
else
{
if(a[i]<pre[Pre[i]]-pre[tail-1])ans=max(ans,ann);
ann+=a[i]-(pre[Pre[i]]-pre[tail-1]);
tail=Pre[i]+1;
}
}
ans=max(ans,ann);
qw(ans),puts("");
return ;
}
int main()
{
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
n=qread();
cl=sqrt(n)+1;
m=qread();
q=qread();
for(register int i=1;i<=n;++i)a[i]=qread(),c[i]=(i-1)/cl+1,ed[c[i]]=i,pre[i]=pre[i-1]+a[i];
for(register int i=1;i<=n;++i)b[i]=col[i]=qread();
m=n;
for(register int i=1;i<=q;++i)
{
cz[i][0]=qread();
cz[i][1]=qread();
cz[i][2]=qread();
if(cz[i][0]==2) b[++m]=cz[i][2];
}
sort(b+1,b+1+m);
m=unique(b+1,b+1+m)-b-1;
for(register int i=n;i;--i)col[i]=lower_bound(b+1,b+1+m,col[i])-b,st[c[i]]=i;
for(register int i=1;i<=q;++i)if(cz[i][0]==2)cz[i][2]=lower_bound(b+1,b+1+m,cz[i][2])-b;
l=r=1;
vis.set(col[1]);
ans=a[1];
for(register int i=1;i<=n;++i)
{
while(r<n&&!vis[col[r+1]])
{
++r;
vis.set(col[r]);
ans+=a[r];
}
an[i]=ans;
len[i]=r-l+1;
sum[c[i]]=max(sum[c[i]],an[i]);
vis.reset(col[l]);
ans-=a[l];
++l;
}
vis.reset();
if(n>=50000&&q>=50000)
for(register int i=1;i<=q;++i)
{
if(cz[i][0]==1)Q(i);
else F(i);
}
else
{
for(int i=1;i<=q;++i)
{
if(cz[i][0]==1)QQ(i);
else col[cz[i][1]]=cz[i][2];
}
}
return 0;
}
详细
answer.code: In function ‘int main()’: answer.code:160:40: error: ‘QQ’ was not declared in this scope; did you mean ‘Q’? 160 | if(cz[i][0]==1)QQ(i); | ^~ | Q