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相关推荐

  1. 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring

    题意: 给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai​>aj​时,这两个点之间有一条边,现在对点染色,要求每个点相邻 ...

  2. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

  3. 2021牛客暑期多校训练营4,签到题CFIJ

    题号 标题 已通过代码 通过率 团队的状态 A Course 点击查看 18/52 未通过 B Sample Game 点击查看 122/281 未通过 C LCS 点击查看 1118/2877 通过 ...

  4. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题HIL

    H. Hard Calculation 链接:https://ac.nowcoder.com/acm/contest/12548/H 来源:牛客网 题目描述 Hooray! It is the fir ...

  5. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题

    文章目录 H. Hard Calculation I. Mr. Main and Windmills L. Simone and graph coloring J.Parallel Sort 补题链接 ...

  6. 2021牛客暑期多校训练营

    2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...

  7. 训练实录 | 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 传送门 C - LCS solved by oye && Micky. 04:56:54(-3) 题意: 给出四个参数a,b,c,na,b,c,na,b, ...

  8. 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 ...

  9. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)

    链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...

最新文章

  1. 学习旧岛小程序 (4)封装api 请求
  2. php进程学习(一)
  3. binlog以及Canel
  4. 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
  5. php默认站点,PHP学习之Apache修改默认站点的目录
  6. 开发安全的ASP.NET应用程序
  7. Uva(10986)
  8. React-12 Context的使用
  9. c++早绑定和晚绑定
  10. XML解析之 MSXML应用总结 概念篇
  11. ENSP端口角色和状态
  12. 微信html5线上卡券,16.7.1HTML5网页领取卡券
  13. 目标跟踪质心跟踪算法
  14. 流放之路 剧情 第六章
  15. 网友评价 iPhone 8:大爱玻璃后壳、True Tone 屏幕
  16. android lcd,国产安卓机:LCD屏幕,正式再见
  17. 苏宁精准营销之生成人群包的演进
  18. LoRa点对点系统3 与PC接口
  19. 三条命令搞定Winload.exe出现0xc000000e错误
  20. 【Linux】-- 进程间通讯

热门文章

  1. 这个女生躲在衣柜等男友回家,结果竟是......
  2. 有趣的灵魂连墓碑都很酷! | 今日趣图
  3. 想让数据分析更简便,怎能少了它!
  4. 费马大定理,集惊险与武侠于一体
  5. 中科大量子计算机科学家,中国科学院量子信息重点实验室
  6. python 装饰器实现_Python装饰器系列01 - 如何正确地实现装饰器
  7. c#程序设计教程 唐大仕pdf_C# 添加PDF水印
  8. linux创建备用管理员,sql server 创建备用管理员和只读用户
  9. es6添加删除class_es6中class类的使用
  10. abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得  [转simwe]...