Live2D

Involuting Bunny! (2021.8)

  CF1555F & Submission.

  Tags:「A.生成树」「B.Tricks」

  分类处理询问的 trick:连接两个连通块的边显然合法,先用这些边构建生成森林。发现每条边至多在一个环上,所以可以用 BIT 在 DFS 序上维护其余边是否可行。



  CF1554E & Submission.

  Tag:「C.性质/结论」

  把操作转化成“对于边 (u,v),令 auav 加上 1”,有以下结论:

  • 合法的序列数量为 2n1,归纳可证不重不漏;

  • k>1,至多只有一种方案使得所有 kau,递归构造可证唯一性;

  • k>1,存在方案使得所有 kau,则 k(n1),显然。

  然后就随便做了。

  Attention: 先分析性质,再想算法。例如这道题走起来想 DP 就裂开了。



  CF1550E & Submission.

  Tag:「A.DP-状压/插头 DP」「A.分治-二分答案」「B.Tricks」

  二分答案 l,枚举每种字符第一个长度超过 l 的位置的顺序关系,每次放置一定是尽量考前放,所以可以利用预处理判断,将这一过程状压即可。

  Attention: 很讨厌这种字符串填充的题……不要一味地追求“扫一遍出解”!



  CF1550F & Submission.

  Tags:「A.并查集」「A.生成树」「B.Tricks」

  所以学了下 Boruvka 求 MST 的算法,类似于朱刘算法,维护连通块,每次求每个连通块连出的最小边,尝试加入这些边合并连通块。一共只有 O(logn) 次加边,故复杂度为 O(mlogn)。这个算法的优势在于:如果 m 很大,但我们存在一种直接求出连通块连出最小边的方法,就可能回避复杂度中的 m

  回到本题,在 i,j 间连从 ai 跳到 aj 所需的最小 k,求出 MST 就能预处理所有答案。使用 Boruvka 及上述优化 trick,利用 std::setO(logn) 的时间内找最小边,可以做到 O(nlog2n)



  CF1553G & Submission.

  Tags:「A.并查集」「C.性质/结论」

  考虑奇偶性,答案显然在 {0,1,2},故只需判断答案能否为 0,1。对于 0,并查集直接维护连通块。对于 1,考虑每个 ai+1 带来的连通块之间的连边,暴力 O(log2A) 记录信息,若两个连通块间有边答案就是 1

  Attention: “素因子个数平方”是很小的,不要定式思维觉得“暴力”过不了。



  CF1543E & Submission.

  Tags:「C.构造」「C.性质/结论」「C.思维」

  震撼兔子一整年.jpg 首先分析一个 Simple 图的性质:(u,v)E|uv|=1,所以钦定某个点为 0,其邻接点为 20..n1,然后 BFS 构造,每个结点的编号为与它邻接的上层结点的或和。易证。

  此后,第二问,仅需对 Simple 图求解。由于颜色总数为 2n,每种颜色出现次数相等,所以有解的必要条件为 n2nn2 的整幂)。接下来给出人类智慧构造:

cu=i=0n1[iu]2i.

正确性易证,但能构造出来这玩意儿就离谱 qwq。



  CF1542E2 & Submission.

  Tag:「A.DP-计数 DP」

  这题评分和上题一样就离谱……令 f(i,j) 表示长度为 i 的排列对 (p,q)p 的逆序对数减 q 的逆序对数之差为 j 的方案数,利用二次前缀和优化转移。求答案枚举 p,q 的 LCP 和第一个不同位置的差值即可。

  Attention: 注意检查模意义下的四则运算函数,这个写错就没救了。



  CF1540C2 & Submission.

  Tags:「A.DP-计数 DP」「C.性质/结论」

  一次操作起作用的条件是 ai+1ai<bi,记最终序列为 f,那么有 f=a。考虑最前一段被操作影响的区间,有 f1+(f1+b1)+(f1+b1+b2)+=a1+a2++ai,进而 f1=Sa(i)Sb2(i)iS2 即二次前缀和)。那么由于 i 任取,我们要保证 Sa(i)ix+Sb2(i1),DP 一发。注意到有用的 x 取值不多,仅 O(n) 中,所以可以预处理出所有答案。



  CF1539E & Submission.

  Tags:「A.DP-杂项」「C.细节」

  定义状态 f(i,0/1) 表示 左手/右手 拿着第 i 张卡,右手/左手 拿着第 i+1 张卡时,能否通过 i 及其以后的限制。转移枚举下一个换手的位置,显然这样的位置如果合法,必然越靠前越好。以 f(i,0) 为例,为了转移它,仅需记录从 f(j,1)1j 开始,左手牌的限制区间交集和是否每张右手牌都能通过紧接着的限制,虽然比较麻烦但不难想。(

  Attention: DP 时注意不要让新的信息覆盖掉需要使用的旧信息,写完回头捋一捋各个变量在当前的意义!



  CF1536F & Submission.

  Tag:「C.性质/结论」

  打序列上游戏的 SG 表知环上后手必胜,而且后手操作只要合法都必胜。所以只需对双方共进行偶数次放置的结束状态计数。枚举放置数量,显然有

answer=2i=n2n[2i][(ini)+(i1ni1)]i!.

  Attention: 你总不能把 SG 表打错了吧 qwq!



  CF1534F2 & Submission.

  Tags:「A.缩点/圆方树」「B.模型转化」「C.性质/结论」

  从 easy 版消除所有沙子为目标,可以把沙子的影响关系建图,每坨沙子向向上左右连至多一条边,缩点之后 0 入度点的个数即为答案。对于 hard,合法条件等价于每列第 ai 坨沙子被消去,所以问题变成在 DAG 上选择若干点,使对于每个关键点,都至少有一个选择的点可以到达它。不难证明每坨沙子能覆盖的关键点是一个连续区间,所以可以拓扑出每个点的覆盖区间,此后转化为区间覆盖问题,随便贪心即可。



  CF1530F & Submission.

  Tags:「A.DP-概率/期望 DP」「A.DP-状压/插头 DP」「A.数学-容斥计数」

  容斥列和对角线的是否满足,行的概率可以直接算出来,结束了。(



  CF1528D & Submission.

  Tags:「A.DP-最短路相关」「B.Tricks」「B.优化建图」

  解决“原地等待边旋转指向某个结点”很好办:新建 i,(i+1)modn,1 即可。然后你发现不管这个图上的边怎么扭,Dijkstra 这类最短路算法的贪心结构是一直保证的,所以写一发 O(n2) 的 Dijkstra 就行。

  注意这个细节:也许图在变,但并不妨碍某些算法的正确性。

  Attention: 略过或者叉掉某个思路的时候麻烦严谨说服自己,好多次都是秒出正解(比这题难的那种)然后莫名其妙就不想了 qwq。



  CF1527E & Submission.

  Tag:「A.DP-数据结构优化 DP」

  维护 k 棵线段树,第 i 棵的 j 位置表示 f(i,j)+ 从该状态转移到当前位置的花费,细节不难。

  Attention: 虽然因为考虑到是 CF 所以才这样干,决策单调性什么的至少得打个表在下结论吧……如果在一个未证、甚至已证的结论下无法优化,不要一根筋,重启解决 90% 的问题。(



  CF1523E & Submission.

  Tag:「A.数学-组合计数」

  求“超过 i 盏灯亮”的概率之和,问题在于求“n 个球里选 m 个,两两之间至少隔 k 个”,经典问题,先拿出用于分隔的 k(m1) 个,选完放回去,方案数为 (n(m1)km)



  CF1521E & Submission.

  Tags:「B.Tricks」「C.构造」「C.思维」

  一种重要的构造思想:给对象分类。例如奇偶分类、构造二分图……本题中,就可以按 此图(为了不占版面就不放图了 awa)所示把格子分为四类,发现蓝色格子是万能的,不可能与任何格子冲突,那么就把这类格子当做缓冲。具体地,依次填黄色和红色格子,发现填不了就丢蓝色格子。另一方面,可以根据必要条件算出答案下界,由构造方案知下界一定可行,这里不细讲。(其实直接二分答案放置也是可以的。)



  CF1521D & Submission.

  Tag:「B.贪心」

  贪心地递归,把树拆成若干链,具体地,递归出 u 子树时,需要知道 u 能否继续向上连边,若能,链的底部是谁。



  CF1278F & Submission.

  Tag:「A.数学-数学推导」

  好啊,模数敲错了!好啊,组合恒等式写错了!好啊,二项式定理合并错了!我想把自己炖了艹。

answer=mni=0nik(ni)(m1)ni=mnj=0kS(k,j)j!i=0n(ij)(ni)(m1)ni=mnj=0kS(k,j)nj_i=0n(njni)mni=j=0kS(k,j)nj_mj.

(不得不写成 S(n,m) 了,那个大括号怎么打出来 qwq……)



  CF1559D2 & Submission.

  Tags:「C.构造」「C.思维」「C.性质/结论」窒息标签三连击 qwq

  分类思想,如果能和 1 连就先连上。那么此时左森林的结点 u 与与之对应的右森林的结点 u 有三种情况:(1) 都在 1 连通块;(2) u1 连通块;(3) u1 连通块。我们发现 (2) 情况的 u 可以和 (3) 情况的任意一个 v 连边,此时 u,v,u,v 都进入 1 连通块。到无法操作时,必然有一片森林退化为树,所以答案达到了理论上界 n1max{m1,m2}



  CF1556D & Submission.

  Tag:「C.构造」

  a+b=(aorb)+(aandb),构造 n 个方程解出 {an}



  CF1553E & Submission.

  Tag:「C.性质/结论」

  是不是外国友人的技能树点得和我相差很远啊,这种玩意儿怎么都比上面那道简单吧。

  令 pi 表示 p={1,2,,n} 循环位移 i 次的结果,设 pi 和询问排列 q 的不相同位置有 c 个。由于 k 次交换最多涉及 2k 个元素,所以 pi 合法的必要条件为 nc2k,发现 cn2kn3,且对于每个 qi,有且仅有一个 pj 满足 qi=pj,i,所以暴力检查满足这一必要条件的 pi 即可。

posted @   Rainybunny  阅读(106)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示