2019.10.2
最近比较喜欢补CF的题吧qwq
CF1228E
其实我原来的想法是跟hongzy一样的方法
然后发现其实一个区块里面的点它的邻接表是一样的,直接用map压vector即可
CF1228F
首先根肯定还是重心,多个重心就都试
然后从下往上比较显然,只有儿子个数是1或3才有可能
为什么我的代码怎么卡时都卡不过去,一个同样写法还没有写inline,register的yyr随便就艹过去了啊/jk
2019.10.3
CF1221C
相繁琐了呢
其实就是min(min(m,c),(m+c+x)/3)
考虑当x大于min(m,c)的时候肯定答案是min(m,c)
那就考虑小于的时候,显然是后者啊
CF1221D
啊,就是要想到每个位置最多提高2次,然后dp爆艹过去就行了
CF1221E
好神的博弈啊……
网上的题解挺好的啊,但是代码不太看得懂,膜了sk的tql
2019.10.4
CF1221F
线段树好题!
瞄了一眼题解,然后又消化了好久qwq
很显然可以把所有点都翻到y=x上方,显然不影响对吧
然后可以转化为二维偏序问题
第一关键字x按从大到小,第二关键字y按从小到大
这样就能保证到每一个点的时候,x大于他的且y小于它的点的权值一定被加上过了
P.S代码上有一个细节就是要及时pushdown,不然会炸long long
2019.10.5
BZOJ3572: [Hnoi2014]世界树
虚树题啊
建完虚树以后,跑两边dfs(一遍从下往上转移,一个从上往下转移)
然后对于虚树上的每一条边二分,看跟上面还是跟下面
有一些细节不说了
CF1221G
好题!
显然要容斥一下对吧,主要就是那个meet in the middle部分不太好淦
对于第一部分统计出对应的第二部分哪些位置一定不能选1
然后做一下子集和(顺序不能搞反了)
然后枚举第二部分的所有合法情况,答案加上状态取反就行了
之前做过的一道SAM的题的性质,刚从byf博客上也看到了,就粘下来了qwq
两个后缀的LCP等于该字符串反串后缀树上所对应的两个节点的最近公共祖先u的right集合中最长的串,即maxlen(u)
感觉以前好naive啊,那个NOIP D2T250分白给的啊?我记得我当时连题目都没有完全读懂QAQ
还有打完表以后找规律太恶心了啊QAQ
2019.10.6
BZOJ1556: 小奇走迷宫
从黄学长那看的qwq
显然撞一个墙只能从周围四个格子撞,那就用这些格子跑最短路,然后状压dp一下
一开始调了一晚上的错还不对
今天早上才发现数组开小了???为啥溢出了以后这个sb编译器还不说一声啊……
(然后这个错没调出来,调出了一堆其他错,捂脸)
BZOJ1227: [SDOI2009] 虔诚的墓主人
看了一眼感觉有点像树状数组,但是不会做
显然平方的谁都会淦
发现相邻两个数中间的点的lef,rig是一样的,直接乘上up,dow的sigma啥的就好了
x离散化一下,然后按y排序,一行一行处理
2019.10.8
CF1241D
dp题,一开始没想到啊
可以用总颜色数-最长的不需要改变的颜色数
后者就是对于颜色i和i-1,i-1最后一次出现要在i第一次出现之前
2019.10.9
CF1241E
dp题,f[x][0/1]表示x这个点,还剩0/多个度可以消耗,
当然有可能0个度不止0个度,但是无法保证,而多个度可以保证一定不止0个度qwq
显然儿子状态排个序就ojbk了
2019.10.10
CF1241F
这场简直dp slj啊……戳中痛点了QAQ
倒着做,处理出每个点开头最短的满足要求的串的结束位置
搞一个map边做边继承即可
最后统计答案比较显然吧qwq
BZOJ1176: [Balkan2007]Mokia
第一眼离散化以后二维树状数组上啊
然后发现把一个询问拆开,啊,三维偏序,cdq分治草过
2019.10.11
BZOJ4367: [IOI2014]holiday假期
显然路线要么是向左要么是向右要么是先向左然后往右或先向右然后向左
显然满足一个单调性,然后就可以分治优化决策单调性,然后用主席树找区间前k大值的和
nlog^2n
2019.10.15
CF1244C
考试的时候只想到扩欧的做法然后贪心的让d的系数尽可能小,发现过程中会爆long long
然后byf就搞了些int128之类的黑科技草过去了
赛后才知道还有一些美妙的解法
把d的系数表示成mod w的形式
发现把w的倍数个移给w的系数会更优
所以最优的情况就是判d的系数在[0,w)范围内时有没有合法的解即可
CF1244F
好题啊,我记得scape鸽鸽说过这种题首先要自己挖掘性质
首先如果一个点在某一轮不需要改颜色,以后都不需要改颜色
第二如果一个点在某一轮不需要改颜色,那下一轮相邻两点也不需要改颜色
所以这是一个传递关系对吧,从初始就不需要改颜色的点深搜即可
2019.10.18
BZOJ3167: [Heoi2013]Sao
从szr的blog那看到的题目,感觉还挺好的
其实主要是状态难想,然后接下来的排列个数感觉还是比较好想的?
好像见过几道这样的f[x][i]表示当前子树构成的序列里根x在第i位
然后枚举子树,然后合并,需要前缀和优化一下,然后注意一下细节
2019.10.20
BZOJ2595: [Wc2008]游览计划
学习了一下最小斯坦纳树的写法
思路还是比较清晰地,先更新这个状态拆分成两个合并得到
然后再用spfa解决同层的点扩展
最后输出方案的时候就是记录了每个状态由那个状态转移来的,然后dfs染色吧
「小奇模拟赛2」[BZOJ3784] 小奇的树
从黄学长blog里看到的题
会YY 70pts
那个随机生成的不会,更没有想到点分治
如果枚举两个点,这个对数是平方级别的
点分治的点数是nlogn级别的,能否利用这一性质
显然在当前根的情况下一个子树里的点可以选择的另一个点是有一个范围的
然后就转化成了超级钢琴了
2019.10.24
BZOJ3576: [Hnoi2014]江南乐
sg函数爆艹
利用整数分块的性质,一开始就是不太理解为啥mex里的还要xor
后来才明白自己的naive,mex的是子状态的sg,而这个子状态不止一堆,这整个状态的sg函数就是这些的xor
2019.10.26
BZOJ1146: [CTSC2008]网络管理Network
树状数组套权值线段树
树状数组是按dfs序建的,利用树状数组是查前缀和的特点,即便是求dfs序1到当前的,但是前面的被差分抵消了,实际上就是根到当前位置的
然后每个位置都有一个动态开点线段树,然后差分一下就好了,要弄两个数组
保存一下差分的时候用到的线段树位置,因为是树状数组套的嘛
2019.10.27
「NOIP模拟赛」小奇的数列
挺好的题啊,没有想到暴力如果加了数学分析可以那么牛逼啊
显然由鸽巢原理可知……
然后正解就是求前驱嘛,然后发现可以平衡树也可以权值线段树啊
突然想到可不可以当前这个取模以后比前面要减的那个取模以后小,然后想到显然这样是不优的,这样不从前面的那个开始会更优,所以就是前驱就好了