首页 > 其他分享 >杂题乱做4

杂题乱做4

时间:2023-03-25 11:55:22浏览次数:53  
标签:子树 匹配 枚举 哈希 delta 杂题 size

P8499

首先,显然需要树哈希。哈希方法见 OIwiki。

设 \(f_i\) 表示 \(i\) 子树的哈希值,那么我们如何判断 \(G\) 能否通过删去不超过 \(k\) 个点变成 \(H\)?

考虑 \(solve(i,j,delta)\) 表示我们需要判断 \(G\) 的 \(i\) 子树是否能通过删去不超过 \(delta\) 个点变成 \(H\) 的 \(j\) 子树。

那么我们执行 \(solve(i,j,delta)\) 时,考虑枚举 \(i,j\) 的每一个儿子,并将这些儿子中子树形态相同的能匹配就匹配上,然后扔掉(可以通过预处理,对儿子的子树哈希值排序,然后直接双指针)。

可以发现这样贪心扔掉尽可能多的对一定会是最优解之一。证明显然。

然后考虑剩下的不同对。

直接对 \(i\) 的未匹配儿子枚举全排列,挨个判断一下按这个排列能否匹配 \(j\) 的未匹配儿子即可。

加一些剪枝优化即可通过。

具体地,当 \(i\) 的儿子个数小于 \(j\) 的儿子个数,枚举全排列时如果任意一对匹配满足 \(size_{a_i} < size_{b_j}\) 就直接不考虑这个序列,计算 \(\sum size_{a_i}-size_{b_j}\) 如果中途大于 \(delta\) 了就直接不合法。

复杂度比较玄学,但是容易发现这个算法的复杂度接近 \(O(n\times k!)\)。

P8290

考虑枚举最小值 \(x\),设 \(f_{u,x,0/1}\) 表示当前考虑 \(u\) 到某个子树内的一条链,最小值钦定是 \(x\),是否已经有最小值出现的方案数,再设 \(g_{u,x,0/1}\) 表示和,那么转移是容易的。

然后对于枚举一棵新子树的时候,我们在转移的同时也要考虑合并 \(u\) 到前面子树和 \(u\) 到这棵子树的链的并。这个也是简单的。

发现直接这样算,复杂度 \(O(nV)\)。

但是可以发现,如果 \(x\) 不是 \(l_i,r_i,l_i-k,r_i-k\) 类似的这些值,那么 \(x\) 在变化的过程中,答案值实际上是一个多项式。

于是对于这 \(O(n)\) 段选 \(n\) 个数出来 \(dp\) 然后直接插值即可。

标签:子树,匹配,枚举,哈希,delta,杂题,size
From: https://www.cnblogs.com/infinities/p/17254466.html

相关文章

  • 【杂题乱写】ARC107
    AtCoderRegularContest107ASimpleMath把\(a,b,c\)提出即可。BQuadruple改成\(a+b=k+c+d\),显然可以枚举\(c+d\)的值从而得到\(a+b\)的值,在此基础上求出每......
  • 【杂题乱写】ARC105
    AtCoderRegularContest105AFourtuneCookies按题意模拟。BMAX-=min题目中提到过程一定会停止,考虑\(n=2\)时就是更相减损至相等,即求\(\gcd\),扩展到\(n\)更大......
  • 【杂题乱写】ARC106
    AtCoderRegularContest106A106枚举指数即可。BValues要求每个连通块内\(\suma=\sumb\),这样一定可以得到答案。CSolutions比较简单的构造。分\(m\)的值进......
  • USACO23FEB G【杂题】
    A.[USACO23FEB]EqualSumSubarraysG给定一个长为\(n\)的数组\(a\),满足所有子区间的和互不相同。对于所有\(1\leqi\le n\),求出最小代价使得对\(a_i\)进行一......
  • 【杂题乱写】ARC104~106
    ARC104APlusMinus普及题,解方程。BDNASequence枚举区间前缀和判断合法即可。CFairElevator先排除出现重复或\(L\geR\)的明显不合法情况。观察发现一个合法......
  • 杂题口胡
    其实是对着题解贺ARC058F\(\mathcal{Link}\)考虑暴力DP,设\(f_{i,j}\)表示前\(i\)个串中长度为\(j\)的最优串。注意到字典序具有良好的性质:对于有希望成为最优解......
  • 2023/3/11杂题总结(未完)
    ELCA这道题的整体思路就是,对于一个lct,我们能够维护的东西,需要保证能够在较优的时间内完成实边修改和区间合并(就是得保证支持实虚边转化和平衡树的维护),那么这道题,......
  • 杂题乱做3
    补了一些讲过的远古题和近期的CF2000分以上的部分题。CF1764H题意:有序列\(a_n\),初始\(a_i=i\),给定\(m\)个修改操作\([l_i,r_i]\),修改方式是把区间内所有数赋值成......
  • 3月CF杂题
    CodeforcesRound853(Div.2)打的VP。E.ServalandMusicGame妙妙题。F.ServalandBrainPower妙妙题+1。对\(k\ge5\)的情况,我们把整个序列分成5段,那......
  • 3月AT杂题
    ABC292Ex太一眼了,不写了。F-RegularTriangleInsideaRectangle题意:给你一个大小为a*b的矩形,求矩形内部能放下的最大正三角形的边长。\(a,b\le10^3\)。假设a......