
数据结构-----------------------
文章平均质量分 85
Fsss_7
这个作者很懒,什么都没留下…
展开
-
BZOJ3343: 教主的魔法
题意:中文题。分析:这题一看到就感觉没什么传统数据结构能很好写,我们考虑用分块,我们将n分成若干sqrt(n)大的块,每次进行的操作如果能整块操作就整块操作,不能的话暴力,当然分块的常数还是挺大的。那么我们每次询问的操作就变成了询问两个小于sqrt(n)的小块和若干大小为sqrt(n)的块中>=c的数有多少个。两边的数我们可以暴力,中间的块内的数我们可以复制一个副本在b数组中,对于b数组,每一原创 2015-12-28 00:53:55 · 625 阅读 · 0 评论 -
hdu5603the soldier of love
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5603题意:给你多组数据,每组数据第一行是一个n和m,表示的意义是n条线段和m组点。接下来是n条线段的左端点和右端点,m行每行第一个是这组点的个数Ki,接下来同一行有Ki个数表示点的位置。问题是求对于每组点来说,有多少条线段至少有一个该组上的点在线段上,输入m行。分析:其实题目要求的问题,我们有一种原创 2015-12-29 22:10:14 · 501 阅读 · 0 评论 -
bzoj2002: [Hnoi2010]Bounce 弹飞绵羊
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002题意:中文题。。分析:先将这个数组分块,每块大小为sqrt(n),然后设定f[i]表示从i出发到第一个和i不同块的点所需的步数,nex[i]表示那个第一个和i不同块的点的位置。然后我们每次查询的时候就能最多sqrt(n)次就能跳出n长度了,修改的话可以很明显的知道改变第i个点的系数原创 2015-12-31 01:38:46 · 425 阅读 · 0 评论 -
bzoj2141: 排队
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2141题意:中文题。分析:先将数组离散化一下,然后对于每一次交换考虑两个元素改变是对逆序对总和的影响就好了,在查找当前值x对逆序对总和影响时分3中情况,第一种是和x在同一个块内的数,sqrt(n)扫一遍即可,第二种是在x所在的块前面的块内,第三种是在x所在的块后面的块内,在块内的个数二分原创 2016-01-01 01:56:26 · 736 阅读 · 0 评论 -
bzoj2724: [Violet 6]蒲公英
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2724题意:中文题。。分析:在线求区间众数,用分块预处理,详见http://www.docin.com/p-679227660.html代码:#include#include#include#include#include#include#include#inclu原创 2016-01-01 16:49:11 · 1011 阅读 · 0 评论 -
bzoj1367: [Baltic2004]sequence
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1367题意:中文题。。分析:左偏树论文题。要多练练证明技巧。证明见论文:http://wenku.baidu.com/link?url=t55yGX-UkUdEXBhpvBwuzjKP16F7lFl0RKSVVBBW5zXWRB7rRXvLLj1jM-pzhbH834hQl0KKT4va原创 2016-01-19 21:30:02 · 906 阅读 · 0 评论 -
bzoj1455: 罗马游戏
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1455题意:中文题。。分析:裸的可并堆练习题。我是在黄学长那学的左偏堆(http://hzwer.com/2563.html)。看我黄学长的定义后,我理解了左偏堆。但是!细看代码实现你会发现,与定义有出入,一开始我还以为黄学长哪里出错了,因为很简单的出几组数据就能发现黄学长的代码建的不是原创 2016-01-03 16:42:56 · 421 阅读 · 0 评论 -
bzoj2809: [Apio2012]dispatching
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2809题意:中文题。。分析:稍微分析下其实就知道要从叶子往根贪心保留薪水最少的人,因为只要算人头数和根的领导能力,所以从叶子往根合并是发现花费超过了总预算就可以删除薪水高的忍者。代码:#include#include#include#include#include#in原创 2016-01-20 15:06:09 · 468 阅读 · 0 评论 -
51nod1307 绳子与重物
链接:http://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=61547题意:中文题。。。分析:直接二分就可以了,dfs判断。。但是!出题人说有O(n)的算法,我不甘心。下次补充。PS:并查集做法:从叶子向根统计子树和,如果当前子树和大于根的负重,就从最后一个添加的点开始删除。详见代码。代码:#include#include#include#include#include#include#include#inc原创 2016-01-19 22:42:01 · 998 阅读 · 0 评论 -
bzoj3529: [Sdoi2014]数表
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3529题意:中文题。。。分析:同bzoj2301,论文题。。代码:#include#include#include#include#include#include#include#include#include#include#include#pragma原创 2016-01-21 22:30:25 · 604 阅读 · 0 评论 -
bzoj2693: jzptab
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2693题意:中文题。。分析:同bzoj2301,莫比乌斯论文题。。代码:#include#include#include#include#include#include#include#include#include#include#include#prag原创 2016-01-25 01:19:46 · 405 阅读 · 0 评论 -
最大连续子序和 (加强版?)
题目描述 Description给你K个序列(编号从0到K-1),并且第i个序列有Ni个元素。然后将会有一个由(0~K-1)组成的字符串S=(s1,s2,...,sn)。如果si=p,那么把第p个序列增加到这个大的序列上。例如:如果你有小的序列:0.{1,2,3}1.{-1,2,0}2.{3,4,5,-6}字符串S="1021",那么这个大的序列原创 2015-02-11 21:38:54 · 548 阅读 · 0 评论 -
【tyvj1463】智商问题
链接:http://www.tyvj.cn/p/1463题意:中文题。。。分析:很明显的二分,只是我用来练习分块。。代码:#include#include#include#include#include#include#include#include#include#include#include#pragma comment(linker, "/STACK:原创 2015-12-26 16:11:14 · 379 阅读 · 0 评论 -
ICPCCamp2016day3 E.Intersection
链接:等camp过后挂出来再加题意:给一组n,m表示有一个长为n的未知的字符串S,并且有m组关系,每组关系给定x,y,l表示在串S中的以第x个字符开始长度为l的子串和以第y个字符开始长度为l的子串相等。n,m分析:首先暴力肯定是不可取的O(m*l),那么对于这种匹配式的统计该怎么办呢?首先要知道的时候加速匹配是肯定要的,怎么加速呢?我们将每一次的关系的l分成两部分2^k长度,就像rmq的询原创 2016-01-27 22:38:36 · 860 阅读 · 0 评论 -
codevs1282 约瑟夫问题
链接:http://codevs.cn/problem/1282/题意:中文题。分析:约瑟夫问题,用树状数组或者线段树维护一下就行了。代码:#include#include#include#include#include#include#include#include#include#include#include#include#pragma commen原创 2016-03-29 17:38:10 · 435 阅读 · 0 评论 -
codevs1283等差子序列
链接:http://codevs.cn/problem/1283/题意:中文题。分析:题目要求我们找是否存在等差数列,其实我们可以将条件弱化为是否存在长度为3的等差数列,直接暴力找会超时(但是这个OJ上的数据好弱,暴力可过),我们可以将这n个数慢慢加入到一个计数数组中,比如说加入x我们就令f[x]=1,这样的话我们在加入x的时候只要判断1~x-1是否和x+1~n是否对称(以x为中心对称)。原创 2016-03-29 21:18:56 · 622 阅读 · 0 评论 -
hiho[Offer收割]编程练习赛1
链接:http://hihocoder.com/contest/hihointerview3/problemsA:九宫,中文题。分析:3*3的幻方,爆搜即可。代码:#include#include#include#include#include#include#include#include#include#include#include#pragma com原创 2016-03-06 18:59:11 · 786 阅读 · 0 评论 -
Codeforces Round #316 (Div. 2)D. Tree Requests
链接:http://codeforces.com/contest/570/problem/D题意:给定一棵n个节点的树(1为根),每个节点上有一个小写字母,m个询问:给定v,h,问在以v为根的子树中深度为h(相对整棵树的深度)的所有点的字符能否组成回文串。分析:我们来将题目分解一下,首先我们确定构成回文串的条件,很显然要求“字母个数为奇数的字母小于等于1”,这里我们可以用异或储存偶数为0奇原创 2016-03-30 22:36:45 · 462 阅读 · 0 评论 -
bzoj1103[POI2007]大都市meg
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1103题意:中文题。分析:题目要求的是每次都是从节点1计算到节点x的距离,我们可以利用长度为2*n的dfs序的性质,因为在dfs序中我们会保存节点i进入时间l[i]和出去时间r[i],那么我们可以设置一个树状数组记录前缀和,我们将所有的l[i]位置+1,所有的r[i]位置-1。这样有什么原创 2016-03-30 23:33:06 · 670 阅读 · 0 评论 -
bzoj3687: 简单题
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3687题意:中文题。。分析:要求计算子集算术和的异或和。首先我们设dp[i]表示由这n个数能有多少种方案组成i,显然这样dp[1~sum]就将所有的子集和统计完了,那么计算的时候只要判断(dp[i]&1)就有ans^=i。这样的复杂度是sum*n,对于n=10^3,sum=2*10^6是原创 2016-03-07 20:33:57 · 1283 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2)
链接:http://codeforces.com/contest/629problemA:给你一个n*n的矩阵,矩阵每个格子要么为空要么为C,求有多少对满足条件的C,条件为这两个C在同一行或同一列。分析:直接统计每一行和每一列的C的个数,然后k*(k-1)/2加入答案即可。O(n^2)代码:#include#include#include#include#include#原创 2016-02-23 14:34:36 · 480 阅读 · 0 评论 -
Codeforces Round #345 (Div. 2)
链接:http://www.codeforces.com/contest/651problemA:给定两个操作手柄的初始电量a,b,只有一个充电器,每一分钟如果不充电要消耗2%,在这分钟开始时就要消耗1%结束时再消耗1%,如果连上充电器会增加1%的电量。求两个手柄最多能撑多少分钟使得两个都有电。O(n)分析:while下去就行了。。特判一下(1,1)的情况。代码:#include原创 2016-03-09 19:49:28 · 462 阅读 · 0 评论 -
Codeforces Round #342 (Div. 2)
链接:http://codeforces.com/contest/625problemA:很经典的问题,你有n元钱,有两种牛奶,A:a元一瓶,B:b元一瓶,喝完返还瓶子退回c元,问最大能喝多少瓶牛奶。分析:贪心先全买A或者B,取最大的即可。代码:#include#include#include#include#include#include#include#inclu原创 2016-02-25 01:39:55 · 629 阅读 · 0 评论 -
Codeforces Round #346 (Div. 2)
链接:http://codeforces.com/contest/659problemA:给定一个圆的周长n,初始在位置a,然后走b步,求最后位置在哪?分析:不想分析。O(1)代码:#include#include#include#include#include#include#include#include#include#include#include#i原创 2016-04-04 02:56:55 · 362 阅读 · 0 评论 -
bzoj3306: 树
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3306题意:中文题。分析:因为题目要求查询子树中的最小值,很明显想到dfs序。但是还有一个操作:换根。这个问题看上去不好处理,但是其实自己画画图就能很好的将换根之后的情况进行处理了,假设当前询问x根为root,这是我们只要分类讨论:当x==root,return tr[1]。当lca(x原创 2016-04-06 16:50:54 · 536 阅读 · 0 评论 -
hdu4358Boring counting
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358题意:给定一棵n个节点的树和k,每个点有点权,再给q个询问,每次询问:在以v为根的子树中有多少个数恰好出现了k次。分析:遇到子树问题,首先考虑到的就是dfs序,然后发现还有一个条件k。我的处理方式是:先离散化,然后构出dfs序,然后处理出in[],out[],lose[]数组,如果当前i中的数原创 2016-04-06 20:24:36 · 511 阅读 · 0 评论 -
bzoj3653: 谈笑风生
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3653题意:中文题。分析:很明显这题可以分为两种情况:(1)b是a的祖先,那么有min(de[a]-1,y)种选择,c就随便选一个a子树中的点就行了。(2)b是a的子孙,c是b子树中的点,且b距离a小于等于k。第一种情况没压力,第二种情况才是关键。子树问题,我们优先想到dfs序,然后问题原创 2016-04-06 22:36:49 · 937 阅读 · 0 评论 -
bzoj2286: [Sdoi2011消耗战
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2286题意:中文题。分析:题目中要求所有的关键点与根1断开,很容易想到树形dp。但是由于多组询问会导致时间*m。单次O(n)不可取。很显然是要优化的,我们发现单次O(n)时还是会做很多无用功,而且题目说sigma(ki)代码:#include#include#include原创 2016-04-07 20:23:07 · 1938 阅读 · 0 评论 -
bzoj2588: Spoj 10628. Count on a tree
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2588题意:中文题。分析:树上建可持久化线段树,从父亲那继承。查询的时候减去lca和lca的父亲两个前缀即可。详见代码。O(nlogn+mlogn)代码:#include#include#include#include#include#include#include原创 2016-04-11 22:36:26 · 648 阅读 · 0 评论 -
poj2985The k-th Largest Group
链接:http://poj.org/problem?id=2985题意:初始给定n个元素个数为1的集合,然后给定m个操作,有两种操作:C=0时输入a,b表示将a,b所在的集合合并成一个集合,C=1时输入k表示询问当前所有集合中集合大小排序中的第k大的集合的size。分析:集合合并直接用并查集维护就可以了,找第k大的话用树状数组找第k大就好了。代码:#include#include原创 2016-03-26 14:54:25 · 392 阅读 · 0 评论 -
BCBestCoder Round #74
链接:BestCoder Round #74A:给定n,接下来是n-1个整数a[i]。a[i]表示在字符串s中从第i个开始的子串和从第i+1个开始的子串的最长公共前缀为a[i]。求字符串s有多少种情况。分析:首先我们处理无解的情况,显然a[i]+i>n是无解的,并且相邻的a[i]如果非0则必然为a[i]-1==a[i+1]。然后就只要算方案数了。O(n)代码:#include#i原创 2016-03-06 21:17:14 · 317 阅读 · 0 评论 -
BestCoder Round #77
链接:http://bestcoder.hdu.edu.cn/分析:1001,子集异或和的异或和,除了n==1的情况外所有元素都会在偶数个子集中出现,所以特判一下即可。O(n)代码:#include#include#include#include#include#include#include#include#include#include#include#inc原创 2016-03-27 15:53:15 · 492 阅读 · 0 评论 -
bzoj1901: Zju2112 Dynamic Rankings
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1901题意:中文题。分析:带修改的区间第k小,在可持久化线段树外面套一个树状数组,然后将建树的过程改点。时间O(nlognlogn)+空间T(nlognlogn)代码:#include#include#include#include#include#include#i原创 2016-04-12 19:26:51 · 619 阅读 · 0 评论 -
bzoj3295: [Cqoi2011]动态逆序对
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3295题意:中午题。分析:本来打算练习cdq分治的,明天补吧。不过看到这题一眼就想用可持久化线段树,不过带修改的可持久化线段树开销有点大,变了一种方法卡了点空间才过。详见代码。O(nlogn*logn)。代码:#include#include#include#include原创 2016-04-24 23:31:29 · 653 阅读 · 0 评论 -
bzoj3524: [Poi2014]Couriers
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3524题意:中文题。分析:区间问题,并且询问的是大于区间一半的值,我们可以直接用可持久化线段树查询。O(nlogn+qlogn)代码:#include#include#include#include#include#include#include#include#原创 2016-04-13 14:33:36 · 666 阅读 · 0 评论 -
bzoj3261: 最大异或和
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3261题意:中文题。分析:问题等价于求一个x与区间a[l]~a[r]之间的最大异或和。转为二进制树建可持久化字典树,在区间内跑最大值。O(nlogn)代码:#include#include#include#include#include#include#include原创 2016-04-13 21:46:12 · 555 阅读 · 0 评论 -
hdu2795Billboard
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:给定一个高为h宽为w的公告栏,然后给出n张要粘贴的高为1宽为wi的公告。每张公告都会选择能贴的最高行的靠左边贴。能贴输出行不能贴输出-1。分析:因为最多才200000张公告,我们可以以行为基础建线段树,每次找最左边的剩余宽度还大于等于wi的位置。O(nlog(min(h,n)))。代原创 2016-04-26 19:24:32 · 346 阅读 · 0 评论 -
poj2828Buy Tickets
链接:http://poj.org/problem?id=2828题意:给定n个人的信息依次插入队列,pos[i]第i个人插入到pos[i]的位置,val[i]为第i个人的价值。输出插入所有人之后的价值序列。分析:因为是像插队一样插入队列中,那么越后面的人优先级越高,那么我们就倒着从最后一个人插入,这样的话我们插入位置后就不需要变动了,每次只要找当前这个人插入的位置为第pos[i]个空位即原创 2016-04-26 20:30:16 · 417 阅读 · 0 评论 -
poj2886Who Gets the Most Candies?
链接:http://poj.org/problem?id=2886题意:给定n,k,然后给定n个坐成环的人的信息:名字和a[i]。第一次先删掉第k个人,然后从这个被删除的人开始数a[i],继续删下一个人,如果a[i]0向后数。第i个删掉的人有一个值F[i],F[i]为i的约数个数。最后输出F[i]最大的人的名字和F[i]。如果有多个F[i]最大输出i最小的那个。分析:首先我们将题目分解成两原创 2016-04-26 22:20:18 · 313 阅读 · 0 评论 -
bzoj3166: [Heoi2013]Alo
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3166题意:中文题。分析:枚举每个元素,将它当成那个次大值,然后在它所作用的区间内找异或最大值即可。怎么找它作用的区间呢?用set和priority_queue一起,用优先队列使得大的元素的位置先进set。然后对于每一个新位置找他前面和后面的位置边界即可。我写得好丑~O(nlog(max原创 2016-04-13 23:32:49 · 541 阅读 · 0 评论