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
CQOI2011
浅谈根号分治与分块
文章目录1.根号分治哈希冲突2.线性分块引入教主的魔法[
CQOI2011
]动态逆序对[国家集训队]排队[HNOI2010]弹飞绵羊蒲公英1.根号分治哈希冲突题目1nnn个数,mmm次操作。
零衣贰
·
2023-04-16 16:51
学习笔记
算法
c++
数据结构
【题解】[
CQOI2011
]动态逆序对
题目题目大意对于一个数组a1,a2,a3,…,ana_1,a_2,a_3,\dots,a_na1,a2,a3,…,an,动态删除其中的点,在每次删除前求出逆序对个数。逆序对:当iajia_jiaj时,iii与jjj构成逆序对分析本题解使用CDQ分治简述:需求区间[l,r][l,r][l,r]每个数的答案,将其分为两个子区间[l,mid][l,mid][l,mid]和[mid+1,r][mid+1,
inferior_hjx
·
2023-03-15 07:29
题解
算法
c++
洛谷P3156 [
CQOI2011
]分金币
分金币洛谷P3156技术统计难度提高+/省选-用时10min提交次数1unaccept次数0ac次数1题意概括圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除。每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等。你的任务是求出被转手的金币数量的最小值。数据范围3≤n≤100000,金币数≤1093\len\le100000,金币数\le10^93≤n≤100000,金币数≤
Loi_magic
·
2020-08-19 08:50
刷题
bzoj 1045 //1045:[HAOI2008] 糖果传递 bzoj 3293 //3293: [
Cqoi2011
]分金币
id=1045bzoj3293//3293:[
Cqoi2011
]分金币//在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?
mrcrack
·
2020-08-18 00:38
跟着大佬学算法
BZOJ 3295 [
Cqoi2011
]动态逆序对 树状数组套线段树
题意:链接方法:树状数组套线段树解析:这题基本上写的都是什么CDQ点分治,主席树之类的,然而这我都并不会,所以写了一发平衡树套线段树想卡时卡过去,然而我并没有得逞,T的不要不要的,这里用平衡树套线段树的方法参见我的题解:排队。这道题比那道更要简单。然后我就打算弃坑了~不过看140142做这道题做的热火朝天的,还是打算回来做一下,yy下树状数组套线段树,然后去看hz的题解,只看懂他写理论部分了,代码
wzq_QwQ
·
2020-08-13 23:47
Tree
Tao
Tree
BZOJ刷题录
【CDQ分治】[
CQOI2011
][NKOJ2041]动态逆序对
题目描述Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依
weixin_30909575
·
2020-08-13 21:33
主席树初探 & bzoj 3295: [
Cqoi2011
] 动态逆序对 题解
【原题】3295:[
Cqoi2011
]动态逆序对TimeLimit:10SecMemoryLimit:128MBSubmit:778Solved:263[Submit][Status]Description
阿蒋
·
2020-08-13 20:34
bzoj题解
算法讲解
省选题解
【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
毒液哥
·
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
树套树
洛谷 P3157 [
CQOI2011
]动态逆序对
建议做这题之前先做洛谷P2617DynamicRankingswhat?什么是逆序对?题目逆序对定义为满足iAj的数对(i,j),则称(A[i],A[j])为数组A中的一个逆序对。题目大意给1到n的一个排列,按照某种顺序依次删除m个元素,输出每次删除一个元素之前统计整个序列的逆序对数。10%的数据中,m,n≤100;20%的数据中,m,n≤1000;50%的数据中,m,n≤10000;对于所有数据
xxxLJYing
·
2020-08-13 18:26
主席树
树状数组
洛谷
树套树 [
CQOI2011
]动态逆序对(洛谷P3157)
[
CQOI2011
]动态逆序对题目描述对于序列a,它的逆序对数定义为集合{(i,j)|iaj}中的元素个数。
不拿牌不改名
·
2020-08-13 18:31
#
树套树
[
CQOI2011
]动态逆序对 【主席树+树状数组】
传送门废话:这道题和当初队长他们去电子科技大学的校赛A题几乎是一样,这道题没有挂在他们的OJ上,无意之间发现了这道题,赶紧补一下。这道题的做法也太多了吧。。。。。分块会板子(这道题不会),CDQ分治不会,只会大佬说的动态主席树板子题,然后拿来改一下就能过了。。。解题思路:求解逆序数,我们常常用到树状数字来解决。对于每一个数num[i]对逆序数的贡献:或者是,对于删掉每一个数,我们只需要将他的贡献删
什么都不会的菜鸡
·
2020-08-13 18:54
数据结构
思维
[
Cqoi2011
]动态逆序对
主席树套树状数组。主席树第一题。链接静态的逆序对问题很简单,用线段树或者是树状数组即可解决。现在的问题是如何解决一道动态的逆序对问题?我们先把所有的逆序对统计出来。每次删除数,我们可以把这个数对于逆序对个数的贡献删除出去。这个贡献如何统计呢?Front[i]记录i位置之前有多少个数比这个数大Back[i]记录i位置之后有多少个数比这个数小每次删除的贡献就是这两个数之和放屁!如果之前我们已经删除过了
HT008_123
·
2020-08-13 17:41
题目分析
主席树
省选
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
分治
COGS-1715 [
CQOI2011
]动态逆序对(树状数组+线段树)
[
CQOI2011
]动态逆序对★★★输入文件:inverse.in输出文件:inverse.out简单对比时间限制:2s内存限制:128MB【题目描述】对于序列A,它的逆序对数定义为满足iAj的数对(i
丿残念灬
·
2020-08-13 16:48
线段树&树状数组
树套树
洛谷 P3157 [
CQOI2011
]动态逆序对 分块
题目描述对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。输入输出格式输入格式:输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。输出格式:输出包含m行,
Amber_lylovely
·
2020-08-13 15:43
分块
bzoj 3295: [
Cqoi2011
]动态逆序对 (主席树+树状数组, or CDQ)
Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数Input输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。N#definelow(x)(x&(-
Top_xiao
·
2020-08-13 15:13
#
主席树
CQOI2011
动态逆序对--cdq分治
题意:给出一个1~n的排列,按顺序删掉m个元素,求出每次删除操作之前序列的逆序对个数.做法:这题显然可以用树套树之类的工业结构维护,但是我怎么可能会呢.考虑离线cdq分治,可以把问题反过来,转化为每次添加一个元素,求添加后序列的逆序对个数.把每个元素看成平面上的点,x,y坐标分别是元素大小和插入位置,产生贡献的一对点则满足(x#include#include#includeusingnamespa
henyouyisiba123
·
2020-08-13 14:48
cdq分治
【BZOJ 3295】 [
Cqoi2011
]动态逆序对
3295:[
Cqoi2011
]动态逆序对TimeLimit:10SecMemoryLimit:128MBSubmit:1373Solved:465[Submit][Status][Discuss]Description
Regina8023
·
2020-08-13 12:44
~CDQ分治~
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
模板题库
随便搞搞
[
CQOI2011
]动态逆序对
一、题目点此看题二、解法考虑cdqcdqcdq,有三个值(t,d,v)(t,d,v)(t,d,v),要求tivjv_i>v_jvi>vj,很容易看出来是三维偏序的板题,我们先保证ttt的有序,cdqcdqcdq的时候排序ddd,然后用树状数组查询vvv,贴一个有注释的代码。#include#includeusingnamespacestd;constintM=150005;intread(){in
C202044zxy
·
2020-08-13 11:50
cdq分治
动态逆序对
P1347-[
CQOI2011
]动态逆序对Description对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。
zzm_
·
2020-08-13 11:52
[BZOJ3295] [
Cqoi2011
]动态逆序对 && CDQ分治
CDQ跑的比分治快得多首先我们可以把每一个点看成一个三元组(x,y,z)x表示它当前的值y表示的在序列中的编号z表示它的时间即第z次操作后的这个点所以如果某个点P在平面上的左上方有点(值小于P并且位置在P之后)后者右下方(恰好相反)的地方有点就会形成一个逆序对在一开始我们很容易求出每一个点形成的逆序对总数每次删除的时候从ans中减去然而在CDQ分治的过程中树状数组需要多次使用每次清空需要耗费大量时
大蒟蒻syk
·
2020-08-13 10:32
CDQ分治
BZOJ
【
cqoi2011
】动态逆序对
时间限制:1秒内存限制:64M【问题描述】对于序列A[i],它的逆序对数定义为满足:iA[j]的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。【输入格式】输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。【
细雨欣然
·
2020-08-13 10:17
线段树
平衡树
可并堆
CDQ分治
可持久化
[BZOJ3293] [
Cqoi2011
] 分金币 (贪心)
Description圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除。每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等。你的任务是求出被转手的金币数量的最小值。Input第一行为整数n(n>=3),以下n行每行一个正整数,按逆时针顺序给出每个人拥有的金币数。Output输出被转手金币数量的最小值。SampleInput41254SampleOutput4样例解释设四个人
weixin_30856965
·
2020-07-31 10:16
[
CQOI2011
]动态逆序对
对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素(不复原),你的任务是在每次删除一个元素之前统计整个序列的逆序对数。看到题目第一反应,树状数组乱搞?位置线段树套权值树状数组?爆空间!solution:~~1.分块树状数组暴力,~~不讲2.树套树已知有两种写法位置树状数组,权值线段树权值树状数组,位置线段树这里写权值树状数
GGAutomaton
·
2020-07-10 05:00
树套树
[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:
alince20008
·
2020-07-04 10:35
3295: [
Cqoi2011
]动态逆序对 树状数组套主席树
学校什么破电脑写完没保存的就死机了卧槽!!!我的代码全没了卧槽!!!我的内心是崩溃的!!!这道题的树套树作法是比较显然的,用树状数组套主席树,然后维护比每个数大的和比每个数小的数的个数,然后发现直接建可能会炸空间!!!我们可以先预处理出开始的答案ans,预处理出开始时在每个数后面且小于这个数的个数a2i和在这个数前面且大于这个数的个数a1i,然后用主席树维护“当前已经删除的元素”,假设在这个数后面
ws_fqk
·
2020-06-22 03:37
My
Code
[
CQOI2011
] 放棋子 - 计数dp
在一个\(m\)行\(n\)列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列,有多少种方法?Solution设\(f[i][j][k]\)表示用前\(k\)种颜色的棋子,占领了\(i\)行\(j\)列的方案数设\(g[i][j][k]\)表示用任意\(k\)个同色棋子占领\(i\)行\(j\)列的方案数,则考虑总方案数-实际上有没有被占领的行或列的方案
Mollnn
·
2020-04-06 19:00
洛谷P3158 [
CQOI2011
]放棋子
题目描述题解考虑$\text{dp}$:$f[i][j][k]$表示用前$k$种棋子占领了$i$行$j$列的方案数考虑$f$的转移:$f[i][j][k]=\sum_{l=0}^{i-1}\sum_{r=0}^{j-1}f[l][r][k-1]\times(_{i-l}^{n-l})\times(_{j-r}^{m-r})\timesg[i-l][j-l][a[k]]$,其中$g[i][j][k]
xjqxjq
·
2020-02-16 16:00
Luogu P3157 [
CQOI2011
]动态逆序对
CDQ分治首先可以将答案分为之前有的逆序对数量+此操作产生的逆序对数量那么最后前缀和即可由于题目直接给出的是删除操作,并且加上初始序列的插入操作有两种不同会对答案造成影响的操作,不容易处理那么考虑从后往前考虑,那么删除操作就变成插入操作先将所有要删的数删完剩下的数,把它们作为初始序列然后进行CQD分治产生逆序对要求是$time_{i}pos_{j}$或$time_{i}val_{j},pos_{i
Dawns~
·
2020-02-01 14:00
洛谷P3157 [
CQOI2011
]动态逆序对(树套树/BIT+权值线段树)
题目n(nusingnamespacestd;typedeflonglongll;intread(){intcnt=0;charch=0;while(!isdigit(ch))ch=getchar();while(isdigit(ch))cnt=cnt*10+(ch-'0'),ch=getchar();returncnt;}constintN=1e5+10;structnode{intl,r,nu
Code92007
·
2019-06-13 21:22
线段树(权值线段树)/树状数组
CDQ分治&整体二分学习个人小结
目录小结CDQ分治二维LIS第一道裸题bzoj1176Mokiabzoj3262陌上花开bzoj1790矩形藏宝地hdu5126四维偏序P3157[
CQOI2011
]动态逆序对CF762ECSUSTOJ1024
Cwolf9
·
2019-01-17 14:00
【洛谷3759】[TJOI2017] 不勤劳的图书管理员(树套树)
这会让我们联想起一道题目:【洛谷3157】[
CQOI2011
]
chenxiaoran666
·
2018-10-27 15:41
洛谷
树套树
[
CQOI2011
]放棋子
https://www.zybuluo.com/ysner/note/1246107题面在一个\(n\)行\(m\)列的棋盘里放\(c\)种不同色的棋子(每种有\(c_i\)个),使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列。有多少种方法?\(n,m\leq30,c\leq10\)解析被细节坑惨系列题目输入了\(n,m,c\)这三个量,于是\(DP\)数组中也要包含这三个量。
小蒟蒻ysn
·
2018-08-13 12:00
洛谷 P3157 [
CQOI2011
]动态逆序对(主席树+树状数组)
传送门做这题前请先学动态第k小,这里blog。首先我们有对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。那么第一次输出时直接输出序列的逆序对个数,然后问题就转化为删去某个元素时删去的逆序对数。若删去元素的位置为x,它产生的贡献就是原序列中区间[1,x-1]中大于x的数的个数与区间[x+1,n]中小于x的数的个数加上前面删去的数与x组成的逆序对个数(防止删两次)。前面的原序列中数量可
Dawn_LLLLLLL
·
2018-07-11 14:37
树状数组
主席树
BZOJ3295: [
Cqoi2011
]动态逆序对(带修主席树)
3295:[
Cqoi2011
]动态逆序对**TimeLimit:10SecMemoryLimit:128MBDescription对于序列A,它的逆序对数定义为满足i<ji<jiAj的数对(
SC.ldxcaicai
·
2018-07-01 13:30
#
主席树
#
树状数组
[
CQOI2011
]动态逆序对,洛谷P3157,树状数组+主席树
正题大家可能看到这题就觉得无从入手。但是我们可以从逆序对的定义入手,每个点可以计算出前面有多少个比他大的,后面有多少个比他小的。第一次输出的答案就是这两个其中之一的总和。那么每删去一个点,就相当于把前面比他大的点和后面比他小的点的总和去掉。又发现每次删除可能会与前面删去的某些点组成逆序对(删两次)。所以转化问题为,每次加入一个点,求这个点带来的贡献(与之前的点产生的逆序对对数)。考虑用主席树维护。
Deep_Kevin
·
2018-05-22 18:16
[
CQOI2011
]动态逆序对,洛谷P3157,树状数组+主席树
正题大家可能看到这题就觉得无从入手。但是我们可以从逆序对的定义入手,每个点可以计算出前面有多少个比他大的,后面有多少个比他小的。第一次输出的答案就是这两个其中之一的总和。那么每删去一个点,就相当于把前面比他大的点和后面比他小的点的总和去掉。又发现每次删除可能会与前面删去的某些点组成逆序对(删两次)。所以转化问题为,每次加入一个点,求这个点带来的贡献(与之前的点产生的逆序对对数)。考虑用主席树维护。
Deep_Kevin
·
2018-05-22 18:16
【BZOJ】[
Cqoi2011
]动态逆序对-树套树
传送门:bzoj3295题解线段树套树状数组代码#include#include#include#includeusingnamespacestd;typedeflonglongll;constintN=1e5+10;constintM=5e6+10;intn,m,tag[N],t[N];intvis[N],i,j,tot=1,cnt,a[N],b[N];inttre[N],q,sz[M],rt[
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分治
bzoj 3294: [
Cqoi2011
]放棋子 (容斥原理+组合数+DP)
题目描述传送门题目大意:在一个n*m的棋盘中放入一些颜色不同的棋子,每个格子最多只能放一个棋子,不同颜色的棋子不能放在同一行或同一列,求合法的方案数。题解相当于每行每列只能被一种颜色占据。那么我们可以给每个颜色分配行列数。g[p][i][j]表示第p中颜色占据i行j列的方案数。如果能求出g,那么我们就可以做二维背包.f[t][i+k][j+l]+=f[t−1][i][j]∗g[t][k][l]∗C
clover_hxy
·
2017-06-05 20:28
动态规划
容斥原理
组合数学
bzoj 3295: [
Cqoi2011
]动态逆序对 (CDQ分治+树状数组)
题目描述传送门题目大意:对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。题解这道题之前写过树状数组套线段树。首先我们把所有的删除操作倒过来,变成插入操作。我们考虑加入一个点会产生的逆序对数。产生的逆序对数是在他之前插入在他的位置之前的比他大的数+在他的位置之后的比他小的数。我们
clover_hxy
·
2017-03-24 17:14
树状数组
cdq分治&整体二分
BZOJ 3295: [
Cqoi2011
]动态逆序对 (树状数组套主席树)
题面:对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。对于已经存在的序列进行删除不是很好操作,不妨先倒过来想,假设我们将这些数空缺,然后倒序加入序列中是否可行,很明显可以,那么剩下的问题就是对于当前加入的书产生了多少个逆序对,对于新添入一个数来说,产生的逆序对一定是当前序列中1
wJs9528-1
·
2016-08-22 16:33
===数据结构===
主席树
上一页
1
2
下一页
按字母分类:
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
其他