cf 61 E. Enemy is weak 离散化+树状数组
题意:
给出一个数组,数组的每一个元素都是不一样的,求出对于3个数组下标 i, j, k such that i < j < k and ai > aj > ak where ax is the value at position x. 的个数
明显数组的值太大了
先离散化,然后就是简单的树状数组了
对于每一个i,只要统计i前面的数中比a[i]大的数的个数,和i后面的数中比a[i]小的数的个数即可
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <math.h> #define LL long long using namespace std; const int maxn = + ; struct Node
{
int id,init,chg;
};
Node node[maxn];
int fir[maxn];
int sec[maxn];
int c[maxn]; bool cmp1(Node x,Node y)
{
return x.init<y.init;
} bool cmp2(Node x,Node y)
{
return x.id<y.id;
} inline int lb(int x)
{
return x & (-x);
} void update(int x,int add)
{
while(x <= maxn){
c[x] += add;
x += lb(x);
}
} int query(int x)
{
int ret = ;
while(x > ){
ret += c[x];
x -= lb(x);
}
return ret;
} LL solve(int n)
{
sort(node+,node+n+,cmp1);
for(int i=;i<=n;i++)
node[i].chg = i;
sort(node+,node+n+,cmp2);
memset(c,,sizeof c);
for(int i=;i<=n;i++){
fir[i] = i - - query(node[i].chg - );
update(node[i].chg,);
}
memset(c,,sizeof c);
for(int i=n;i>;i--){
sec[i] = query(node[i].chg - );
update(node[i].chg,);
}
LL ret = ;
for(int i=;i<=n;i++)
ret += (LL) fir[i] * sec[i];
return ret;
} int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&node[i].init);
node[i].id = i;
}
//printf("%I64d\n",solve(n));
cout<<solve(n)<<endl;
return ;
}
cf 61 E. Enemy is weak 离散化+树状数组的更多相关文章
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- CodeForces 540E - Infinite Inversions(离散化+树状数组)
花了近5个小时,改的乱七八糟,终于A了. 一个无限数列,1,2,3,4,...,n....,给n个数对<i,j>把数列的i,j两个元素做交换.求交换后数列的逆序对数. 很容易想到离散化+树 ...
- Ultra-QuickSort(归并排序+离散化树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 50517 Accepted: 18534 ...
- HDU 5862 Counting Intersections(离散化+树状数组)
HDU 5862 Counting Intersections(离散化+树状数组) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 D ...
- BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组
BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 ...
- poj-----Ultra-QuickSort(离散化+树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 38258 Accepted: 13784 ...
- Code Forces 652D Nested Segments(离散化+树状数组)
Nested Segments time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- hdu 3015 Disharmony Trees (离散化+树状数组)
Disharmony Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【bzoj4627】[BeiJing2016]回转寿司 离散化+树状数组
题目描述 给出一个长度为n的序列,求所有元素的和在[L,R]范围内的连续子序列的个数. 输入 第一行包含三个整数N,L和R,分别表示寿司盘数,满意度的下限和上限. 第二行包含N个整数Ai,表示小Z对寿 ...
- 【bzoj5055】膜法师 离散化+树状数组
题目描述 给定一个序列$a$,求满足$i<j<k$且$a_i<a_j<a_k$的三元组$(i,j,k)$的个数. 输入 第一行1个数 n 第二行n个数 a_i 输出 一个数,表 ...
随机推荐
- poj1680 最短路判环
题意:有多个银行可以换钱,每个银行可以将特定的两种钱相互兑换,并且有自己的汇率,现在问是否可以将自己的钱通过银行兑换增加. 其实比较水,主要就是知道最短路问题里的负环可以通过bellman-fold或 ...
- jquery轻松操作CSS样式
$(this).click(function(){ if($(this).hasClass(“zxx_fri_on”)){ $(this).removeClass(“zxx_fri_on”); ...
- android开源项目---项目篇
本文转载于:http://blog.csdn.net/likebamboo/article/details/19081151 主要介绍那些Android还不错的完整项目,目前包含的项目主要依据是项目有 ...
- Syscall param open(filename) points to unaddressable byte(s)
valgrind 调试出现如题所示的错误,原因是存取文件名的空间被释放了 源代码: cfg->snteam_cfg->snt.score.nd.wrd_dict_db_fn=cfg-> ...
- Data Pump(数据抽取)介绍
从10g开始,Oracle提供更高效的Data Pump(即expdp/impdp)来进行数据的导入和导出,老的exp/imp还可以用,但已经不建议使用.注意:expdp/impdp和exp/imp之 ...
- xunsearch增量索引改进版
最近测试了xunserach全文索引程序.xunsearch只有LINUX版,所以想用windows服务器请使用其它全文索引程序.xunsearch本身不像coreseek那样自带增量索引的功能,所以 ...
- Sklearn库例子2:分类——线性回归分类(Line Regression )例子
线性回归:通过拟合线性模型的回归系数W =(w_1,…,w_p)来减少数据中观察到的结果和实际结果之间的残差平方和,并通过线性逼近进行预测. 从数学上讲,它解决了下面这个形式的问题: Lin ...
- Web前端开发笔试&面试_05_other 2016104399MS
1.数据传送的方式,get post 的区别是? 2.你要怎么绑定页码(比如给你第三页,)? 3.数据流是如何实现,用for 循环? 4.轮播怎么实现?用原生JS实现. 5.布局,B是固定宽度,A的内 ...
- Postman接口测试初探
Postman接口测试 有两种安装方式: 1)Chrome插件(https://www.getpostman.com/).安装完成后,它会在chrome的应用中,如下图 2)通过下载Native ap ...
- Spring MVC与Struts2的区别
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设 ...