[HDU 6318] Swaps and Inversions
[题目链接]
http://acm.hdu.edu.cn/showproblem.php?pid=6318
[算法]
线段树 / 树状数组
[代码]
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010 long long i,n,x,y,len,ans,l,r,mid;
long long a[MAXN],rk[MAXN],tmp[MAXN]; struct SegmentTree
{
struct Node
{
long long l,r;
long long sum;
} Tree[MAXN << ];
inline void build(long long index,long long l,long long r)
{
long long mid;
Tree[index].l = l;
Tree[index].r = r;
Tree[index].sum = ;
if (l == r) return;
mid = (l + r) >> ;
build(index << ,l,mid);
build(index << | ,mid + ,r);
}
inline void add(long long index,long long pos,long long val)
{
long long mid;
Tree[index].sum += val;
if (Tree[index].l == Tree[index].r) return;
mid = (Tree[index].l + Tree[index].r) >> ;
if (mid >= pos) add(index << ,pos,val);
else add(index << | ,pos,val);
}
inline long long query(long long index,long long l,long long r)
{
long long mid;
if (l > r) return ;
if (Tree[index].l == l && Tree[index].r == r) return Tree[index].sum;
mid = (Tree[index].l + Tree[index].r) >> ;
if (mid >= r) return query(index << ,l,r);
else if (mid + <= l) return query(index << | ,l,r);
else return query(index << ,l,mid) + query(index << | ,mid + ,r);
}
} T; int main()
{ while (scanf("%lld%lld%lld",&n,&x,&y) != EOF)
{
for (i = ; i <= n; i++)
{
scanf("%lld",&a[i]);
tmp[i] = a[i];
}
sort(tmp + ,tmp + n + ,greater<int>());
len = ;
for (i = ; i <= n; i++)
{
if (tmp[i] != tmp[i - ])
tmp[++len] = tmp[i];
}
for (i = ; i <= n; i++)
{
l = ; r = len;
while (l <= r)
{
mid = (l + r) >> ;
if (a[i] >= tmp[mid]) r = mid - ;
else l = mid + ;
}
rk[i] = l;
}
T.build(,,len);
ans = ;
for (i = ; i <= n; i++)
{
ans += T.query(,,rk[i] - );
T.add(,rk[i],);
}
printf("%lld\n",1ll * ans * min(x,y));
}
return ; }
[HDU 6318] Swaps and Inversions的更多相关文章
- HDU 6318 Swaps and Inversions 思路很巧妙!!!(转换为树状数组或者归并求解逆序数)
Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- hdu 6318 Swaps and Inversions (线段树求逆序对数)
Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU 6318 - Swaps and Inversions - [离散化+树状数组求逆序数][杭电2018多校赛2]
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=6318 Problem Description Long long ago, there was an ...
- HDU 6318 Swaps and Inversions(归并排序 || 树状数组)题解
题意:一个逆序对罚钱x元,现在给你交换的机会,每交换任意相邻两个数花钱y,问你最少付多少钱 思路:最近在补之前还没过的题,发现了这道多校的题.显然,交换相邻两个数逆序对必然会变化+1或者-1,那我们肯 ...
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- HDU 多校对抗赛第二场 1010 Swaps and Inversions
Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Swaps and Inversions HDU - 6318 树状数组+离散化
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...
- hdu 6318
Long long ago, there was an integer sequence a.Tonyfang think this sequence is messy, so he will cou ...
- 【HDOJ6318】Swaps and Inversions(树状数组)
题意: 给定一串数组,其中含有一个逆序对则需要花费x,交换相邻两个数需要花费y,输出最小花费. n<=1e5,-1e9<=a[i]<=1e9 思路: #include<cstd ...
随机推荐
- Safe Area Layout Guide before iOS 9.0
今天使用Xcode9.1重建项目,什么都没写运行报错:Safe Area Layout Guide before iOS 9.0!目前为止,不晓得原因,现记录解决方法:
- Deutsch lernen (04)
1. streng a. 严厉的,严格的 streng gegen sich selbst und gegen andere sein streng auf Ordnung halten 2. ver ...
- (转)Redis研究(一)—简介
http://blog.csdn.net/wtyvhreal/article/details/41855327 Redis是一个开源的高性能键值对数据库.它通过提供多种键值数据类型来适应不同场景下的存 ...
- C# tostring("0000000")
public string ConverNo(string str) { string result = ""; ]; ; i < chars.Length; i++) ch ...
- 用Python获取摄像头并实时控制人脸
实现流程从摄像头获取视频流,并转换为一帧一帧的图像,然后将图像信息传递给opencv这个工具库处理,返回灰度图像(就像你使用本地静态图片一样) 程序启动后,根据监听器信息,使用一个while循环,不断 ...
- 阿里云直播鉴权java代码示例
段时间公司需要做直播服务,所以就研究了一下阿里云的直播,在直播里面,最重要的就是url的鉴权操作(验证推流或者拉流的有效性),在网上找了很多代码,都没有发现java的demo,所以就写篇播客记录一下, ...
- php多进程防止出现僵尸进程
对于用PHP进行多进程并发编程,不可避免要遇到僵尸进程的问题. 僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程(zombie)进程.任何进程在退出前(使用exit退出) ...
- jmeter的性能监控框架搭建记录(Influxdb+Grafana+Jmeter)
查看笔记 http://note.youdao.com/noteshare?id=c700365713abb98bd3d10e6f45393af9&sub=6F4E14FF3F9D4167AE ...
- [转]理解和配置 Linux 下的 OOM Killer
最近有位 VPS 客户抱怨 MySQL 无缘无故挂掉,还有位客户抱怨 VPS 经常死机,登陆到终端看了一下,都是常见的 Out of memory 问题.这通常是因为某时刻应用程序大量请求内存导致系统 ...
- 通过redis协议构建脏字过滤微服务
下载 https://github.com/jonnywang/... 安装使用 mkdir -p /data/server/wordsFilter cd /data/server/wordsFilt ...