摘要:
n <= 60w,∑n <= 200w,1s。 解:首先有个全排列 + 树状数组的暴力。 然后有个没有任何规律的状压...首先我想的是按照大小顺序来放数,可以分为确定绝对位置和相对位置两种,但是都不好处理字典序。 然后换个思路一位一位的考虑放哪个数。用一维来记录|i - pi| - 逆序对数 * 2 阅读全文
摘要:
D1T1,超级钢琴 + 可持久化01trie。 T2,sam上子树优化连边,注意有一个堆坑就是多个长度不同的串可能在一个节点...然后长度相同的串在一个节点没影响...然后子树连边的时候别把路过的节点的len值也加上了... T3,什么SB题guna。 D2T1,只想出了个SB背包套背包,比搜索跑的 阅读全文
摘要:
题目类型:传统。 答案比较类型:逐行比较类型(忽略多余空格和制表符)。 配置:交互。 编译器参数: -o %s %s.* ..\..\data\%s\grader.cpp -Wl,--stack=998244353 grader.cpp:这个就是交互的程序,要跟传统题一样开文件,调用选手写的交互库并 阅读全文
摘要:
题意:求字符串[l, r]这些前缀的两两之间最长的最长公共后缀。 把fail树建出来,就是编号在一段区间的最深lca。 套用我之前口胡的莫队做法可以做到O(n√n),光荣70分。 而且我还非常SB的把原串,fail树,链表上的节点搞混了...... 这个链表是那些关键节点按照DFS序串起来的。莫队的 阅读全文
摘要:
题意:给你一棵树,第二天起每天随机砍一条边。问每一天森林的期望权值。权值为每个连通块的点数平方和。 解:先把平方拆了。发现就是点对数量 * 2,但是两个点相同的时候不 * 2,就是有序点对的数量。 然后可以求树上路径,点分治 + fft。 然后考虑我们要如何计算答案。第i天有C(n - 1, i - 阅读全文
摘要:
解:splay + 线段树合并,分裂。 首先有个乱搞做法是外层拿splay维护,有序区间缩成splay上一个节点。内层再开个数据结构支持合并分裂有序集合。 内层我一开始想的是splay,然后就没有复杂度保证,乱搞。 后来发现可以用线段树分裂/合并来,全程复杂度一个log还能在线实时回答询问,NB! 阅读全文
摘要:
因为cf上一堆水题,每个单独开一篇博客感觉不太好,就直接放一起好了。 CF1096D Easy Problem 给定字符串,每个位置删除要代价。求最小代价使之不含子序列"hard"。 设f[i][f]表示前i个删到只匹配f位子序列的最小代价。转移看代码吧。O(n) 1 #include <bits/ 阅读全文
该文被密码保护。 阅读全文
摘要:
题意:给定线段上n个特殊点,m次询问。 每次询问:在第l个点到第r个点这一段区间中选出k个点,将其分成k + 1段。使得最长的段尽量短。 输出这m个询问中答案最大的。 n<=400,m<=250000 解:显然有个暴力DP是n4的。f[l][r][k]表示把[l, r]分成k段的最短长度。 然后我们 阅读全文
摘要:
来自Blogewoosh #6。 啃了一下,写个翻译吧。 问题:你有一个数组,你不知道每个元素的大小,但是能够提出询问:a[x]是否>=v?你需要找出这个数组的最大值,只能询问n + lognlogV次。 我们首先随机一个排列,按照这个顺序来询问。 记录一个前缀最大值。如果当前值大于前缀最大值,就暴 阅读全文