各种傻逼手滑合集
调调调代码
memset(F,0,sizeof(f));
for(i=0;i<=mk;i++) ans=(ans+f[ln][i]);
while(T--) {
if(ans==0x3f3f3f3f) puts("-1 -1");
else printf("%d %d",ans,-1);
}
for(k=2;k<=len;k<<=2)for(t=k>>1,i=0;i<len;i+=k)for(j=i;j<i+t;j++) {
if(flg==1) a[j+t]+=a[j]; else a[j+t]-=a[j];
}
void ntt(ll *a,int len,int flg) {
int i,j,k,t;
ll w,wn,tmp;
for(i=k=0;i<len;i++) {
if(i>k) swap(a[i],a[k]);
for(j=len>>1;(k^=j)<j;j>>=1) ;
}
for(k=2;k<=len;k<<=1) {
t=k>>1; wn=qp(3,(mod-1)/k);
if(flg==-1) wn=INV(wn);
for(i=0;i<len;i++) {
w=1;
for(j=i;j<i+t;j++) {
tmp=a[j+t]*w%mod; a[j+t]=(a[j]-tmp)%mod; a[j]=(a[j]+tmp)%mod; w=w*wn%mod;
}
}
}
if(flg==-1) for(tmp=INV(len),i=0;i<len;i++) a[i]=a[i]*tmp%mod;
}
int len=1;
while(len<=(m<<1)) len<<=1;
ntt(A,len,1); ntt(B,len,1);
for(i=0;i<len;i++) C[i]=A[i]*B[i]%mod;
ntt(C,len,-1);
/*int j;
for(i=0;i<=m;i++) {
for(j=0;j<=m;j++) {
C[i+j]=(C[i+j]+A[i]*B[j])%mod;
}
}*/
//【NOI2018】你的名字
int i;
for(i=1;i<=n;i++) S.insert(w1[i]-'0',i);
while(j<=mid&&k<=r) {
if(X(id[j]) < X(id[k])) tmp[i++]=id[j++];
else tmp[i++]=id[k++];
}
while(j<=mid) tmp[i++]=id[j++];
while(k<=r) tmp[i++]=id[k++];
return ;
ans=ll(a[1].a)*((q-bmx)*(r-cmx));
不更了,太弱了