博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforeces 540E(树状数组
阅读量:4994 次
发布时间:2019-06-12

本文共 869 字,大约阅读时间需要 2 分钟。

题意:交换自然数中的若干对数,求交换后总共有多少逆序数对。

思路:因为题目数字范围比较大,不能直接用树状数组算,首先要离散化。然后一种算法是官方题解中根据逆序对数是否属于交换过的数分类讨论统计。我的算法是把没有交换的连续的数看成一个数,使用树状数组统计的时候直接加上这个区间的数字个数,这样就不需要比较易错的讨论了。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back#define fs first#define se secondusing namespace std;typedef long long ll;typedef pair
P;const int maxv=1e5*4;struct BIT{ ll a[maxv]; void add(int p,int x){ while(p
0){ ans+=a[p]; p-=p&-p; } return ans; } ll after(int a){ return sum(maxv-1)-sum(a); }}B;int a[maxv];int b[maxv];int c[maxv];int mid[maxv];int sq[maxv];int n;map
mii;int main(){ freopen("/home/files/CppFiles/in","r",stdin); cin>>n; for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/Cw-trip/p/4675146.html

你可能感兴趣的文章
【问题解决方案】之 Word 公式编辑器 使用小tips
查看>>
模拟凡客导航
查看>>
BZOJ4804: 欧拉心算
查看>>
sublime text 3中安装ctags支持函数跳转,安装convertToUtf8支持中文步骤[工具篇]
查看>>
静态类和单例模式区别
查看>>
团队冲刺第一天
查看>>
二分查找法查找数组元素下表
查看>>
第四章 数据类型
查看>>
php-cgi.exe
查看>>
5.7 Windows常用网络命令
查看>>
防抖(Debouncing)和节流(Throttling)
查看>>
SQL Server 查询当前行、上一行、下一行合并查询
查看>>
Python 学习笔记之——用 sklearn 对数据进行预处理
查看>>
0 window DOS窗口常用指令
查看>>
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>