给出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. 怎么写shell脚本才能不耍流氓?
  2. ASP.NET无刷新客户端回调
  3. NLP 解决方案是如何被深度学习改写的?
  4. Spring mvc PostgreSQL 插入timestamp和int8
  5. CentOS使用sudo提示用户不在sudoers文件中的解决方法
  6. ACM入门之【约数】
  7. 熊猫烧香演神话——在Windows mobile手机中运行
  8. 动态分区添加的新字段无法插入数据
  9. python实例 91,92,93,94
  10. 【转载】DXUT进阶
  11. html 动画过度转换的用法,css(动画,过渡,转换)
  12. 华为机试-字符串通配符
  13. springboot里面的porm配置问题
  14. Xshell串口连接
  15. Docker运维笔记-Docker端口映射
  16. RabbitMQ队列声明channel.queueDeclare()参数解析
  17. 如何将ppt批量转换成pdf?
  18. Playing Atari with Deep Reinforcement Learning
  19. 使用c语言实现三子棋游戏
  20. 微信小程序保险管理平台+后台管理系统

热门文章

  1. 小游戏之天选之人:通过幸运数字生成双色球号码(随机函数的应用)
  2. rmvb压制中高级技巧
  3. 宝典:10分钟46个细节看透男人心(zt)
  4. vscode ssh 远程连接总是循环验证密码
  5. mathtype免费版下载及序列号获取地址
  6. 银行案例启示:莫把客户投诉当小事
  7. 微信支付 body不是UTF编码格式
  8. 计算机考研408每日一题 day37
  9. CSGO DIY-文件修改位置
  10. 不属于mysql事物的特性_mysql基础---事务 事务的四大特性(ACID) 四种隔离级别