E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ3295
【
bzoj3295
】 CQOI2011动态逆序对 树状数组+主席树
对于每一个位置我们处理出刚开始它左边比他大的数的个数,和它右边比它小的数的个数,然后每次删除就在主席树里修改,最后答案就要减去a1+a2-左边比他大的被删除了的数的个数-右边比他小的被删除了的数的个数。一开始傻逼了,还对整个序列建前缀主席树,还以为省空间,结果发现树状数组直接预处理就好了,最后在不断地RE过程中,艰难的A了,看来卡空间的题真是非常不爽呢。#include#include#inclu
qingdaobaibai
·
2020-08-13 19:52
数据结构
BZOJ3295
CQOI2011 动态逆序对
3295:[Cqoi2011]动态逆序对TimeLimit:10SecMemoryLimit:128MBSubmit:2263Solved:721[Submit][Status][Discuss]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输
毒液哥
·
2020-08-13 19:43
BZOJ
主席树
分治
分块
平衡树
树套树
线段树
[
BZOJ3295
][Cqoi2011]动态逆序对(分块重建)
题意:一个排列,每次删除一个数,求每次删除后的逆序对的数量。正确姿势请移步http://blog.csdn.net/u011542204/article/details/50571409将操作分成根号M段,然后每段内的操作按下标排序,计算它前面的比他小的和它后面的比他大的。有一个问题就是同一个块当中的没有被减掉,由于一个块内只有根号M个操作,暴力减掉即可。如果要在线的话将那个排序变成主席树即可。时
broxin
·
2020-08-13 19:53
题解
分块
【
bzoj3295
】【Cqoi2011】【动态逆序对】【树状数组套平衡树】
Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除
sunshinezff
·
2020-08-13 19:36
树套树
BZOJ3295
: [Cqoi2011]动态逆序对(CDQ分治)
传送门题意:对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。题解:首先删除看做为逆向加点,记三元组(pos,val,time)。那么一个在timei时刻加入的点i会对所有timei以后的点产生贡献,这个贡献为timejvali的j的个数加上timejposi,valjusing
DZYO
·
2020-08-13 17:35
分治
Jzoj1020 逆序对统计 ≈
Bzoj3295
动态逆序对
Jzoj1020:Dramatic是在太菜了。最近,他学习了有关逆序对的知识,并且掌握了计算一个序列逆序对个数的高效算法,因此,他兴冲冲的跑去向YY牛炫耀。YY牛对此不屑一顾,并打击Dramatic说:“这是在太小儿科了!”Dramatic很不甘心,于是在他的强烈要求下,YY牛给他出了一道跟逆序对有关的“难题”(显然,对于YY牛来说是简单题)。题目是这样的:YY牛首先给Dramatic一个长度为
dianning8393
·
2020-08-13 13:43
bzoj3295
: [Cqoi2011]动态逆序对
链接http://www.lydsy.com/JudgeOnline/problem.php?id=3295题解叫这道题目卡了一下午+一晚上+一早晨。显然删掉一个数之后,逆序对减少的量是前面比它大的数和后面比它小的数。那就主席树啊,但是修改怎么办?要修改一连串主席树,这样就慢了,所以就想到树状数组套主席树。每棵主席树ta[x]是(x-lowbit(x),x]这段区间的权值主席树。然后修改、查询都变
*ACoder*
·
2020-08-13 11:41
#
主席树
树状数组
bzoj3295
: [Cqoi2011]动态逆序对(题解2)
链接http://www.lydsy.com/JudgeOnline/problem.php?id=3295题解上回说到,我用BIT套HJT树(就是树状数组套主席树)好不容易卡着空间过了这道题。这次,我采用了新学的姿势:CDQ分治先给每个数字附上一个属性:时间戳,表示第几次操作的时候被删除,那些不会被删除的时间戳设为inf删掉一个数,它会使答案减小,显然,减少的值等于前面数字比它大且时间戳比它大的
*ACoder*
·
2020-08-13 11:41
分治
树状数组
【CQOI2011】【
BZOJ3295
】动态逆序对
Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除
CreationAugust
·
2020-08-13 11:06
模板题库
随便搞搞
bzoj3295
动态逆序对
题目:对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。思路:如果倒着看的话,就变成了插入操作,第一个删除的数使最后一个插入的数,我们用来表示每个插入操作,x表示插入位置,y表示插入的数,t表示插入的时间,对时间进行二分操作,每次保证左边区间的时间都小于右边区间的时间,并且每个区
我不会额
·
2020-08-13 11:16
CDQ分治
[
BZOJ3295
] [Cqoi2011]动态逆序对 && CDQ分治
CDQ跑的比分治快得多首先我们可以把每一个点看成一个三元组(x,y,z)x表示它当前的值y表示的在序列中的编号z表示它的时间即第z次操作后的这个点所以如果某个点P在平面上的左上方有点(值小于P并且位置在P之后)后者右下方(恰好相反)的地方有点就会形成一个逆序对在一开始我们很容易求出每一个点形成的逆序对总数每次删除的时候从ans中减去然而在CDQ分治的过程中树状数组需要多次使用每次清空需要耗费大量时
大蒟蒻syk
·
2020-08-13 10:32
CDQ分治
BZOJ
bzoj3295
洛谷P3157 动态逆序对 【暴力分块】
题目描述对于给定的一段正整数序列,我们定义它的逆序对的个数为序列中ai>aj且i='0'&&ch=10){Out(a/10);}putchar(a%10+'0');}#undefBUF_SIZE};usingnamespacefastIO;usingnamespacestd;structMAG{intl,r;}mag[1004];intid[100004];inta[100004];intb[10
kmlver
·
2020-08-13 10:15
[
BZOJ3295
] [Cqoi2011]动态逆序对 (树套树)or(CDQ分治)
题意:N个数的排列,M次操作,每次求当前的逆序对数量并删掉一个数。先说一下cdq分治做法。(5960kb,1.4s)网上很多题解,我都看不懂(其实很多人的程序几乎是一样的,就改了一下变量名),然后就自己硬着头皮想了这道题,基本是独立做出来的,做出来之后竟然1A,简直愉快。不过我太辣鸡了想了半天才发现这本质上是一个三维偏序,分别是时间,下标,数值,记为(t,x,y)。我们可以把删除的过程倒过来,当做
broxin
·
2020-07-05 16:00
题解
cdq分治
平衡树
【CDQ分治】
BZOJ3295
[Cqoi2011]动态逆序对
题面在这里删除操作一共有3个属性:时间t,位置p,值x考虑到一个元素仅在被删除之前有贡献那么只需要统计tp′,x#includeusingnamespacestd;typedeflonglongll;inlinecharnc(){staticcharbuf[100000],*p1=buf,*p2=buf;returnp1==p2&&(p2=(p1=buf)+fread(buf,1,100000,s
linkfqy
·
2020-07-04 21:20
BZOJ
CDQ分治&整体二分
BZOJ3295
[Cqoi2011]动态逆序对 —— CDQ分治
题目链接:https://vjudge.net/problem/HYSBZ-32953295:[Cqoi2011]动态逆序对TimeLimit:10SecMemoryLimit:128MBSubmit:6517Solved:2295[Submit][Status][Discuss]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序
alince20008
·
2020-07-04 10:35
BZOJ3295
: [Cqoi2011]动态逆序对(带修主席树)
3295:[Cqoi2011]动态逆序对**TimeLimit:10SecMemoryLimit:128MBDescription对于序列A,它的逆序对数定义为满足i<ji<jiAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下
SC.ldxcaicai
·
2018-07-01 13:30
#
主席树
#
树状数组
【BZOJ】[Cqoi2011]动态逆序对-树套树
传送门:
bzoj3295
题解线段树套树状数组代码#include#include#include#includeusingnamespacestd;typedeflonglongll;constintN
ccosi
·
2018-05-12 19:22
树套树
【
BZOJ3295
】【Cqoi2011】动态逆序对
Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除
dcx2001
·
2017-09-26 07:44
cdq分治
【
bzoj3295
】动态逆序对 CDQ分治
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3295【题解】这题很神。我用的是popoqqq大爷的做法。具体见http://blog.csdn.net/popoqqq/article/details/38761287感觉这种做法似乎应该称为整体二分?#include#include#include#include#include#inc
chty_syq
·
2017-02-23 21:52
bzoj
CDQ分治
【Cqoi2011】【
BZOJ3295
】动态逆序对
Description对于序列A,它的逆序对数定义为满足iSolution树状数组一看到逆序对就要想到树状数组。维护每个数前面到目前有多少个比自己大。动态的思路因为要动态维护,每次只删掉一个数在逆序对中的贡献:及每个数前面有多少个比自己大,每个数后面有多少数比自己小。先预处理出每个数前面有多少个比自己大ll[i],每个数后面有多少个数比自己小rr[i]。很显然每次只用总答案删掉位置为i的数,答案就
Facico
·
2016-07-29 10:03
线段树
省选
可持久化线段树
树状数组
树套树
bzoj3295
【CQOI2011】动态逆序对
3295:[Cqoi2011]动态逆序对TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 3122 Solved: 986[Submit][Status][Discuss]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对
AaronPolaris
·
2016-05-14 00:07
树状数组
CDQ分治
OIer的狂欢
bzoj3295
【CQOI2011】动态逆序对
3295:[Cqoi2011]动态逆序对TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 3122 Solved: 986[Submit][Status][Discuss]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对
AaronGZK
·
2016-05-14 00:00
树状数组
bzoj
cdq分治
树套树
BZOJ3295
CQOI2011 动态逆序对 树状数组套线段树
离线倒着做,每次加入一个节点后新增的逆序对数量就是其左边大于它的数的个数(左边数的总数-左边小于它的数的个数)+右边小于它的数的个数用树状数组维护求和,对于树状数组中每个节点v所对应的区间线段树维护区间[l,r]中大于v的数的个数。最后唯一的问题就是指针版线段树MLE……#include #include #include #include #include usingnamespacestd;
WDZRMPCBIT
·
2016-05-10 23:00
[
BZOJ3295
][Cqoi2011]动态逆序对(树状数组套线段树||cdq分治)
题目描述传送门题解树状数组套线段树。向序列里插入点显然要比删点方便很多。首先知道一个点对整个序列的逆序对的贡献其实是这个点前面有多少个比它大的点加上后面有多少个比它小的点。利用树状数组求前缀和的特点可以求出这个点前面有多少个比它小的点和后面有多少个比它小的点,再用区间中的点减一下即可。那么用线段树来解决区间问题。线段树表示当前树状数组所代表的范围中元素的个数。那么查询的时候只需要在求前缀的时候把一
Clove_unique
·
2016-04-28 14:29
题解
线段树
bit
省选
树套树
cdq分治/整体二分
[
BZOJ3295
][Cqoi2011]动态逆序对(离线+树状数组套线段树)
题目描述传送门题解树状数组套线段树。向序列里插入点显然要比删点方便很多。首先知道一个点对整个序列的逆序对的贡献其实是这个点前面有多少个比它大的点加上后面有多少个比它小的点。利用树状数组求前缀和的特点可以求出这个点前面有多少个比它小的点和后面有多少个比它小的点,再用区间中的点减一下即可。那么用线段树来解决区间问题。线段树表示当前树状数组所代表的范围中元素的个数。那么查询的时候只需要在求前缀的时候把一
Clove_unique
·
2016-04-28 14:00
线段树
树状数组
bzoj
CQOI
bzoj3295
[Cqoi2011]动态逆序对(cdq分治||可持久化线段树)
题目链接:点这里!!!3295:[Cqoi2011]动态逆序对TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 3043 Solved: 967[Submit][Status][Discuss]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之
u014325920
·
2016-04-25 22:00
主席树
cdq分治
可持久化线段树
bzoj3295
: [Cqoi2011]动态逆序对
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3295题意:中午题。分析:本来打算练习cdq分治的,明天补吧。不过看到这题一眼就想用可持久化线段树,不过带修改的可持久化线段树开销有点大,变了一种方法卡了点空间才过。详见代码。O(nlogn*logn)。cdq写法补了,分析和代码在下面。代码:#include #include #include
Fsss_7
·
2016-04-24 23:00
cdq分治
可持久化线段树
【
bzoj3295
】[Cqoi2011]动态逆序对 树状数组套主席树
Description对于序列A,它的逆序对数定义为满足iInput输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除每个元素之前,逆序对的个数。SampleInput54153425142SampleOutput5221样例解释(1,5,3,4,2)
DQSSS
·
2016-04-05 21:59
树状数组
===数据结构===
树套树
主席树
【
bzoj3295
】[Cqoi2011]动态逆序对 树状数组套主席树
Description对于序列A,它的逆序对数定义为满足iInput输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除每个元素之前,逆序对的个数。SampleInput54 1 5 3 4 2 5 1 4 2 SampleOutput
LOI_DQS
·
2016-04-05 21:00
【cdq分治】[HYSBZ/
BZOJ3295
]动态逆序对
题目看看这篇博客写的时间,BZOJ已经挂了,我就不粘BZOJ链接了。Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一
outer_form
·
2016-02-19 10:00
C++
算法
cdq分治
bzoj
[
bzoj3295
] [Cqoi2011]动态逆序对
数据似乎对不会cdq分治的选手极其不友好?。。。。。没错说的就是我这种上来就写树套树的傻逼>__ 2#include 3#include 4#definelllonglong 5usingnamespacestd; 6constintmaxn=100023; 7intrt[262333],size,L[262333],R[262333]; 8intsz[maxn*19],lc[max
czllgzmzl
·
2016-02-08 00:00
[
BZOJ3295
] [Cqoi2011]动态逆序对 (树套树)or(CDQ分治)
题意:N个数的排列,M次操作,每次求当前的逆序对数量并删掉一个数。先说一下cdq分治做法。(5960kb,1.4s)网上很多题解,我都看不懂(其实很多人的程序几乎是一样的,就改了一下变量名),然后就自己硬着头皮想了这道题,基本是独立做出来的,做出来之后竟然1A,简直愉快。不过我太辣鸡了想了半天才发现这本质上是一个三维偏序,分别是时间,下标,数值,记为(t,x,y)。我们可以把删除的过程倒过来,当做
u011542204
·
2016-01-23 22:00
bzoj3295
: [Cqoi2011]动态逆序对 树状数组套线段树
题目bzoj3295Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出
zmh964685331
·
2016-01-21 21:00
BZOJ3295
动态逆序对 树套树, 树状数组套线段树(主席树)
Orz黄学长,蒟蒻在黄学长的带领下,通过阅读黄学长的代码!终于会了这道题!首先我想先说一下这道题的思路(准确来说是黄学长的)。很明显,树状数组应该不用讲吧!关键是内存怎么开,维护一些什么样的数据?其实我们通过观察,很快可以发现,你维护被删的数比维护所有的数轻松多了(不管是空间上,还是时间上)。所以我们就可以从这方面想!(其实我一开始的思路,因为这道题我已经看过很久了,一直想写,毕竟是白书里面的
83131
·
2016-01-14 21:00
【CQOI2011】动态逆序对
BZOJ3295
Description 对于序列A,它的逆序对数定义为满足 i< j,且A i>A j的数对( i, j)的个数。给1到 n的一个排列,按照某种顺序依次删除 m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 Input 输入第一行包含两个整数 n和 m,即初始元素的个数和删除的元素个数。以下 n行每行包含一个1到 n之间的正整数,即
·
2015-11-12 22:37
ZOJ
【
BZOJ3295
】【块状链表+树状数组】动态逆序对
Description 对于序列A,它的逆序对数定义为满足 i< j,且A i>A j的数对( i, j)的个数。给1到 n的一个排列,按照某种顺序依次删除 m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 Input 输入第一行包含两个整数 n和 m,即初始元素的个数和删除的元素个数。以下 n行每行包含一个1到 n之间的正整数,即
·
2015-11-11 19:00
树状数组
【CQOI2011】【
BZOJ3295
】动态逆序对
Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除
CreationAugust
·
2015-04-09 10:00
cdq分治
bzoj3295
(线段树套平衡树(treap))
3295:[Cqoi2011]动态逆序对TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 861 Solved: 287[Submit][Status]Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第
cq_phqg
·
2014-09-02 17:00
ACM
bzoj
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他