给出231−12^{31}-1231−1范围的1−n1-n1−n的数列,然后有不超过k≤1e5k\leq1e5k≤1e5次交换,求问最终的逆序对的个数是多少。
被交换的值不超过2k2k2k个,然后再考虑中间一段连续的数对逆序对的贡献,把他们看作是同一个点。树状数组维护即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll INF=LONG_LONG_MAX;
const int N=2e5+7;
int x[N],y[N],tot=0;
int a[N],b[N];
ll t[N];
void add(int x,ll k) {for(int i=x;i<=tot;i+=i&(-i)) t[i]+=k;
}
ll query(int x) {ll sum=0;for(int i=x;i>0;i-=i&(-i)) sum+=t[i];return sum;
}
int main() {int n;scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%d%d",&x[i],&y[i]);a[++tot]=x[i];a[++tot]=y[i];}sort(a+1,a+1+tot);tot=unique(a+1,a+1+tot)-(a+1);for(int i=1;i<=tot;i++)  b[i]=i;for(int i=1;i<=n;i++) {int l=lower_bound(a+1,a+1+tot,x[i])-a;int r=lower_bound(a+1,a+1+tot,y[i])-a;swap(b[l],b[r]); }ll ans=0;add(b[tot],1);for(int i=tot-1;i>0;i--) {ans+=1LL*(a[i+1]-a[i]-1)*query(i);add(i,a[i+1]-a[i]-1);ans+=query(b[i]-1);add(b[i],1);}printf("%lld\n",ans); return 0;
}

洛谷P2448 无尽的生命 树状数组相关推荐

  1. 洛谷2448 无尽的生命[树状数组 离散化]

    题目描述 逝者如斯夫,不舍昼夜! 叶良辰认为,他的寿命是无限长的,而且每天都会进步. 叶良辰的生命的第一天,他有1点能力值.第二天,有2点.第n天,就有n点.也就是S[i]=i 但是调皮的小A使用时光 ...

  2. LOJ P2448 :无尽的生命 树状数组 + 离散化

    传送门 分析 跟785E题意差不多,但是785E是在线求法,个人感觉更复杂一下 我们将需要操作的点进行离散化,这样就可以对这些点用树状数字求逆序对,同时还需要维护离散化后每两个点之间的数的逆序对的数量 ...

  3. 洛谷P3688/uoj#291. [ZJOI2017]树状数组

    传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间 ...

  4. 洛谷P3374 【模板】树状数组 1

    题目链接:[模板]树状数组 1 - 洛谷 模板题就不多说了 ac代码: #include <cstdio> #include <iostream> #include <a ...

  5. 洛谷P3368 【模板】树状数组 2(Python和C++代码)

    ##就是常规写法 用树状数组维护一个差分数组的前缀和,因为可推得若b[i]=a[i]-a[i-1],则a[i]=b[1]+-+b[i] (b[1]=a[1]-a[0],a[0]=0) . 可发现a[i ...

  6. [洛谷P1908] 逆序对|归并排序|树状数组

     题目描述 Description 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为&qu ...

  7. 洛谷 P1908 逆序对(树状数组+离散化)

    题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计. 最近,TOM 老猫查阅到一个人类称之为"逆序对& ...

  8. 洛谷P2357 守墓人(差分+树状数组)

    原题链接 什么是差分? 7 8 6 5 8 18 20 35 //原数组 7 1 -2 -1 3 10 2 15 //差分数组 差分数组的前缀sum[i]即原数组的a[i] 我们构建两个树状数组 su ...

  9. 洛谷 P5149 会议座位(树状数组+Trie)

    题目是一道求逆序对的题目,但是我们先要将每一个名字转化为数字再进行计算 求逆序对的个数用树状数组或归并即可 题目有个坑点,名字包含大小写字母,所以字典树需要开大一点 #include <iost ...

最新文章

  1. 旋转质量轮实验对象上的传感器
  2. 【技术备忘录】H3C、华为网络设备Telnet的基本配置
  3. 出参传递数组指针_C语言指针重难点详解
  4. html给文字添加阴影效果,text-shadow css文字阴影_字体投影属性样式
  5. 如何在面试中介绍自己的项目经验?
  6. Latex英文论文模板汇总(elsevier、arXiv、IEEE Access)
  7. 揭密360急速免杀系列教程
  8. 详解工业机器人和机械手臂的区别
  9. 网络地址与直接广播地址有关计算
  10. Windows文件所有者恢复TrustedInstaller权限
  11. PHP面试技巧——什么是职场暗语?
  12. jQuery创建表格
  13. android 仿QQ表情,长按查看动图,移动手指可切换图片
  14. 图新地球 “请选择目标图层后再下载”
  15. IE10以上input自带的叉号和眼睛
  16. [Unity][Crowd]学习人群模拟资源分享以及相关的问题
  17. 直播源代码图片验证码
  18. USB-IF介绍及标准下载
  19. 解决XORM的时区问解决XORM的时区问题题vvvv
  20. Android学习记录——8.多媒体

热门文章

  1. 网络流专题班例题和练习
  2. [Unity][NavMeshAgent]怎么计算角色走过的路程长度
  3. win10taskkill强行结束进程_Win10程序卡死怎么办? Win10强制结束进程的两种方法
  4. MongoDB不同压缩算法的影响
  5. Deepin安装使用微信
  6. java解决异常_聊聊Java中的异常及处理
  7. linux文件夹缩略图不显示,分享|如何在终端显示图像缩略图
  8. 【数据分析师_04_Python数据分析基础】003_Pandas时序分析(pd.tseries 中的节假日功能)
  9. 用PS制作简单婚纱海报
  10. dpdk 问题分析:ice 100G 网卡 rx_packets 与 rx_bytes 统计问题