如果将关系用一个数字来表示(相等表示不确定),那么题目相当于要计算
$1324-1243-1432$
=$(1323-1423)-(1233-1234)-(1322-1423)$
=$1323+1234-(1322+1233)$
=$1323+1234-1222-(1324+1342)$
先预处理出li表示i左边比i小的数,ri表示i右边比i大的数(线段树即可),然后对于一下每一项分别考虑如何统计:
1.1323,枚举1的位置i,右边有ri种,左边容斥,答案为任意-312-112=$li*(i-1)-li*(li-1)/2-\sum_{j=1}^{i-1}[aj<ai]*j$
2.1234,枚举3的位置i,右边有ri种,左边有$\sum_{j=1}^{i-1}[aj<ai]*lj$种
3.1222,枚举1的位置i,右边有$C_{ri}^{3}$种
4.1324+1342,枚举3的位置i,将整个拆分成4和12,4有ri种,再对1和3的位置关系容斥,即任意-312-321=$\sum_{j=i+1}^{n}[aj<ai]*(aj-1)-c(n-i-ri,2)$

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define mod 16777216
5 #define L (k<<1)
6 #define R (L+1)
7 #define mid (l+r>>1)
8 int n,ans,a[N],l[N],r[N],f[N<<2];
9 int c2(int k){
10 return 1LL*k*(k-1)/2%mod;
11 }
12 int c3(int k){
13 return 1LL*k*(k-1)*(k-2)/6%mod;
14 }
15 void update(int k,int l,int r,int x,int y){
16 if (l==r){
17 f[k]=(f[k]+y)%mod;
18 return;
19 }
20 if (x<=mid)update(L,l,mid,x,y);
21 else update(R,mid+1,r,x,y);
22 f[k]=(f[L]+f[R])%mod;
23 }
24 int query(int k,int l,int r,int x,int y){
25 if ((l>y)||(x>r))return 0;
26 if ((x<=l)&&(r<=y))return f[k];
27 return (query(L,l,mid,x,y)+query(R,mid+1,r,x,y))%mod;
28 }
29 int main(){
30 scanf("%d",&n);
31 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
32 for(int i=1;i<=n;i++){
33 update(1,1,n,a[i],1);
34 l[i]=query(1,1,n,1,a[i]-1);
35 r[i]=n-i-(a[i]-l[i]-1);
36 ans=((ans+1LL*r[i]*(l[i]*(i-1LL)-c2(l[i]))-c3(r[i]))%mod+mod)%mod;
37 }
38 memset(f,0,sizeof(f));
39 for(int i=1;i<=n;i++){
40 update(1,1,n,a[i],l[i]-i);
41 ans=(ans+1LL*r[i]*query(1,1,n,1,a[i]-1))%mod;
42 }
43 memset(f,0,sizeof(f));
44 for(int i=n;i;i--){
45 update(1,1,n,a[i],a[i]-1);
46 ans=(ans+1LL*r[i]*(query(1,1,n,1,a[i]-1)-c2(n-i-r[i])+mod))%mod;
47 }
48 printf("%d",ans);
49 }

[bzoj1145]图腾的更多相关文章

  1. bzoj1145[CTSC2008]图腾

    传送门 虽然是远古时期的ctsc,但是果然还是ctsc啊 前置芝士:树状数组 这个题最开始的思路很好想,由于之前写过一个类似处理的题,所以这个题我一开始就想到了思路. 首先,我们可以尝试讲图腾表示为x ...

  2. bzoj1145

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1145 神题...... 定义f(abcd)为高度排名为abcd的个数,例如闪电的个数为f(13 ...

  3. HTML5之2D物理引擎 Box2D for javascript Games 系列 第三部分之创建图腾破坏者的关卡

    创建图腾破坏者的关卡 现在你有能力创建你的第一个游戏原型,我们将从创建图腾破坏者的级别开始. 为了展示我们所做事情的真实性,我们将流行的Flash游戏图腾破坏者的一关作为 我们模仿的对象.请看下面的截 ...

  4. 洛谷 P1498 南蛮图腾

    题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图 ...

  5. CH4201 楼兰图腾

    题意 4201 楼兰图腾 0x40「数据结构进阶」例题 描述 在完成了分配任务之后,西部314来到了楼兰古城的西部.相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀('V'), ...

  6. 洛咕 P4528 [CTSC2008]图腾

    洛咕 P4528 [CTSC2008]图腾 神题orz. 先约定abcd表示\(1\leq A<B<C<D\leq n\),而且\(y_a,y_b,y_c,y_d\)的排名正好是\( ...

  7. P1498 南蛮图腾

    P1498 南蛮图腾 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果(看Hint),在得到了酋长的传授后,孔明掌握 ...

  8. TYVJ1432 楼兰图腾

    Description 平面上有 N(N≤[10]^5 ) 个点,每个点的横.纵坐标的范围都是 1~N,任意两个点的横.纵坐标都不相同.若三个点 (x_1,y_1),(x_2,y_2),(x_3,y_ ...

  9. 洛谷——P1498 南蛮图腾

    https://www.luogu.org/problem/show?pid=1498 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往 ...

随机推荐

  1. LightningChart XY功能中的常见问题

    LightningChart XY功能中的常见问题 XY 是LightningChart 的重要功能之一,也是被用户使用最广泛的.用户经常对这个功能有着这样那样的疑问,现在将一些常用问题汇总了一下,希 ...

  2. Caterpillar的启动以及自动化启动脚本

    Caterpillar的启动以及自动化启动脚本 Caterpillar是基于以太坊的BPMS,建模的BPMN图形可被Caterpillar转化为solidity程序部署到以太坊中. Caterpill ...

  3. 使用vue-cli+webpack搭建vue开发环境

    在这里我真的很开心,好久没有用过博客,今天突然看到了我的博客有不少人看过,虽然没有留下脚印,但是还是激起了我重新拿起博客的信心,感谢大家. 在这里我们需要首先下载node,因为我们要用到npm包下载, ...

  4. SpringCloud 2020.0.4 系列之Eureka

    1. 概述 老话说的好:遇见困难,首先要做的是积极的想解决办法,而不是先去泄气.抱怨或生气. 言归正传,微服务是当今非常流行的一种架构方式,其中 SpringCloud 是我们常用的一种微服务框架. ...

  5. 【UE4】GAMES101 图形学作业4:贝塞尔曲线

    总览 Bézier 曲线是一种用于计算机图形学的参数曲线. 在本次作业中,你需要实现de Casteljau 算法来绘制由4 个控制点表示的Bézier 曲线(当你正确实现该算法时,你可以支持绘制由更 ...

  6. Linux搭建SVN服务器详细教程

    前言 本文讲解Linux系统下如何搭建SVN服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置. SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统 ...

  7. HttpClient使用GET方式通过代理服务器读取页面的例子

    import java.io.BufferedReader;import java.io.InputStreamReader;import org.apache.http.HttpEntity;imp ...

  8. 通过Nacos动态刷新Spring Cloud Gateway的路由

    通过Nacos动态刷新Spring Cloud Gateway的路由 一.背景 二.解决方案 三.实现功能 四.实现步骤 1.网关服务的实现 1.pom文件 2.bootstrap.yml配置文件 3 ...

  9. 微信小程序实现上拉和下拉加载更多

    在上一篇文章中,我们知道了使用 scroll-view 可以实现上拉加载更多,但是由于 scroll-view 的限制,它无法实现下拉加载更多,这篇文章我们使用 view 组件来实现 上拉和下拉加载更 ...

  10. CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建

    疫情之下的高速公路管控重任 江苏高速公路信息工程有限公司(以下简称:江苏高速信息)成立于 2002 年,是江苏交通控股旗下,专业从事高速公路领域机电系统集成.智能交通软硬件研发.大数据分析运营的高新技 ...