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 ...
随机推荐
- Splay(伸展树)/HDU6873
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6873 题目大意 给定一组 \(n\) 列的方块,每列方块数 \(b_i\) ,现有 \(q\) 次操作 ...
- .NET SAAS 架构与设计 -SqlSugar ORM
1.数据库设计 常用的Saas分库分为2种类型的库 1.1 基础信息库 主要存组织架构 .权限.字典.用户等 公共信息 性能优化:因为基础信息库是共享的,所以我们可以使用 读写分离,或者二级缓存来进行 ...
- 使用GitHub Action进行打包并自动推送至OSS
GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 官方文档:https://docs.github.com/cn/actions CI\CD 持续 ...
- web必知,多终端适配
导读 移动端适配,是我们在开发中经常会遇到的,这里面可能会遇到非常多的问题: 1px问题 UI图完美适配方案 iPhoneX适配方案 横屏适配 高清屏图片模糊问题 ... 上面这些问题可能我们在开发中 ...
- [php安全]原生类的利用
php原生类的利用 查看原生类中具有魔法函数的类 $classes = get_declared_classes(); foreach ($classes as $class) { $methods ...
- linux之wc命令详解
Linux系统中wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式 wc [options] 文件... 2.命令功能 统计指定文件中的字 ...
- 【Java 8】 集合间转换工具——Stream.collect
集合运算 交集 (list1 + list2) List<T> intersect = list1.stream() .filter(list2::contains) .collect(C ...
- 【Python】【Basic】【数据类型】基本数据类型
1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2 ...
- Linux系统下部署eleasticsearch+kibana
1.官网下载eleasticsearch和kibana,两个版本应安装一致,否则会出现kibana连接不上eleasticsearch的情况(这里我以6.3.1为例) eleasticsearch的下 ...
- 【Java 8】Stream中的Pipeline理解
基于下面一段代码: public static void main(String[] args) { List<String> list = Arrays.asList("123 ...