- 博客(83)
- 收藏
- 关注
转载 Good Bye 2015 D. New Year and Ancient Prophecy
D. New Year and Ancient Prophecy time limit per test 2.5 seconds memory limit per test 512 megabytes input standard input output standard output Limak is a little...
2016-01-01 15:11:00
141
转载 轮廓线DP POJ3254 && BZOJ 1087
补了一发轮廓线DP,发现完全没有必要从右往左设置状态,自然一点: 5 6 7 8 9 1 2 3 4 如此设置轮廓线标号,转移的时候直接把当前j位改成0或者1就行了。注意多记录些信息对简化代码是很有帮助的,尤其对于我这种代码经常错的一塌糊涂的人来说。。 呆马: POJ 3254 Corn Fields #include <iostream...
2015-10-02 20:32:00
153
转载 bzoj 1162 network
树上的区间第k小数,以前写的主席树是一直MLE的,后来看到一种在初始化的时候的优化:直接DFS这颗树,得到每个点的主席树,然后更新的时候另外对DFS序建主席树,答案加上初始每个点的主席树,这样在初始化每个点的时候就不需要用BIT维护了,省去的空间正好AC了这个题。 呆马: 1 #include <iostream> 2 #include <cstd...
2015-10-02 19:31:00
148
转载 Hiho 1232 北京网络赛 F Couple Trees
给两颗标号从1...n的树,保证标号小的点一定在上面。每次询问A树上的x点,和B树上的y点同时向上走,最近的相遇点和x,y到这个点的距离。 比赛的时候想用倍增LCA做,但写渣了。。。。后来看到题解是主席树就写了一发 呆马: 1 #include <iostream> 2 #include <cstdio> 3 #include <...
2015-10-02 19:27:00
142
转载 Hdu 4681 2013 Multi-University Training Contest 8 String
带跨越式的LCS,同样是在朴素的LCS上加入一种跨越一段的转移,这样我们要预处理出跨越一段给定串的转移函数。 这个题同样可以正反两边LCS做 呆马: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring&...
2015-10-02 19:22:00
109
转载 Hdu 5489 合肥网络赛 1009 Removed Interval
跳跃式LIS(nlogn),在普通的转移基础上增加一种可以跨越一段距离的转移,用一颗新的树状数组维护,同时,我们还要维护跨越完一次后面的转移,所以我用了3颗树状数组。。 比赛的时候一句话位置写错了,然后就。。。雪崩 呆马: 1 #include <iostream> 2 #include <cstdio> 3 #include <...
2015-10-02 19:16:00
113
转载 Hdu 5493 合肥网络赛 1010 Queue
在线求第k大,第一次用二分+树状数组写。。。比赛的时候分治啊,splay啊,主席树啊换来换去,然而以前为什么不知道可以这么写。。。 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #in...
2015-10-02 19:10:00
133
转载 Hiho coder 1236 2015 北京网络赛 Score
五维偏序。。一开始被吓到了,后来知道了一种BITSET分块的方法,感觉非常不错。 呆马: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <cmath> ...
2015-10-02 19:05:00
146
转载 JAG Summer 2012 Day 4 C Connect
状压dp,由于枚举两维状态会GG,所以只枚举当前位置前m个的状态,就是这个样子大概= =; 呆马: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include &...
2015-10-02 19:02:00
117
转载 CF 484E - Sign on Fence
E. Sign on Fence time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Bizon the Champion has recently finished pain...
2015-09-08 10:47:00
156
转载 关于树状数组区间最值
居然最近才发现BIT是可以用来求最值的233,道理和线段树差不多,因为树状数组里每个点存储的数据范围是[i-lowbit(i)+1,i],而任意一个区间都是可以被许多段这样的小区间所覆盖的,那么我们就可以用这些小区间的最值来更新所求区间的最值了。 1 struct max_bit 2 { 3 int s[maxn]; 4 int num; 5 ...
2015-08-18 18:55:00
166
转载 Gym 100500B
题目给了四个轮子,每个轮子上有按顺序排列的n个数,要求适当旋转每个轮子,使得四个轮子相同行数相加和相同。 首先,可以计算出每一行的和应该是多少,记为Sum。然后固定第一个轮子,二重循环枚举2、3轮子,然后O(n)判断1+2+3是否等于Sum-4,这样时间复杂度是O(n^3)。 那么,只要把判断过程复杂度尽量降低就行了。 假设每个轮子最大的数是W,那么我们可以把每个...
2015-05-12 23:24:00
114
转载 RQNOJ Bus
H城是一座小城市,前几日才刚刚建立公交系统,且只有一辆公交车。于是,如何最大化这唯一一辆公交车的载客量成了亟待解决的问题。 H城的俯视图可以近似地看成是一个棋盘网络——共有N行M列,从南向北,每行从1到M标号,从西向东,每列从1到N标号。经实地考察,公交总公司选定了K个可以设为站点的地方,其中第K个站点位于第Xi列,第Yi行,预计每天有Pi名乘客需要在此乘车。 设有序数对(X,Y)表...
2013-11-07 17:36:00
115
转载 关于加权的LIS问题
蒟蒻Zigzag正在准备联赛...... 这个算是这几天做的唯一一个值得写一写的题吧。首先LIS的N^2暴力dp应该都会写,就是F[i]=Max{F[j]}+1 那么加权的就吧后面的1换成数的权值就行了,如果优先长度的话加一些判断就行了。 那么O(nlogn)怎么写? LIS的Nlogn应该都会写,就是记一个数组D[i]表示长度为i的LIS的末尾的最小值,...
2013-11-07 17:23:00
224
转载 bzoj3126 [Usaco2013 Open]Photo
省选前最后一天填坑...... 其实这个题早就想过,一直懒得写。我发现我写单调队列一次一个样,真是郁闷。 简述题意就是给你一个n长度的数轴和m个区间,每个区间里有且仅有一个点,问能有多少个点。 我们考虑用f[i]表示前i个位置能放多少个,每一步决策有两个限制:1.每个区间里要有一个点,这样我们可以确定决策区间左边界;2.每个区间里只能有一个点,这样我们可以确定右边界...
2013-05-17 09:06:00
136
转载 bzoj3100 排列
这个题有点恶心啊,总觉得以前做过,可就是想不出来。最后在发现是meng神出的一次模拟赛题= =当时我还P都不会呢... 这个题有两个关键点,一个是选取的子序列内不能有重复,二是选取的子序列要是一个排列(当然这包含了一)。首先如果确定了不会重复,那么只要子序列内的数的和等于(len+1)*len/2就行了,那么怎么确定不重复呢? 我们可以O(N)时间求出来每个数两边第一个和...
2013-05-16 20:07:00
182
转载 bzoj1444 [Jsoi2009]有趣的游戏
这个题是一道AC自动机上的概率DP,可以帮助理解一下AC自动机的结构。 首先我们把所有的串插入trie,建立AC自动机,求一下转移函数(相当于构造一个trie图),那么就可以概率DP了。首先到达每个点的概率为变量,然后我们要求的就是到达接受状态(也就是每个串的结尾对应的状态)的概率。注意到了接受状态就不必往下转移了,因为游戏就此结束了。注意有一个限制是必须要加的,就是所有接受状...
2013-05-15 21:29:00
99
转载 bzoj1449 [JSOI2009]球队收益
这是一道凸费用的题,需要用到拆边的转化。 具体是这样,首先列出关于流量xi的费用式子:f(xi)=ci*xi2+di*(si-xi)2=(ci+di)*xi2-2*di*si*xi+di*si 其中si表示i进行的总常数,xi表示胜场数(也就是规定的流量)。显然这样的式子是不能定费用的,但我们可以求一下每增加1的流量费用的改变量:f(xi)-f(xi-1)=(ci+di)*(2...
2013-05-15 15:31:00
136
转载 poj3415 Common Substrings
一道字符串好题。网上大多解法是后缀数组+栈扫描,大致思想是按K分组以后统计s,t中不同公共字串的个数。但这种方法我实在是理解不能...... 其实,用后缀自动机来考虑这个题可能会好一点。首先,我们给S串建立后缀自动机,然后让T串在S串上跑一下匹配,这是后缀自动机的经典操作。这样我们可以求得T的每一位向前最大能匹配多少位,用这个数目来统计答案。但是有一个问题,就是假设T的某一位u...
2013-05-15 09:48:00
128
转载 三维偏序
贴个三维偏序的模板吧。注意清空bit的时候操作数不要和序列长线性相关。如果上一个题插入的数是无序的话,大概这么做就行了。 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cs...
2013-05-14 08:56:00
100
转载 bzoj3144 [Hnoi2013]切糕
这个题是个挺经典的最小割。 这个题的关键是如何限制h之差不超过d。首先我们按高度分层,每层的点向下一层相同位置的点连边,边权设为点权(也就是说我们要多设一层),然后如果我们割掉这条边就意味着选择了下面这个点。然后,对于h之差的限制,我们把k+d层的点向k层的四周的点连+oo边,也就是说如果我们割掉了一条边,就不能选择+oo的边连接的上面的边,因为选择了这条边,如果再选择上面的边...
2013-05-13 22:04:00
119
转载 bzoj3173 [Tjoi2013]最长上升子序列
这个题...被恶心到了。 如果插入的数是无序的话,貌似就要做三维偏序了= =,但这个题就不需要了哈。 其实,LIS是可以用bit做的,每次我们可以求出以当前插入的数为结尾的LIS长度,也就是查询x的前缀max,插入的时候把查询结果+1插入bit。我们看到,如果插入的数的递增的话,要么新的LIS是以x结尾,要么不变,于是扫一遍就好了。 但是我们得知道插入数的实际位置,...
2013-05-13 21:49:00
116
转载 my APIO2013
Day1 到北京了,记不得上一次是什么时候来的了,看到拥堵的公路感觉还真是令人心烦。 第一次到北大,这里是万千中国学子梦想中的圣地。这里的一砖一瓦,和其它的大学基本无异,只是学术气氛比较浓厚吧。 然后就是三分懂得讲课了,记得老李说出来听课只是让你知道有这么个东西,然后回去自行解决。大概是这样吧,再认真也只能听个思路,具体实现的话还不知道要花多少工夫呢。...
2013-05-12 22:30:00
139
转载 bzoj3143 [Hnoi2013]游走
这个题是让你给遍赋权,问1-n路径的最小期望值。 显然只要我们知道了每一条边经过次数的期望值,我们就可以贪心地给边赋权了。但是要求边的期望值会很恶心,因为每条边正着走和反着走对其它边的贡献是不同的。于是我们考虑求每个点经过的次数的期望,那么每条边经过次数的期望就是它的端点的期望/端点的度数。 设f[i]表示i点经过次数的期望,那么f[i]=Σf[j]/d[j] (j->i) ...
2013-05-07 23:17:00
95
转载 bzoj2337 XOR和路径
最近高斯消元刷的有点多啊。但这个题并不是解xor方程的,其实xor跟这个题实在是没有太大的关系。 对于这种路径上求xor的题,我们可以逐位考虑,这样就变成了0和1之间的运算。那么对于每一个点,我们记录这个点出发到n的期望xor和f[i],显然f[n]=0。 那么f[i]=Σf[j]/d[i](w[i,j]=0)+Σ(1-f[j])/d[i](w[i][j]=1),为什么是1-f[j]...
2013-05-07 23:10:00
115
转载 bzoj2115 xor
这个题网上题解挺多的,讲的也挺详细的,所以我就不必过多赘述。大体思路就是任意选一条1-n的路径,和一些独立环xor起来得到一个最大值就是答案。 注意个和路径不相交的环,那么它们xor起来的结果的意义就是从路径上任意一点走到环,遍历一遍再从原路返回路径,路径连接环的那段被走了两次,xor值抵消。 注意独立环的个数有m-n+1个,求得时候dfs,每条dfs树的非树边对应一个环。 xor...
2013-05-07 10:00:00
111
转载 bzoj2844 albus就是要第一个出场
这个题有了hdu3949那个题的基础就非常好做了,因为这两个题求得东西是对偶的.... 这次我们要求某个数是第几个出现的(不去重),那么我们只要知道它去重的排名,再乘上每个数重复的个数(2n-m),加上1就好了。 还是高斯消元,不过要注意的是这里的高斯消元和普通的解xor线性方程还不一样,因为我们是要得到一组基数,代表从高到低的一些二进制位,所以我们要从最高位的元开始找,并且消的时候...
2013-05-07 08:16:00
87
转载 hdu3949 xor
这个题是用来研究xor性质的一道好题。 首先我们可以暴力地找出些规律,我们发现不管拿出多少个数,他们能xor到的数,出现的次数都是一样的,并且都是2的倍数。事实上,我们不论用原数ai还是ai xor aj得到的数,去xor起来得到的数都是这些。 这样我们可以想方设法地化简我们用到的基数,也就是找到一组基数使得它们能够xor出所有原数能xor出的数,并且要尽量简单。我们可以模仿高斯消元...
2013-05-07 08:09:00
164
转载 bzoj3105 [cqoi2013]新Nim游戏
传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同)。两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿。拿走最后一根火柴的游戏者胜利。 本题的游戏稍微有些不同:在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿,但不可以全部拿走。第二回合也一样,第二个游戏者也有...
2013-05-06 17:05:00
88
转载 Sset
神犇考题第三题: 设 S ={x|x∈Z,1≤x≤n}给定 N 个 S 的子集 Si,每个集合有一个权值 Wi。这 N 个集合满足其中任意 K 个集合的并集中至少有 K 个元素。请从中选取若干个集合(可以不选),使得其并集的元素个数恰等于选取的集合数,且这些集合的权值和最小。 考试的时候觉得这个题相比另外两个挺可写的,于是就使劲想,想出了最大权闭合图,想出了每个集合代表一个数字,可就...
2013-05-04 16:21:00
130
转载 bzoj2752 [HAOI2012]高速公路(road)
线段树好题。 很容易求出要维护的东西的公式,给线段标号,设x,y为左右线段标号,那么其中出现的总和就是Σc[i]*((i-x)*(y-i)+(y-x)),拆开就是Σ(y-x-y*x)*c[i]+(x+y)*i*c[i]-i2*c[i]. 于是只要维护∑c[i],∑i*c[i],∑i2*c[i]就行了。 我一开始想偷懒写bit发现用了bit以后维护的和会升至3维,(⊙o⊙)…三维求和...
2013-05-04 15:03:00
103
转载 bzoj 2004[Hnoi2010]Bus 公交线路
状压DP。 f[i][s]表示第i个车站之前的p位的状态为s的方案数,注意这里状态s我们规定第一位为1,并且一共有k个1。 这样的话状态一共有C(9,4)=126种,于是设计一个126*126的矩阵,自乘n-m次就可以了; 初始状态:11111(m个1)的状态; 目标状态:11111(m个1)的状态。 bus 1 #include<iostream> 2...
2013-05-03 09:47:00
128
转载 bzoj2001 城市建设
bzoj崩了3天了......本人目前处在无题可交的状态,郁闷啊。不过TY复活了,看到以前写过的代码有点小激动。 切入正题,这个题想了好久才写,主体还是分治,只是中间处理部分比较巧妙。这个题GYZ在wc上讲过,思路也很清晰,就是不太好写。 过程主要分两个部分(我直接粘解题报告了): 1. Contraction 把 L..R要修改的所有边权暂时标记为-∞; 对图做 MST; 此时观...
2013-05-02 16:53:00
77
转载 bzoj2120 数颜色
这篇题解拖了好久......原因是一直不知道该怎么叙述。 首先,类似采花那个题,统计答案的时候要找到每个位置之前和它颜色相同的第一个位置pre[i],那么只要这个位置的pre[i]不在查询的[L,R]区间里,就说明这个颜色是这个区间里第一次出现的颜色,答案+1。动态修改的话我们可以用set来实现。 然后传统的树套树做法是将序列建一棵线段树,再给线段树每个节点建一棵平衡树,代表[l,r...
2013-04-30 09:06:00
96
转载 bzoj2527 [Poi2011]Meteors
这个题是在GYZ冬令营讲课课件里翻出来的,所以我一开始使劲地往分治上去想,良久,无果·········· 题意是给你一圈位置,位置上有若干颜色(可以重复),每个颜色有一个需求量,每一个时间给一个段加上一个数,最后问每个颜色最早加到需求量的时间。 今天早晨睡觉起来(大概是10点多),赖在床上,YY这个题,突然想到整体二分然后计算贡献似乎非常不错。但是对于序列的处理怎么搞才能把复杂度降下...
2013-04-29 21:40:00
75
转载 bzoj1396 识别子串
貌似是个傻×题啊.......由于贪心地想要刷双,结果被空间卡了半个小时。 这个题是问字符串S每一位的最短识别子串是多长(识别子串指包含这个字符且只出现在S中一次的子串)。 为了想这个题,我对着SAM的图YY了一天。终于,我发现,从后缀树的角度考虑是比较简单的。因为SAM是一棵逆序的后缀树,那么每一位i的前缀(除了包含在别的前缀里面)所对应的节点一定是后缀树里的叶子节点。那么我们只要...
2013-04-27 17:45:00
85
转载 bzoj1415 [Noi2005]聪聪和可可
算是正式开始接触期望DP了吧,以前在NOIP之前TY比赛里做过一些,基本上都是根据初中的概率知识乱搞的,但事实上这种期望概率动规题还是可以很难的。 这个题是看论文上的题解,算是比较基础的期望dp了吧。首先需要预处理一些东西:way[i][j]表示聪聪在i可可在j点时聪聪会走到哪个点,t[i]表示i点的度,next[i][j]表示和i点相连的第j个点是谁(就是可可在i点时可以走到的点的集...
2013-04-27 11:09:00
118
转载 bzoj2631 tree(伍一鸣)
首先如果没做过维护序列这个题的可以先去做一下,对标记有个初步理解,题解在这里。 看到了一道LCT练手题,于是果断刷了,这个题主要恶心在传标记上,别的都是基本的LCT操作。 那么我就说一下传标吧。链接一个博客 Kanari's World 这里面讲的不错,下面我只说说我的体会。 我习惯把所有的标记在一个过程里下传,下传顺序一般是旋转,覆盖,加减,注意如果有覆盖的话...
2013-04-27 08:22:00
93
转载 bzoj3111 [Zjoi2013]蚂蚁寻路
zjoi2013的题终于做完了,拖了好久,觉得这份题质量挺高的,而且代码量都不是很大,zj的题还是比较注重思路的,而且都可以有不同的解法,甚至可以骗分= =。 这个题我一开始只能想出N^4的,后来参考某神的题解发现我多出来的那一维完全是没有用的......但是我还是想总结一下思路,毕竟这种2D的DP做的比较少,以免以后忘掉。 首先经过一些列的简化我们发现这个题实际就是求个凹凸不平的形...
2013-04-26 21:19:00
108
转载 HDU4436 str2int
后缀自动机......慢慢体会ing。 这个题的题意是给你一堆数字串,让你去重以后问所有字串代表的数字的和(mod 2012) 这个题n是10^6级别的,所以要充分利用重复字串的性质。这么考虑,当有许多子串的都添一个末位数字K时,这些子串的和就是原来字串的和*10+子串个数*k。其实这些字串在自动机里面对应的就是一个状态,当这些状态都存在一个指向Q的转移时,就可以把这些状态的sum累...
2013-04-26 16:29:00
107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅