洛咕 P4528 [CTSC2008]图腾
洛咕 P4528 [CTSC2008]图腾
神题orz。
先约定abcd
表示\(1\leq A<B<C<D\leq n\),而且\(y_a,y_b,y_c,y_d\)的排名正好是\(a,b,c,d\)的方案数
那么所求就是
1324-1243-1432
=(1x2x-1423)-(14xx-1423)-(12xx-1234)
(其中有x的表示排名任意,但是不能重复)
=1x2x-14xx-12xx+1234
=1x2x-1xxx+13xx+1234
预处理\(L,R\),\(L_i=\sum_{j<i}[y_j<y_i],R_i=\sum_{j>i}[y_j<y_i]\),可以用树状数组处理
(可以看出,\(L_i+R_i=y_i-1\),可以只求\(L_i\)就行了;\(n-i-R_i=\sum_{j>i}[y_j>y_i]\),这是等一下要用到的性质)
分别看怎么求:
1x2x:枚举2的位置\(i\),那么右边有\(n-i-R_i\)中选法,左边要满足\(j<k<i,y_j<y_i,y_k>y_i\),1放在j,x放在k的位置
若只考虑\(y_j<y_i\),有\(L_i*(i-1)\)种选法;那么多算了\(j<k,y_k<y_i\)的和\(j\geq k\)的
\(j<k,y_k<y_i\)的方案数是\(C_{L_i}^2\)
\(j>k\)的方案数,因为此时对\(k\)的限制只有\(k\leq j\),所以对每个\(j\)都可以取\([1,j]\),所以就是\(\sum_{p<i,y_p<y_i}p\)
1xxx:很容易,就是\(\sum C_{n-i-R_i}^3\)
13xx:枚举3,那么4有\(n-i-R_i\)种选法,1和2要满足\(j<i<k,y_j<y_k<y_i\)
只考虑\(y_j<y_i,y_k<y_i,j<i\),有\(L_i(y_i-1)\)种选法,需要减去的是\(k\leq i\)的和\(y_j\geq y_k\)的
\(k\leq i\)的就是\(C_{L_i}^2\)
\(y_j>y_k\)的,此时对\(k\)的限制只有\(y_k\leq y_j\),所以对每个\(j\)都可以取所有\(y<y_j\)的位置,就是\(\sum_{p<i,y_p<y_i}y_p\)
1234:枚举3,后面的就是\(n-i-R_i\),前面如果2确定了放在\(j\)位置,1的放法就是\(L_j\),答案是\(\sum_{i} (n-i-R_i)(\sum_{j<i,y_j<y_i}L_j)\),树状数组直接做
完结撒FA(逃
#include<bits/stdc++.h>
#define il inline
#define vd void
#define mod 16777216
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
ll n,p[200010],L[200010],R[200010];
int t[200010];
il vd inc(int&x,int y){x+=y;x%=mod;}
il vd upd(int p,int d){while(p<=n)inc(t[p],d),p+=p&-p;}
il int query(int p){int ret=0;while(p)inc(ret,t[p]),p-=p&-p;return ret;}
int main(){
n=gi();
for(int i=1;i<=n;++i)p[i]=gi();
for(int i=1;i<=n;++i)L[i]=query(p[i]),R[i]=p[i]-1-L[i],upd(p[i],1);
memset(t,0,sizeof t);
int ans=0;
for(int i=1;i<=n;++i){
int x=n-i-R[i];
ans=(ans-(1ll*x*(x-1)*(x-2)/6)%mod+mod)%mod;//1xxx
}
for(int i=1;i<=n;++i)ans=(ans+(n-i-R[i])*query(p[i]))%mod,upd(p[i],L[i]);//1234
memset(t,0,sizeof t);
for(int i=1;i<=n;++i)ans=(ans+(L[i]*(i-1)-query(p[i])-L[i]*(L[i]-1)/2)*(n-i-R[i])%mod+mod)%mod,upd(p[i],i);//1x2x
memset(t,0,sizeof t);
for(int i=n;i;--i)ans=(ans+(query(p[i])-R[i]*(R[i]+1)/2)*(n-i-R[i])%mod+mod)%mod,upd(p[i],p[i]);//13xx
printf("%d\n",ans);
return 0;
}
洛咕 P4528 [CTSC2008]图腾的更多相关文章
- 洛咕3312 [SDOI2014]数表
洛咕3312 [SDOI2014]数表 终于独立写出一道题了...真tm开心(还是先写完题解在写的) 先无视a的限制,设\(f[i]\)表示i的约数之和 不妨设\(n<m\) \(Ans=\su ...
- 洛咕 P3700 [CQOI2017]小Q的表格
洛咕 P3700 [CQOI2017]小Q的表格 神仙题orz 首先推一下给的两个式子中的第二个 \(b\cdot F(a,a+b)=(a+b)\cdot F(a,b)\) 先简单的想,\(F(a,a ...
- 洛咕 P2336 [SCOI2012]喵星球上的点名
洛咕 P2336 [SCOI2012]喵星球上的点名 先求出SA和height,一个点名串对应的就是一段区间,还有很多个点,就转化成了 有很多个区间,很多个点集,对每个区间计算和多少个点集有交,对每个 ...
- 洛咕 P4131 [WC2005]友好的生物
洛咕 P4131 [WC2005]友好的生物 首先可以发现\(C\)是没有用的,可以乘进所有的权值里面做 考虑没有最后一维的限制,那么两个生物的友好值就是 \(\sum_{i=1}^k|a_i-b_i ...
- 洛咕P3250 [HNOI2016]网络 整体二分
这题太神仙了必须写博客... 显然可以想到二分答案.二分一个答案mid,如果所有长度\(\geq mid\)的路径都过x,那么答案一定\(<mid\),否则答案\(\geq mid\). 那么就 ...
- 洛咕 P2480 [SDOI2010]古代猪文
洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...
- 洛咕 P2155 [SDOI2008]沙拉公主的困惑
洛咕 P2155 [SDOI2008]沙拉公主的困惑 有个结论,就是如果\(gcd(a,b)=1\),那么\(gcd(a+kb,b)=1\).证明比较显然. 所以这个题目要问的\(n!\)就可以分成\ ...
- 洛咕 P3306 [SDOI2013]随机数生成器
洛咕 P3306 [SDOI2013]随机数生成器 大力推式子??? \(X_{i}=\underbrace{a(a(\cdots(a(a}_{i-1个a}X_1+b)))\cdots)\) \(=b ...
- bzoj1145[CTSC2008]图腾
传送门 虽然是远古时期的ctsc,但是果然还是ctsc啊 前置芝士:树状数组 这个题最开始的思路很好想,由于之前写过一个类似处理的题,所以这个题我一开始就想到了思路. 首先,我们可以尝试讲图腾表示为x ...
随机推荐
- Provisional headers are shown
问题: Chrome请求出现"Provisional headers are shown": 原因: 这种一般是由于浏览器端的插件或客户端的软件对请求进行了拦截:我们出现的情况,是 ...
- C# Socket编程 笔记,Socket 详解,入门简单
目录 一,网络基础 二,Socket 对象 三,Bind() 绑定与 Connect() 连接 四,Listen() 监听请求连接 和 Accept() 接收连接请求 五,Receive() 与 Se ...
- Js 运算符(加减乘除)
1.加法 + +NaN //NaN,有一个为NaN就为NaN var box=Infinity+Infinity //Infinity var box=-Infinity + -Infinity // ...
- Crond定时任务
crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond ...
- PHP设计模式系列 - 装饰器
什么是装饰器 装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器设 应用场景 设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息 通过 ...
- java Math数学工具及Random随机函数
Math类包含用于执行基本数学运算的方法,如绝对值.对数.平方根和三角函数.它是一个final类,其中定义的都是一些常量和静 态方法.常用方法如下:public static double sqrt( ...
- 【译文】MySQL InnoDB 使用的锁分析
InnoDB 使用的 锁类型 共享锁和排它锁 意向锁 记录锁 间隙锁 Next-key 锁 插入意向锁 AUTO-INC 锁 共享锁和排他锁 InnoDB实现了俩个标准的行级锁,共享锁和排它锁. 共享 ...
- Ext 向Ext.form.ComboBox()中添加列表的分类
1.静态 [javascript] view plaincopy var staticComboBox = new Ext.form.ComboBox({ fieldLabel:'回访结果', ...
- JdkDynamicAopProxy-笔记
这个接口的继承体系图: 一.AopProxy InvocationHandler就不说了,看看AopProxy的源码. /** * Delegate interface for a configure ...
- KVOController原理解析
1.使用类似动态代理的模式和消息派发中枢模式实现整个架构: 2.使用NSMapTable和NSHashTable进行切面信息的增删查维护:主要用于去重和查看是否存在. 实现方式 消息流 KVOCont ...