2022.9.14 P4218+CF1687E+CF1728F+CF1718D

又摆了好久。。。上午捣腾 buff 搞了很久,看枪实在是太有吸引力了🤤,好想要 aug-动量,10 块钱一把,买不了吃亏。

有没有这样一种可能,我入手一把崭新出厂的动量,哪天 aug 加强了,我就可以高价倒卖🤡。

P4218 [CTSC2010]珠宝商

很厉害的根号分治+点分治题,从来没有见过这种搭配太菜了哈哈哈哈哈哈。

可以给出两种暴力方法:

  • \(O(nm+n^2)\):对于每一个 \(lca\),跑出所有从它延伸出来的串,分别在正串 \(SAM\) 和反串 \(SAM\) 上打标记。
    然后枚举 \(m\) 个位置,统计它接到了多少个正串多少个反串,乘起来算贡献。

  • \(O(n^2)\):暴力跑每一条路径,通过 \(SAM\) 统计出出现次数。

我们就这这个点分治,设定一个阈值 \(B\) ,当前分治子树若大于 \(B\) ,执行第一个暴力,小于 \(B\) 则执行第二个暴力。

CF1687E Become Big For Me

挺高消的一道题🤡。

我们的目标是用子集 \(lcm\) 表示出 \(\gcd\{a_i* a_j\}\),这东西相当于取出所有质因子的最小次数和次小次数,可以使用 \(lcm-gcd\) 反演,也就是 \(min-max\) 反演。

可以得到 \(2^n\) 级式子,考虑优化,不优化式子,考虑找出一个很短的子序列,使得其 \(gcd\) 等于原式。这很好找,随便构造可以达到十几的水平。

CF1728F Fishermen

我很喜欢的一道牛子题😋。

最优化不需要精细统计,我们先考察一下可统计的解的样本空间,发现我们的限制条件非常阴间,于是加入一些不可能成为最优解的样本来方便统计答案

很惊人的,我们把 \(b\) 的条件放松为 \(a_i|b_i\),并且互不相同即可。

这样子我们可以做一个二分图匹配。左部点是编号,右部点是 \(n^2\) 个可选权值,从小往大枚举右部点跑匈牙利,答案最有等价于字典序最小。

有一个实现匈牙利的好习惯,就是说如果没有找到增广路,那就不要清空 \(vis\) 数组。这样可以保证复杂度。

CF1718D Permutation for Burenka

又是一道牛子匹配题,这样的最优化给我来一打!

首先可以跑出笛卡尔树上每一个空点的可用值域,然后构造解相当于数与区间匹配。

看起来非常麻烦,感觉放下一个数后还要更新其他的区间。事实上,很巧妙的一点是,我们采用贪心排序的匹配方法,可以完美地避开这个问题,非常厉害。

猜结论,合法答案是一段区间。

那么我们考虑求出上界和下界,这两者是本质相同的。求上界的话,我们把区间按照 \((r,l)\) 从小到大排序,每次贪心找出最靠近当前区间左端点的合法数字。当第一次失配时,我们就可以确定上界就是当前区间的右端点。

posted @ 2022-09-15 01:03  陈刀仔  阅读(56)  评论(0编辑  收藏  举报