点我看题

这题十分奇淫技巧...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]删除物品 奇淫技巧树状数组相关推荐

  1. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)

    题目链接 BZOJ 洛谷 整体二分.把求序列第K小的树状数组改成二维树状数组就行了. 初始答案区间有点大,离散化一下. 因为这题是一开始给点,之后询问,so可以先处理该区间值在l~mid的修改,再处理 ...

  2. bzoj 4372 烁烁的游戏——动态点分治+树状数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4372 和 bzoj 3070 震波 是一个套路.注意区间修改的话,树状数组不能表示 dis ...

  3. 奇淫技巧之整形数组偏移量

    关于n[a] == a[n]问题 a[n] <=> *(a + n) *(a + n) <=> *(n + a) a[n] <=> n[a] 这是第一篇CSDN请多 ...

  4. bzoj 4372 烁烁的游戏 —— 动态点分治+树状数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4372 本以为和 bzoj3730 一样,可以直接双倍经验了: 但要注意一下,树状数组不能查询 ...

  5. BZOJ 3289 Mato的文件管理(莫队+树状数组)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3289 [题目大意] 求静态区间逆序对. [题解] 我们对查询进行莫队操作,对于区间的删 ...

  6. bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)

    3356: [Usaco2004 Jan]禁闭围栏 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 45  Solved: 26 [Submit][S ...

  7. JavaScript奇淫技巧:隐写术

    JavaScript奇淫技巧:隐写术 本文将用JavaScript实现"图片隐写术". 什么是隐写术? 将文本或其它数据写入图片的技术,称为"隐写术". 比如下 ...

  8. bzoj3192: [JLOI2013]删除物品

    又是一道玄学乱搞 本来我感觉是写两颗splay然后翻转什么的,后来发现可以乱搞 就是把第一个栈反过来,两个栈拼起来, 然后记录一个分割点,从大到小模拟,移动分割点,中间的经过的没被删除的元素就用树状数 ...

  9. 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理

    大家好,我是小伍哥. 数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节.因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力.这里开个专题,总结下Pandas的使用方法,方 ...

  10. 引入flag.php文件,php文件自包含的奇淫技巧

    原标题:php文件自包含的奇淫技巧 前言 刷题的时候刚好看到一个比较厉害的phpinfo的利用姿势,原理不是很懂,题目来自百度杯12月第四场Blog进阶版 以下是writeup 解题过程 注册以后 发 ...

最新文章

  1. 成功解决ValueError: Cannot feed value of shape (80, 15, 1, 1) for Tensor 'Placeholder_1:0', which has sh
  2. Error:scalac: Error: scala.collection.immutable.$colon$colon.tl$1()Lscala/collection/immutable/List;
  3. Android多线程分析之三:Handler,Looper的实现
  4. MySQL查询结果纵向输出标识符\G
  5. 微信第一个“小程序”亮相:不是APP胜似APP!
  6. cvsHelper--C#关于CSV文件的导入和导出以及转化
  7. CentOS 6.4 yum安装LAMP环境
  8. vue 计算属性和data_Vue.js教程(五)--Vue的计算属性
  9. 【数据分析】脑图简介数据分析
  10. Web API-基本认知
  11. 3D Object Detection入门——PointRCNN代码学习
  12. html跑马灯效果代码加速,网页特效_跑马灯特效代码大全一
  13. 使用OpenCV进行图片模糊处理(中值滤波)
  14. C语言字符常量与常量定义
  15. matlab2010a中文,MATLAB 2010a解决中文字体乱码的方法
  16. 计算机网络水平子系统布线图,综合布线七大子系统构成图
  17. 金蝶K3后台SQL修改数据-科目余额表、科目表核算项目
  18. MYS-6ULX资料汇总
  19. JAVA一些方法技巧
  20. 练习5:MySQL数据插入、更新与删除

热门文章

  1. Python数据结构中包含中文时在Windows下正常输出
  2. mathematica 如何在数组中等间隔插入元素
  3. 玩Elastix遇到的几个问题和解决办法。
  4. JAVA里static 变量在程序执行结束后是否被消毁
  5. TensorFlow入门:计算图和梯度流
  6. 高通混频器配置文件如何选择
  7. android bionic memcpy 汇编源码解析
  8. 距离之和最小 V3 51Nod - 1110(带权中位数或者爆搜)
  9. 线段树(区间更新以及统计片段颜色)
  10. 计算机语言有哪些面向对象,面向对象的几个概念