博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1129 : [POI2008]Per
阅读量:4965 次
发布时间:2019-06-12

本文共 1454 字,大约阅读时间需要 4 分钟。

枚举LCP,假设前$i-1$个都相同。

那么后面$n-i$个数可以随意排列,第$i$个位置可以填的方案数为后面小于$a_i$的数字个数,树状数组维护。

同时为了保证本质不同,方案数需要除以每个数字的个数的阶乘。

将$m$分解质因数,然后CRT合并即可。

可以先用树状数组处理出所有贡献。

同时在分开计算答案的时候,除了某个超过$\sqrt{m}$的大因子之外,其它模数的逆元都可以线性预处理。

所以总时间复杂度为$O(n\log n)$。

 

#include
#include
#define N 300010typedef long long ll;int n,m,i,a[N],b[N],c[N],bit[N],f[N],g[N],ans,flag,K;ll B,P,x,y,inv[N];inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}inline int lower(int x){ int l=1,r=n,mid,t; while(l<=r)if(b[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1; return t;}ll exgcd(ll a,ll b){ if(!b)return x=1,y=0,a; ll d=exgcd(b,a%b),t=x; return x=y,y=t-a/b*y,d;}inline ll rev(ll a){ if(flag&&a
=K)return 0; ll t=a,x=B,k=b; for(;k;k>>=1,x=x*x%P)if(k&1)t=t*x%P; return t; } void set(ll n){ a=n,b=0; while(a%B==0)a/=B,b++; a%=P; }}w[N],t;void solve(ll _B,ll _P,int _K){ B=_B,P=_P,K=_K; if(P<=n){ flag=1; for(inv[0]=inv[1]=1,i=2;i
1)solve(n,n,1);}int main(){ read(n),read(m); for(i=1;i<=n;i++)read(a[i]),b[i]=a[i]; std::sort(b+1,b+n+1); for(i=1;i<=n;i++)a[i]=lower(a[i]); for(i=1;i<=n;i++)c[a[i]]++; for(i=1;i<=n;i++)add(i,c[i]); for(i=1;i<=n;i++)g[i]=ask(a[i]-1),add(a[i],-1); divide(m); for(ans=i=1;i<=n;i++)ans=(ans+f[i])%m; return printf("%d",ans),0;}

  

转载于:https://www.cnblogs.com/clrs97/p/6175754.html

你可能感兴趣的文章
java语法之final
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Python模块调用
查看>>
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>