博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3289 莫队 逆序对
阅读量:5077 次
发布时间:2019-06-12

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

 

莫队维护逆序对,区间左右增减要分类讨论。

 

记得离散化。

 

1 /**************************************************************  2     Problem: 3289  3     User: idy002  4     Language: C++  5     Result: Accepted  6     Time:5480 ms  7     Memory:3164 kb  8 ****************************************************************/  9   10 #include 
11 #include
12 #include
13 #include
14 #define maxn 50010 15 #define lowbit(i) ((i)&(-(i))) 16 using namespace std; 17 18 typedef long long lng; 19 20 int n, m; 21 int disc[maxn]; 22 int lx[maxn], rx[maxn], mccno[maxn], stot; 23 int w[maxn]; 24 lng cnt[maxn], cnttot, cur_ans; 25 lng ans[maxn]; 26 27 struct Qu { 28 int l, r, id; 29 bool operator<( const Qu & b ) const { 30 return mccno[l]
qu[q].l ) push_front( w[--lf] ); 92 while( rg
qu[q].r ) pop_back( w[rg--] ); 94 ans[qu[q].id] = cur_ans; 95 } 96 } 97 int main() { 98 scanf( "%d", &n ); 99 for( int i=1; i<=n; i++ ) {100 scanf( "%d", w+i );101 disc[i] = w[i];102 }103 sort( disc+1, disc+1+n );104 for( int i=1; i<=n; i++ )105 w[i] = lower_bound( disc+1, disc+1+n, w[i] ) - disc;106 scanf( "%d", &m );107 for( int i=1; i<=m; i++ ) {108 scanf( "%d%d", &qu[i].l, &qu[i].r );109 qu[i].id = i;110 }111 partition();112 work();113 for( int i=1; i<=m; i++ ) 114 printf( "%lld\n", ans[i] );115 }
View Code

 

转载于:https://www.cnblogs.com/idy002/p/4298117.html

你可能感兴趣的文章
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>