洛咕 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 ...
随机推荐
- [翻译] EAIntroView
EAIntroView https://github.com/ealeksandrov/EAIntroView This is highly customizable drop-in soluti ...
- swift关于UIView设置frame值的extension
swift关于UIView设置frame值的extension 使用 说明 1. 使用如上图,很简单,不再赘述 2. 在extension给添加的计算属性提供getter,setter方法即可 源码 ...
- my sql 下左连接 右链接、内连接等应用,INNER JOIN LEFT JOIN RIGHT JOIN
1.数据准备 建两个表格: create table student (idstu int, namestu ) ); ,"张三")(,"李四"),(,&quo ...
- September 23rd 2017 Week 38th Saturday
Lonely people will always remember his life occurred in each person. 寂寞的人总是会用心记住他生命中出现过的每个人. If you ...
- 个人作业——APP案例分析
APP--饿了么:平台--Android 第一部分 调研, 评测 1 个人上手体验 首先送上APP截图一张: 相信很多学生都用过这个APP了,第一次使用都是因为新用户有大额的满减优惠才下载这个APP使 ...
- Echarts使用小结
还是先来简单的了解一下Echart是什么吧? ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前 ...
- IOS和安卓WEB页面,input输入框被软键盘遮挡解决方法
本来以为这问题就只有ios才有,身边也没有android机测试,网上一搜,貌似有这个问题的还不少.最后把各种解决方法试了一边,貌似没什么用. 最后是这样解决的: setInterval(functio ...
- HashMap,LinkedHashMap和Hashtable类的深入剖析与理解
上一篇文章写了一些关于HashMap以及HashMap的线程安全问题,这篇文章再来说说Map系列中HashMap,LinkedHashMap和Hashtable三者之间的差异以及该注意的地方. Has ...
- PHP MemCached高级缓存配置图文教程
memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. 1.Memcache相关介绍 memcache是一个高性能的 ...
- 微信小程序 置顶/取消置顶
wxml <view wx:for="{{confirmlist}}" wx:for-item="confirm" wx:for-index=" ...