hdu_5792_World is Exploding(树状数组+逆序对)
题目链接:hdu_5792_World is Exploding
题意:
给你一个数列,让你找有多少个(a,b,c,d)满足a≠b≠c≠d,1≤a<b≤n,1≤c<d≤n,Aa<Ab,Ac>Ad.
题解:
如果abcd可以相等,那么就是所有的顺序对和逆序对相乘,但这里要不相等,所以我们减去相等的情况就行。
要满足Aa<Ab,Ac>Ad,考虑其中一个数Ai 然后我们可以发现,建立在Ai的顺序对和逆序上,bd不会相等,
所以我们只需要找出每一个Ai 前后顺序对和逆序对,然后对应交叉相乘,就是a=c的情况,然后总答案减去就行
#include<cstdio>
#include<algorithm>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll; const int N=5E4+;
int a[N],n,idx[N],len,tr[N],t1[N],t2[N],t3[N],t4[N]; inline void add(int x,int c){while(x<=n)tr[x]+=c,x+=x&-x;}
inline int ask(int x){int an=;while(x)an+=tr[x],x-=x&-x;return an;} int getid(int x){return lower_bound(idx+,idx++len,x)-idx;} int main()
{
while(~scanf("%d",&n))
{
F(i,,n)scanf("%d",a+i),idx[i]=a[i],tr[i]=;
sort(idx+,idx++n),len=;
F(i,,n)if(idx[i]!=idx[len])idx[++len]=idx[i];
ll zheng=,ni=,ans;
F(i,,n)
{
int x=getid(a[i]);
int now=ask(x-);
zheng+=now,t1[i]=now,t2[i]=ask(n)-ask(x),ni+=t2[i];
add(x,);
}
F(i,,n)tr[i]=;
for(int i=n;i>=;i--)
{
int x=getid(a[i]);
int now=ask(x-);
t4[i]=now,t3[i]=ask(n)-ask(x);
add(x,);
}
ans=zheng*ni;
F(i,,n)ans-=t1[i]*t2[i]+t1[i]*t4[i]+t3[i]*t2[i]+t3[i]*t4[i];
printf("%lld\n",ans);
}
return ;
}
hdu_5792_World is Exploding(树状数组+逆序对)的更多相关文章
- [树状数组+逆序对][NOIP2013]火柴排队
火柴排队 题目描述 涵涵有两盒火柴,每盒装有n根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑ (ai-bi)2,i=1,2,3,. ...
- hdu 5497 Inversion 树状数组 逆序对,单点修改
Inversion Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5497 ...
- Codevs 3286 火柴排队 2013年NOIP全国联赛提高组 树状数组,逆序对
题目:http://codevs.cn/problem/3286/ 3286 火柴排队 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : ...
- Bzoj 2789: [Poi2012]Letters 树状数组,逆序对
2789: [Poi2012]Letters Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 278 Solved: 185[Submit][Stat ...
- Bzoj 3295: [Cqoi2011]动态逆序对 分块,树状数组,逆序对
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2886 Solved: 924[Submit][Stat ...
- Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 1539 Solved: 665[Submit][Status][Di ...
- Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 52306 Accepted: 19194 ...
- hdu 2838 Cow Sorting (树状数组+逆序对)
题目 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价 拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做 ...
- 【树状数组逆序对】USACO.2011JAN-Above the median
[题意] 给出一串数字,问中位数大于等于X的连续子串有几个.(这里如果有偶数个数,定义为偏大的那一个而非中间取平均) [思路] 下面的数据规模也小于原题,所以要改成__int64才行.没找到测试数据, ...
随机推荐
- appium使用真机做安卓移动端自动化测试
1.PC往手机上安装apk文件:adb install apk文件完整路径 2.获取app包名和activity的命令:使用aapt;aapt是sdk自带的一个工具,在sdk\builds-tools ...
- js基础 2
- Oracle截取某字段前后字符串
创建测试表及数据 1 2 3 4 5 6 7 8 9 create table test (name varchar2(10)); insert into test values ('2-15') ...
- icon的使用
在前端页面设计时,不免使用的就是图标,下面就我使用图标icon分享一下经验 1.icon插件,现在比较好的是bootstrap自带的,fontawesome,链接地址:http://fontaweso ...
- cocos2d-lua ARPG手机游戏《烈焰遮天》(客户端+服务端+数据库)发布说明
服务器发布流程及其规范1,环境准备 a, mvn命令行:从\\10.21.210.161\share\tools\apache-maven-3.1.1-bin.tar.gz取出安装包, ...
- 学习前端前必知的——HTTP协议详解
前端人士必备的知识点,无论你是否有经验,看了此文绝对有收获 此文针对前端爱好者,前端求职者(话说面试时很容易考到哦) 原文参考博客园http://kb.cnblogs.com/page/130970/ ...
- RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
- 第七十一,CSS颜色与度量单位
CSS颜色与度量单位 学习要点: 1.颜色表方案 2.度量单位 本章主要探讨HTML5中CSS颜色和度量单位等问题,包括颜色的选取方式.相对长度和绝对长度等. 一.颜色表方案 1 颜色的表现形式主 ...
- js实例--js滚动条缓慢滚动到顶部
收集篇(已测)-- <html><head> <script type="text/javascript"> var currentPositi ...
- scroll、client和offset的区别
scroll.client和offset的区别:http://www.cnblogs.com/pcd12321/p/4448420.html