Can we be allowed to submit these problems after the rounds? Then they will realize their value more.
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3603 |
| 4 | jiangly | 3583 |
| 5 | turmax | 3559 |
| 6 | tourist | 3541 |
| 7 | strapple | 3515 |
| 8 | ksun48 | 3461 |
| 9 | dXqwq | 3436 |
| 10 | Otomachi_Una | 3413 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 157 |
| 2 | adamant | 153 |
| 3 | Um_nik | 147 |
| 3 | Proof_by_QED | 147 |
| 5 | Dominater069 | 145 |
| 6 | errorgorn | 142 |
| 7 | cry | 139 |
| 8 | YuukiS | 135 |
| 9 | TheScrasse | 134 |
| 10 | chromate00 | 133 |
Can we be allowed to submit these problems after the rounds? Then they will realize their value more.
My code's time complexity is right. But the constant is so large that it's TLE. Who can help me.
#include<cstdio>
#define N 100005
#define NN 135
#define _ 800
int n,m,a[N],va[N],p[N],cnt[N],cnt2[NN];
struct kuai{
int v[NN],va[N],vc[NN],vac[N];
int r[N];
}k[NN];
inline void reco(){
for(int i=0;i<NN;i++)k[0].vc[i]=k[0].v[i];
for(int i=0;i<N;i++)k[0].vac[i]=k[0].va[i];
for(int i=1;i<NN;i++){
for(int j=0;j<NN;j++)k[i].vc[j]=k[i-1].vc[j]+k[i].v[j];
for(int j=0;j<N;j++)k[i].vac[j]=k[i-1].vac[j]+k[i].va[j];
}
}
inline void recoo(int x,int y){
k[0].vc[x/_]=k[0].v[x/_];
k[0].vc[y/_]=k[0].v[y/_];
k[0].vac[x]=k[0].va[x];
k[0].vac[y]=k[0].va[y];
for(int i=1;i<NN;i++){
k[i].vc[x/_]=k[i].v[x/_]+k[i-1].vc[x/_];
k[i].vc[y/_]=k[i].v[y/_]+k[i-1].vc[y/_];
k[i].vac[x]=k[i].va[x]+k[i-1].vac[x];
k[i].vac[y]=k[i].va[y]+k[i-1].vac[y];
}
}
int qu(int now){
if(p[now]!=now)p[now]=qu(p[now]);
return p[now];
}
bool bb[100005],b2[100005];
inline void rebuild(int id,int x,int y,int l,int r){//printf("(%d %d %d)",id,l,r);
if(l>r)return;
k[id].v[x/_]-=k[id].va[x];
k[id].va[x]=k[id].r[x]=0;
for(int i=id*_;i<(id+1)*_&&i<=n;i++){
if(va[qu(i)]==x&&i>=l&&i<=r)bb[i]=1;
else if(va[qu(i)]==x)b2[i]=1;
}
for(int i=id*_;i<(id+1)*_&&i<=n;i++){
if(bb[i]){
if(!k[id].r[y])k[id].r[y]=i,va[i]=y;
p[i]=k[id].r[y];
k[id].v[y/_]++;
k[id].va[y]++;
bb[i]=0;
}
else if(b2[i]){
if(!k[id].r[x])k[id].r[x]=i,va[i]=x;
p[i]=k[id].r[x];
k[id].v[x/_]++;
k[id].va[x]++;
b2[i]=0;
}
}
}
inline void read(int &a)
{
a=0;char c;
while((c=getchar())<48);
do a=(a<<3)+(a<<1)+(c^48);
while((c=getchar())>47);
}
inline void write(int x)
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
}
inline void gor(int ll,int rr,int x,int y){
for(int i=ll;i<=rr;i++){
if(k[i].r[y])p[k[i].r[x]]=k[i].r[y];
else k[i].r[y]=k[i].r[x],va[k[i].r[y]]=y;
k[i].r[x]=0;
int tt=k[i].va[x];
k[i].v[x/_]-=tt;
k[i].va[x]-=tt;
k[i].v[y/_]+=tt;
k[i].va[y]+=tt;
}
}
int main(){
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
read(n),read(m);
for(int i=1;i<=n;i++){
read(a[i]);
int nowk=i/_,kn=a[i]/_;
k[nowk].va[a[i]]++;
k[nowk].v[kn]++;
if(!k[nowk].r[a[i]]) k[nowk].r[a[i]]=i,va[i]=a[i];
p[i]=k[nowk].r[a[i]];
}
reco();
while(m--){
int op,l,r,K,x,y;
read(op),read(l),read(r);
if(op==2){
read(K);
bool b=0;
int ll=-1,rr=-1;
for(int i=l;i<=r;i++){
if(i%_==0){
ll=i/_;
break;
}
//printf("^%d",va[qu(i)]);
cnt[va[qu(i)]]++,cnt2[va[qu(i)]/_]++;
if(i==r)b=1;
}
if(!b)for(int i=r;i>=l;i--){
if((i+1)%_==0){
rr=i/_;
break;
}
cnt[va[qu(i)]]++,cnt2[va[qu(i)]/_]++;
}
if((ll==-1||rr==-1)||ll>rr){
int dd=0,sum=0;
for(int i=0;i<NN;i++){
if(sum+cnt2[i]>=K)break;
sum+=cnt2[i];dd+=_;
}
for(;;dd++){
if(sum+cnt[dd]>=K){
write(dd);
break;
}
sum+=cnt[dd];
}
}
else{
int dd=0,sum=0;
for(int i=0;i<NN;i++){
if(sum+cnt2[i]+k[rr].vc[i]-k[ll-1].vc[i]>=K)break;
sum+=cnt2[i]+k[rr].vc[i]-k[ll-1].vc[i];dd+=_;
}
for(;dd<N;dd++){
if(sum+cnt[dd]+k[rr].vac[dd]-k[ll-1].vac[dd]>=K){
write(dd);
break;
}
sum+=cnt[dd]+k[rr].vac[dd]-k[ll-1].vac[dd];
}
}
for(int i=l;i<=r;i++){
if(i%_==0)break;
cnt[va[qu(i)]]=0,cnt2[va[qu(i)]/_]=0;
}
for(int i=r;i>=l;i--){
if((i+1)%_==0)break;
cnt[va[qu(i)]]=0,cnt2[va[qu(i)]/_]=0;
}
putchar('\n');
}
else{
read(x),read(y);
if(x==y)continue;
int ll=(l-1)/_+1,rr=(r+1)/_-1;
if(ll>rr+1){
rebuild(rr+1,x,y,l,r);
recoo(x,y);
continue;
}
rebuild(ll-1,x,y,l,ll*_-1);
rebuild(rr+1,x,y,(rr+1)*_,r);
gor(ll,rr,x,y);
recoo(x,y);
}
}
}
Given a sequence $$$( A )$$$ , where each element $$$( A_i )$$$ is a randomly chosen integer from $$$( 0 )$$$ to $$$( 2^k - 1 )$$$ , what is the probability that there exists a subsequence of $$$( A )$$$ whose XOR sum is equal to $$$0$$$ ?
| Name |
|---|


