题目描述

  给你三个排列\(A,B,C\),求

\[\sum_{1\leq x,y\leq n}[a_x<a_y][b_x<b_y][c_x<c_y]
\]

  \(n\leq 2\times {10}^6\)

题解

  就是一个三位偏序。用CDQ分治可以做到\(O(n\log^2 n)\)。常熟小一点可以卡过。我在UOJ上面能跑过去。

  这道题只有一个特殊性质:\(A,B,C\)都是排列。

  我们记

\[\begin{align}
K_{x,y}&=[a_x<a_y]+[b_x<b_y]+[c_x<c_y]\\
S_{x,y}&=\max(K_{x,y},K_{y,x})\\
A&=\sum_{1\leq x\leq y\leq n}[S_{x,y}=3]\\
B&=\sum_{1\leq x\leq y\leq n}[S_{x,y}=2]\\
P_{a,b}&=\sum_{1\leq x,y\leq n}[a_x<a_y][b_x<b_y]\\
P_{a,c}&=\sum_{1\leq x,y\leq n}[a_x<a_y][c_x<c_y]\\
P_{b,c}&=\sum_{1\leq x,y\leq n}[b_x<b_y][c_x<c_y]\\
\end{align}
\]

  那么我们要求的答案就是\(A\)了。

  容易发现

\[\begin{align}
A+B&=\binom{n}{2}\\
3A+B&=P_{a,b}+P_{a,c}+P_{b,c}
\end{align}
\]

  原问题转化为二位偏序。

  用树状数组即可解决。

  时间复杂度:\(O(n\log n)\)

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<utility>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
ll seed;
ll rd()
{
return seed=((seed*19260817)^233333)&((1<<24)-1);
}
int n;
void gen(int *a)
{
int i;
for(i=1;i<=n;i++)
a[i]=i;
for(i=1;i<=n;i++)
swap(a[i],a[rd()%i+1]);
}
int a1[2000010];
int a2[2000010];
int a3[2000010];
int a[2000010];
int c[2000010];
void add(int x)
{
for(;x<=n;x+=x&-x)
c[x]++;
}
int sum(int x)
{
int s=0;
for(;x;x-=x&-x)
s+=c[x];
return s;
}
ll gao(int *a1,int *a2)
{
memset(c,0,sizeof c);
int i;
for(i=1;i<=n;i++)
a[a1[i]]=a2[i];
ll s=0;
for(i=1;i<=n;i++)
{
s+=sum(a[i]);
add(a[i]);
}
return s;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
#endif
scanf("%d",&n);
scanf("%lld",&seed);
gen(a1);
scanf("%lld",&seed);
gen(a2);
scanf("%lld",&seed);
gen(a3);
ll ans=0;
ans+=gao(a1,a2);
ans+=gao(a1,a3);
ans+=gao(a2,a3);
ans-=ll(n-1)*n/2;
ans/=2;
printf("%lld\n",ans);
return 0;
}

【XSY2714】大佬的难题 数学 树状数组的更多相关文章

  1. D 区间求和 [数学 树状数组]

    D 区间求和 题意:求 \[ \sum_{k=1}^n \sum_{l=1}^{n-k+1} \sum_{r=l+k-1}^n 区间前k大值和 \] 比赛时因为被B卡了没有深入想这道题 结果B没做出来 ...

  2. HDU 2492 Ping pong(数学+树状数组)(2008 Asia Regional Beijing)

    Description N(3<=N<=20000) ping pong players live along a west-east street(consider the street ...

  3. [CSP-S模拟测试]:天才绅士少女助手克里斯蒂娜(数学+树状数组)

    题目描述 红莉栖想要弄清楚楼下天王寺大叔的显像管电视对“电话微波炉(暂定)”的影响. 选取显像管的任意一个平面,一开始平面内有个$n$电子,初始速度分别为$v_i$,定义飘升系数为$$\sum \li ...

  4. [CSP-S模拟测试]:Equation(数学+树状数组)

    题目描述 有一棵$n$个点的以$1$为根的树,以及$n$个整数变量$x_i$.树上$i$的父亲是$f_i$,每条边$(i,f_i)$有一个权值$w_i$,表示一个方程$x_i+x_{f_i}=w_i$ ...

  5. 「BZOJ1537」Aut – The Bus(变形Dp+线段树/树状数组 最优值维护)

    网格图给予我的第一反应就是一个状态 f[i][j] 表示走到第 (i,j) 这个位置的最大价值. 由于只能往下或往右走转移就变得显然了: f[i][j]=max{f[i-1][j], f[i][j-1 ...

  6. NOJ——1669xor的难题(详细的树状数组扩展—异或求和)

    [1669] xor的难题 时间限制: 1000 ms 内存限制: 65535 K 问题描述 最近Alex学长有个问题被困扰了很久,就是有同学给他n个数,然后给你m个查询,然后每个查询给你l和r(左下 ...

  7. HDU 5869 Different GCD Subarray Query 树状数组 + 一些数学背景

    http://acm.hdu.edu.cn/showproblem.php?pid=5869 题意:给定一个数组,然后给出若干个询问,询问[L, R]中,有多少个子数组的gcd是不同的. 就是[L, ...

  8. UVA 11610 Reverse Prime (数论+树状数组+二分,难题)

    参考链接http://blog.csdn.net/acm_cxlove/article/details/8264290http://blog.csdn.net/w00w12l/article/deta ...

  9. POJ 2464 Brownie Points II (树状数组,难题)

    题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线,该直线的要求是要经过一个sta ...

随机推荐

  1. 修改docker0默认IP地址

    第一步:vim /etc/docker/daemon.json { "registry-mirrors": ["https://docker.mirrors.ustc.e ...

  2. Hadoop生态的配置

    网盘下载地址 链接: https://pan.baidu.com/s/19qWnP6LQ-cHVrvT0o1jTMg 密码: 44hs Hadoop伪分布式配置  Hadoop 可以在单节点上以伪分布 ...

  3. Array Division CodeForces - 808D (构造+实现)

    Vasya has an array a consisting of positive integer numbers. Vasya wants to divide this array into t ...

  4. 怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

    unsigned long numComponents = CGColorGetNumberOfComponents([[UIColor blackColor] CGColor]); 2014年12月 ...

  5. python_线程的开启、守护线程、锁、死锁、事件、定时器、条件、队列、池

    0.承上 什么是线程? CPU调度的最小单位. 线程是进程的必要组成单位. 主线程: 程序开始运行的时候,就产生了一个主线进程来运行这个程序. 子线程: 是由主线程开启的其他线程. · 各线程之间的工 ...

  6. SpringMVC controller 时间 T

    Spring MVC 之 处理Date类型 - carl.zhao的专栏 - CSDN博客https://blog.csdn.net/u012410733/article/details/727730 ...

  7. Tomcat 目录结构以及基本配置

    1 Tomcat 目录层次结构 ① bin:存放启动和关闭tomcat 的脚本文件② conf: 存放配置文件 server.xml:该文件用于配置和server 相关的信息,比如tomcat 启动端 ...

  8. linux 服务器名 访问 shh免密码登录

    以根用户登录,或者登录后切换到根用户,然后在提示符下输入hostname命令,可以看出当前系统的主机名为localhost.localdomain.   更改/etc/sysconfig下的netwo ...

  9. Html5使用canvas作图

    以下例子是项目中实际用到的.不足之处请大家指正,设计到画线,写文字,填充,文字旋转. <!DOCTYPE html> <html> <head lang="en ...

  10. [转帖]Linux 的静态库与动态库

    Linux下的静态库与动态库 2017年02月18日 09:17:13 LLZK_ 阅读数:10257 标签: linux动态库静态库区别使用 更多 个人分类: Linux学习笔记 所属专栏: Lin ...