HZOJ
写在前面
改了inf小时T3还没改出来破如防,本来不想写的,但还是随便写写吧。
A. 最长不下降子序列
哈哈哈过不去的大水题。
题意是给出一个由1和2组成的序列,可以选择某个连续区间翻转,求问最长不下降子序列的长度是多少。
容易知道形成的序列形态一定是11...222的。考虑将其复原,即选择中间一段翻转,就变成了111222111222。正反分别跑一遍,然后\(O(n)\) 组合答案即可。唐。
B. 美食节 (food)
竟然场切了道蓝。。。
题意略。
简单分析可得无法满足条件当且仅当数量最多的种类超过了其他的总数+1。没有这种情况时按字典序最小的方案取即可,出现了这种情况就先取数量最多的,再交替取数量最多的和其他的。维护的话上线段树维护区间最大size和最小值即可,可以把vector倒序放在叶子节点,弹出时pop_back()即可。
C. 字符串 (str)
改了一辈子。
题意也略了。
思路大概是将贡献分为串内和串间的,串内的可以Manachar,串间的需要一些手段。
有Trie法和SA法。改的是SA法至今没改出来,只比暴力优了一点。思路大概是求出所有串的排名,然后在S串中找T串,T串中找S串。能A的复杂度是\(O(nxlog)\) 的,奈何本人太菜只能写出了\(O(n^2log)\) 的qwq。Trie法就是将所有串倒序上Trie树,然后根链前缀和加二分哈希解决。窝后悔写那个神人SA了。
D. 概率 (pr)
咕了。
主打一个速战速决,动作有了质量无所谓了。