emmm…为什么叫选做呢?因为有一个题没做。。
没做的原因是因为不想看题了23333
来随便口胡一下做法??
感觉这套做得不是很认真。。那就不认真吧
感觉这套题做下来有点奇怪。。我也不知道哪里奇怪
「HAOI2017」新型城市化
最大的难点在于读题。。
一开始以为最大城市群指的是那个分配的最大城市群。。
然后猜了几个结论。。然后发现根本过不去。。
玩了下错的数据,发现看错题了。。
其实不是分配完的,就是最大城市群
那么就是二分图的最大独立集
因为是二分图,因此网络流之后看割边就好了
「HAOI2017」八纵八横
其实就是WC的xor和最大异或和的一部分合体。。
因为一开始且一直都是联通的,所以很好做
「HAOI2017」字符串
并不会做。。看了下题解,要用AC自动机
AC自动机是什么来着??
复习了一下AC自动机。。
一开始我想的是暴力枚举下一位不匹配,那么匹配的是什么
那么复杂度有一个
l
e
n
∗
∣
字
符
集
大
小
∣
len*|字符集大小|
len∗∣字符集大小∣。。
然后发现题解有一个很高妙的做法
正串和反串一起建AC自动机,把fail树建出来
然后然原串在上面跑
考虑一个点
i
i
i,如果他的下一位不匹配,那么我们只需要让
i
+
k
+
1
i+k+1
i+k+1之后的都匹配就可以了
也就是
i
i
i这个点在fail树的子树中,对于原串的每一个位置j,如果
j
+
k
+
1
j+k+1
j+k+1的反串节点也在
i
+
k
+
1
i+k+1
i+k+1的反串节点的fail子树,那么答案++
然后发现会有重复的,因为下一位不一定不匹配。。
考虑去重
就是处理到点i的时候,如果
i
+
k
i+k
i+k也是匹配的,那么答案–,也就是减去
i
−
1
i-1
i−1的贡献
要注意的是,两个部分要分开做。。也就是开两个树状数组或者分两次来做。。一开始因为这个自闭了
「HAOI2017」方案数
没做,咕了
不想看题了
看起来很diao的样子啊
「HAOI2017」供给侧改革
因为数据随机,因此,不同答案很少。。
或者说答案很小
可以发现,答案是一段一段的
一开始想的是,用那种分治的填法,一段一段填。。
然后我发现无法快速求date,然后就GG了
其实这个做法,本质上有的是答案段数很少,但是没有用到答案很小
有一个很高妙的做法
先按r排序,一个一个加入
就是建一颗字典树,维护一下每个后缀的前40位
就可以轻松地维护处长度为
i
i
i的lcp的最大所需要的
l
l
l了
每一次求答案的时候把所有长度扫一次就好了