World is Exploding(hdu5792)
World is Exploding
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 566 Accepted Submission(s): 263
Each test case begin with an integer n in a single line.
The next line contains n integers A1,A2⋯An.
1≤n≤50000
0≤Ai≤1e9
1 #include <cstdio>
2 #include <cstdlib>
3 #include <cstring>
4 #include <cmath>
5 #include <iostream>
6 #include <algorithm>
7 #include <map>
8 #include <queue>
9 #include <vector>
10 #include<set>
11 using namespace std;
12 typedef long long LL;
13 typedef struct pp
14 {
15 int x;
16 int id;
17 } ss;
18 bool cmp(pp p,pp q)
19 {
20 return p.x<q.x;
21 }
22 int uu[6000];
23 ss dd[60000];
24 int a[60000];
25 LL zbit[60000];
26 LL ybit[60000];
27 int zz[60000];
28 int yy[60000];
29 int zz1[60000];
30 int yy1[60000];
31 int sumz(int i);
32 void addz(int i,int x,int t);
33 int sumy(int i);
34 void addy(int i,int x,int t);
35 int main(void)
36 {
37 LL i,j,k;
38 while(scanf("%lld",&k)!=EOF)
39 {
40 for(i=0; i<k; i++)
41 {
42 scanf("%d",&dd[i].x);
43 dd[i].id=i;
44 }
45 memset(zbit,0,sizeof(zbit));
46 memset(ybit,0,sizeof(ybit));
47 sort(dd,dd+k,cmp);
48 int id=1;
49 int ak=dd[0].x;
50 a[dd[0].id]=id;
51 for(i=1; i<k; i++)
52 {
53 if(ak!=dd[i].x)
54 {
55 id++;
56 ak=dd[i].x;
57 }
58 a[dd[i].id]=id;
59 }
60 for(i=0; i<k; i++)
61 {
62 LL ask=sumz(a[i]-1);
63 zz[i]=ask;
64 zz1[i]=i-sumz(a[i]);
65 addz(a[i],1,id);
66 }
67 for(i=k-1; i>=0; i--)
68 {
69 LL ask=sumy(a[i]-1);
70 yy[i]=ask;
71 yy1[i]=(k-i-1)-sumy(a[i]);
72 addy(a[i],1,id);
73 }
74 LL qian=0;
75 LL hou=0;
76 for(i=0; i<k; i++)
77 {
78 qian+=zz[i];
79 hou+=yy[i];
80 }
81 LL sum=qian*hou;
82 for(i=0; i<k; i++)
83 {
84 sum-=(LL)(zz[i])*(LL)(yy[i])+(LL)(zz[i])*(LL)(zz1[i])+(LL)(yy[i])*(LL)(yy1[i])+(LL)(zz1[i])*(LL)(yy1[i]);
85 }
86 printf("%lld\n",sum);
87 }
88 return 0;
89 }
90 int sumz(int i)
91 {
92 int s=0;
93 while(i>0)
94 {
95 s+=zbit[i];
96 i-=i&(-i);
97 }
98 return s;
99 }
100 void addz(int i,int x,int t)
101 {
102 while(i<=t)
103 {
104 zbit[i]+=x;
105 i+=i&(-i);
106 }
107 }
108 int sumy(int i)
109 {
110 int s=0;
111 while(i>0)
112 {
113 s+=ybit[i];
114 i-=i&(-i);
115 }
116 return s;
117 }
118 void addy(int i,int x,int t)
119 {
120 while(i<=t)
121 {
122 ybit[i]+=x;
123 i+=i&(-i);
124 }
125 }
World is Exploding(hdu5792)的更多相关文章
- hdu-5792 World is Exploding(容斥+树状数组)
题目链接: World is Exploding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- HDU5792 World is Exploding(树状数组)
一共6种情况,a < b且Aa < Ab, c < d 且Ac > Ad,这两种情况数量相乘,再减去a = c, a = d, b = c, b = d这四种情况,使用树状数组 ...
- HDU-5792 World is Exploding(树状数组)
题目大意:给一个整数序列,统计四元组(a,b,c,d)的个数,满足条件1:a<>b<>c<>d:条件2:<a,b>组成一个顺序对,<c,d> ...
- hdu5792 World is Exploding(多校第五场)树状数组求逆序对 离散化
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5792 题目描述:给你n个值,每个值用A[i]表示,然后问你能否找到多少组(a,b,c,d)四个编号,四 ...
- HDU 5792---2016暑假多校联合---World is Exploding
2016暑假多校联合---World is Exploding Problem Description Given a sequence A with length n,count how many ...
- 2016 Multi-University Training Contest 5 World is Exploding
转载自:http://blog.csdn.net/queuelovestack/article/details/52096337 [题意]给你一个序列A,选出四个下标不同的元素,下标记为a,b,c,d ...
- HDU 5792 World is Exploding 树状数组+枚举
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5792 World is Exploding Time Limit: 2000/1000 MS (Ja ...
- 2016 Multi-University Training Contest 5 1012 World is Exploding 树状数组+离线化
http://acm.hdu.edu.cn/showproblem.php?pid=5792 1012 World is Exploding 题意:选四个数,满足a<b and A[a]< ...
- HDU 5792 World is Exploding (树状数组)
World is Exploding 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5792 Description Given a sequence ...
随机推荐
- 中小型企业SaaS行业将崛起于新十年
2020开始的新十年,国内中小型企业SaaS市场将迎来蓬勃生机,四大助推器已经就绪 第一,云服务打好底座: 随着阿里云.腾讯云乃至华为云的蓬勃发展,基础设施的不断完善,为中小型Saas企业的发展,提供 ...
- 日常Java 2021/10/30
Java泛型 Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.泛型的本质是参数化类型,也就是说所操作的数据类型 ...
- SQL模糊查询语句和Escape转义字符
通配符描述示例%包含零个或更多字符的任意字符串.WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名._(下划线)任何单个字符.W ...
- Linux:$?,$n,$#,$0
$? 获取执行上一个指令的返回值(0为成功,非零为失败) $n 获取当前执行的shell脚本的第n个参数值,n=1...9,当n=0的时表示脚本的文件名,如果n大于9,大括号括起来${10} $# 获 ...
- Git命令行演练-团队开发
** 团队开发必须有一个共享库,这样成员之间才可以进行协作开发** ### 0. 共享库分类 > 本地共享库(只能在本地面对面操作) - 电脑文件夹/U盘/移动硬盘 & ...
- vue 中使用import导入 script 在线链接
一般我们在vue中导入另外一个文件或者文件中的方法,我们都是使用import来实现他的,那么问题来了,现在我们要导入的不是另外的一个文件,而是在线链接,这该怎么办?我们也使用了 import * as ...
- 安全刻不容缓「GitHub 热点速览 v.21.50」
作者:HelloGitHub-小鱼干 本周最热的事件莫过于 Log4j 漏洞,攻击者仅需向目标输入一段代码,不需要用户执行任何多余操作即可触发该漏洞,使攻击者可以远程控制用户受害者服务器,90% 以上 ...
- Nginx LOCATOIN块配置
1 匹配模式优先级 location = /uri =开头表示精确匹配,只有完全匹配上才能生效. location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前.无正则普通匹配( ...
- CF616B Dinner with Emma 题解
Content 翻译很明白,或者你也可以看我的简化版题意: 求一个 \(n\times m\) 的矩阵中每行的最小值的最大值. 数据范围:\(1\leqslant n,m\leqslant 100\) ...
- AT2287 [ARC067B] Walk and Teleport 题解
Content 一条直线上有 \(n\) 个城市,第 \(i\) 个城市的坐标为 \(x_i\).你在某一个城市内,每一次你可以按两种方式之一进行移动: 左右移动,每移动一个单位疲劳值增加 \(a\) ...