Inverse Pair
Inverse Pair
题意:
一个数组a,现在构造一个数组c,c[i]=a[i]+0/1(0或1),使得c的逆序对最少
题解:
如果x在x+1的后面,我们让x这个数+1,x+1不变,就可以让逆序对少1。如果x在x+1后面,我们就认为连边(x+1,x),x也有可能与x-1连边,形成一个长度为L的链,那减少的逆序对数量就是L/2
代码:
//还是自己菜最后还是看了网上模板才写出来的#include <bits/stdc++.h>#define LL long long
using namespace std;const int N=3e6+10;
LL num[N],a[N];
LL ans;
void Merge(int l,int mid,int r) //分治的治 合并是求逆序对的关键
{int i=l,j=mid+1,k=l;while(i<=mid&&j<=r){if(num[i]>num[j]) //前半部分中比num[i]大的数都比num[j]大,将num[j]放在num[i]前面的话,逆序数要加上mid+1-i{a[k++]=num[j++];ans+=mid-i+1; //统计逆序对}else //这里这情况不产生逆序对a[k++]=num[i++];}while(i<=mid)a[k++]=num[i++];while(j<=r)a[k++]=num[j++];for(int e=l;e<=r;e++) //将这次操作完的num数组更新num[e]=a[e];
}void Merge_sort(int l,int r) //分治的分 在这里不断地把一个串细分然后回溯合并
{if(l<r){int mid=(l+r)/2;Merge_sort(l,mid);Merge_sort(mid+1,r);Merge(l,mid,r);}
}
int vis[N];
int main()
{int n;cin>>n;int tot=0;for(int i=0;i<n;i++){cin>>num[i];if(vis[num[i]+1]){tot++;}else vis[num[i]]=1;}ans=0;Merge_sort(0,n-1); //cout<<ans<<endl;cout<<ans-tot;return 0;
}
/*
8
8 1 6 3 4 5 2 7
*/
Inverse Pair相关推荐
- 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring
题意: 给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai>aj时,这两个点之间有一条边,现在对点染色,要求每个点相邻 ...
- 2021牛客暑期多校训练营4
2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...
- 2021牛客暑期多校训练营4,签到题CFIJ
题号 标题 已通过代码 通过率 团队的状态 A Course 点击查看 18/52 未通过 B Sample Game 点击查看 122/281 未通过 C LCS 点击查看 1118/2877 通过 ...
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题HIL
H. Hard Calculation 链接:https://ac.nowcoder.com/acm/contest/12548/H 来源:牛客网 题目描述 Hooray! It is the fir ...
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题
文章目录 H. Hard Calculation I. Mr. Main and Windmills L. Simone and graph coloring J.Parallel Sort 补题链接 ...
- 2021牛客暑期多校训练营
2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...
- 训练实录 | 2021牛客暑期多校训练营4
2021牛客暑期多校训练营4 传送门 C - LCS solved by oye && Micky. 04:56:54(-3) 题意: 给出四个参数a,b,c,na,b,c,na,b, ...
- 2017ACM暑期多校联合训练 - Team 7 1009 HDU 6128 Inverse of sum (数学计算)
题目链接 Problem Description There are n nonnegative integers a1-n which are less than p. HazelFan wants ...
- 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)
链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...
最新文章
- 学习旧岛小程序 (4)封装api 请求
- php进程学习(一)
- binlog以及Canel
- 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
- php默认站点,PHP学习之Apache修改默认站点的目录
- 开发安全的ASP.NET应用程序
- Uva(10986)
- React-12 Context的使用
- c++早绑定和晚绑定
- XML解析之 MSXML应用总结 概念篇
- ENSP端口角色和状态
- 微信html5线上卡券,16.7.1HTML5网页领取卡券
- 目标跟踪质心跟踪算法
- 流放之路 剧情 第六章
- 网友评价 iPhone 8:大爱玻璃后壳、True Tone 屏幕
- android lcd,国产安卓机:LCD屏幕,正式再见
- 苏宁精准营销之生成人群包的演进
- LoRa点对点系统3 与PC接口
- 三条命令搞定Winload.exe出现0xc000000e错误
- 【Linux】-- 进程间通讯
热门文章
- 这个女生躲在衣柜等男友回家,结果竟是......
- 有趣的灵魂连墓碑都很酷! | 今日趣图
- 想让数据分析更简便,怎能少了它!
- 费马大定理,集惊险与武侠于一体
- 中科大量子计算机科学家,中国科学院量子信息重点实验室
- python 装饰器实现_Python装饰器系列01 - 如何正确地实现装饰器
- c#程序设计教程 唐大仕pdf_C# 添加PDF水印
- linux创建备用管理员,sql server 创建备用管理员和只读用户
- es6添加删除class_es6中class类的使用
- abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得 [转simwe]...