BZOJ 3192: [JLOI2013]删除物品 奇淫技巧树状数组
点我看题
这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ
于是悄悄咪咪翻开题解了。
实际上两个数组可以看做一个数组
如 1 4 5
2 7 3
实际上就是 5 4 1 | 2 7 3
“|”这个地方就是假设成一个指标,然后每次把这个指标移到某一个位置,这个位置左右两个边的数就可以删除。
所以就模拟从大到小删数。
第一次 5 4 1 2 | 7 3
指标移动1次就可以删掉“7”
第二次 5 | 4 1 2 3
指标移动3次就可以删掉“5”
第三次 |4 1 2 3
指标不需要移动就可以删除“4”
......
然后就把这些移动的次数加起来就是答案~\(≧▽≦)/~啦啦啦
把删掉的数的位置 置0 有数的位置 置1 然后树状数组维护一下就好了~
1 var a,c,tree:array[0..200500]of int64; 2 i,n,m,p:longint; 3 x,ans:int64; 4 5 procedure qs(l,r:longint); 6 var i,j:longint; 7 m,t:int64; 8 begin 9 i:=l; 10 j:=r; 11 m:=a[(l+r)>>1]; 12 repeat 13 while a[i]>m do inc(i); 14 while a[j]<m do dec(j); 15 if i<=j then 16 begin 17 t:=a[i];a[i]:=a[j];a[j]:=t; 18 t:=c[i];c[i]:=c[j];c[j]:=t; 19 inc(i); 20 dec(j); 21 end; 22 until i>j; 23 if l<j then qs(l,j); 24 if i<r then qs(i,r); 25 end; 26 function low(x:longint):longint; 27 begin 28 exit(x and -x); 29 end; 30 procedure adde(x,d:longint); 31 begin 32 while x<=p do 33 begin 34 inc(tree[x],d); 35 inc(x,low(x)); 36 end; 37 end; 38 function sum(x:longint):int64; 39 var s:int64; 40 begin 41 s:=0; 42 while x>0 do 43 begin 44 inc(s,tree[x]); 45 dec(x,low(x)); 46 end; 47 exit(s); 48 end; 49 begin 50 read(n,m); 51 p:=n+m; 52 for i:=n downto 1 do 53 begin 54 read(a[i]); 55 c[i]:=i; 56 adde(i,1); 57 end; 58 for i:=n+1 to p do 59 begin 60 read(a[i]); 61 c[i]:=i; 62 adde(i,1); 63 end; 64 qs(1,p); 65 if c[1]>n then x:=n+1 else x:=n; 66 ans:=0; 67 for i:=1 to p do 68 begin 69 adde(c[i],-1); 70 if c[i]>x then ans:=ans+sum(c[i])-sum(x-1) else 71 ans:=ans+sum(x)-sum(c[i]-1); 72 x:=c[i]; 73 end; 74 writeln(ans); 75 end.
BZOJ3192
转载于:https://www.cnblogs.com/Bunnycxk/p/7747023.html
BZOJ 3192: [JLOI2013]删除物品 奇淫技巧树状数组相关推荐
- BZOJ.2738.矩阵乘法(整体二分 二维树状数组)
题目链接 BZOJ 洛谷 整体二分.把求序列第K小的树状数组改成二维树状数组就行了. 初始答案区间有点大,离散化一下. 因为这题是一开始给点,之后询问,so可以先处理该区间值在l~mid的修改,再处理 ...
- bzoj 4372 烁烁的游戏——动态点分治+树状数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4372 和 bzoj 3070 震波 是一个套路.注意区间修改的话,树状数组不能表示 dis ...
- 奇淫技巧之整形数组偏移量
关于n[a] == a[n]问题 a[n] <=> *(a + n) *(a + n) <=> *(n + a) a[n] <=> n[a] 这是第一篇CSDN请多 ...
- bzoj 4372 烁烁的游戏 —— 动态点分治+树状数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4372 本以为和 bzoj3730 一样,可以直接双倍经验了: 但要注意一下,树状数组不能查询 ...
- BZOJ 3289 Mato的文件管理(莫队+树状数组)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3289 [题目大意] 求静态区间逆序对. [题解] 我们对查询进行莫队操作,对于区间的删 ...
- bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
3356: [Usaco2004 Jan]禁闭围栏 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 45 Solved: 26 [Submit][S ...
- JavaScript奇淫技巧:隐写术
JavaScript奇淫技巧:隐写术 本文将用JavaScript实现"图片隐写术". 什么是隐写术? 将文本或其它数据写入图片的技术,称为"隐写术". 比如下 ...
- bzoj3192: [JLOI2013]删除物品
又是一道玄学乱搞 本来我感觉是写两颗splay然后翻转什么的,后来发现可以乱搞 就是把第一个栈反过来,两个栈拼起来, 然后记录一个分割点,从大到小模拟,移动分割点,中间的经过的没被删除的元素就用树状数 ...
- 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理
大家好,我是小伍哥. 数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节.因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力.这里开个专题,总结下Pandas的使用方法,方 ...
- 引入flag.php文件,php文件自包含的奇淫技巧
原标题:php文件自包含的奇淫技巧 前言 刷题的时候刚好看到一个比较厉害的phpinfo的利用姿势,原理不是很懂,题目来自百度杯12月第四场Blog进阶版 以下是writeup 解题过程 注册以后 发 ...
最新文章
- 成功解决ValueError: Cannot feed value of shape (80, 15, 1, 1) for Tensor 'Placeholder_1:0', which has sh
- Error:scalac: Error: scala.collection.immutable.$colon$colon.tl$1()Lscala/collection/immutable/List;
- Android多线程分析之三:Handler,Looper的实现
- MySQL查询结果纵向输出标识符\G
- 微信第一个“小程序”亮相:不是APP胜似APP!
- cvsHelper--C#关于CSV文件的导入和导出以及转化
- CentOS 6.4 yum安装LAMP环境
- vue 计算属性和data_Vue.js教程(五)--Vue的计算属性
- 【数据分析】脑图简介数据分析
- Web API-基本认知
- 3D Object Detection入门——PointRCNN代码学习
- html跑马灯效果代码加速,网页特效_跑马灯特效代码大全一
- 使用OpenCV进行图片模糊处理(中值滤波)
- C语言字符常量与常量定义
- matlab2010a中文,MATLAB 2010a解决中文字体乱码的方法
- 计算机网络水平子系统布线图,综合布线七大子系统构成图
- 金蝶K3后台SQL修改数据-科目余额表、科目表核算项目
- MYS-6ULX资料汇总
- JAVA一些方法技巧
- 练习5:MySQL数据插入、更新与删除