首页 > 其他分享 >【题解】CTT 2019 Day 1

【题解】CTT 2019 Day 1

时间:2023-02-26 21:46:01浏览次数:53  
标签:CTT 二分 子树 匹配 个点 题解 2019 区间 考虑

目录

A. 递增树列

令 \(f_{u,i}\) 表示 \(u\) 的子树,已经用掉 \(i\) 个点,剩下的点排列满足要求的方案数。

考虑方案的计算,用掉的 \(i\) 个点取自子树,要求 \(\sum d_v=i\) 。于是,每个子树剩下 \(s_v-d_v\) 个点。在不断地选树后,一定会剩下某个子树非空(且恰好这个子树非空,当然,这个 "子树" 也有可能是根本身),那么递归进入求解。

于是我们枚举非空子树 \(v\),以及剩下的点树 \(k_v\) 。然后问题变成了,有 \(t+1\) 种颜色,每种颜色有一个出现次数,要求排列使得相邻两项颜色不同(并额外处理最后出现的颜色,是 \(v\) 的情况)。带容斥系数后,相当于要做二维卷积,直接背包即可。

B. 异世界的文章分割者

最开始以为是用后缀自动机加个扫描线求区间答案的,但 \(w^2\) 很难搞。

考虑外层二分,内层要做的无非就是从每次考虑最长的扩展距离。如果硬二分的话,区间长度总和不可接受。考虑先从小到大枚举 \(2^k\) 直到发现第一个非法 \(2^k\),然后中间这段再二分。这样区间长度总和就变成 \(O(n\log^2 n)\) 了!

求答案很容易用后缀自动机做到线性。

C. 时间旅行

考虑大小为 \(I_1,I_2\) 的环换成 \(I_1+I_2-1,1\) 肯定不劣:考虑将 \(I_1\) 中,将中间点删掉(该点同时链接最小点、最大点);得到的路径是 \(I_1\) 中最小值,到最大值的路径。考虑将 \(I_2\),选择一个和中间点相连的边删掉变成路径。注意到路径起终点值域区间,如果有包含 / 相离,那么直接拼肯定没问题。否则情况是简单的,只需要考虑 \(I_1\) 中点的相对位置即可。

于是,最后要找的就是大小为 \(n-k+1\) 的环。二分答案 \(w\) 。我们要找的其实是 \(2k+3\) 状的匹配:即 \(k\) 对成二匹配,一个 \(a-b-c\) 形式的匹配。注意到将权值排序后,区间 \([i,i+\lfloor\frac{n-k+1}{2}\rfloor]\) 中必然存在一个匹配(或者 \(a-b-c\) 中的任意两个,我们认为 \(a<b<c\)),因为匹配距离肯定 \(\geq w\),于是区间 \([i,i+\lfloor\frac{n-k+1}{2}\rfloor]\) 必然合法。因此充分必要性都得证,问题得到转化。

于是,对于 \(b\) 只要拆成 \(b_1,b_2\) 分别匹配 \(a,c\) 即可。在必须退匹配的时候,再删匹配,重新增广。注意剪枝即可。提交记录:Submission #77487 - QOJ.ac

标签:CTT,二分,子树,匹配,个点,题解,2019,区间,考虑
From: https://www.cnblogs.com/qiulyqwq/p/17157826.html

相关文章

  • 【题解】CTT 2018 Day 2
    目录A.宝石游戏B.面国建设C.WechatA.宝石游戏无修改时考虑长链剖分(加整体异或标记)。有修改时分块,不考虑关键点层长链剖分,最后算答案的时候处理关键点层的答案即可。......
  • 题解 CF1776F【Train Splitting】
    题意:有一个\(n\)点\(m\)边简单无向连通图,请用若干(至少为\(2\))种颜色对每条边染色,使得:对于每种颜色,仅由该颜色的边组成的生成子图不连通。对于每两种颜色,仅由该颜色......
  • Codeforces Global Round 15 CF1552 A~G 题解
    点我看题对两三年前的cf进行考古的时候偶然做到这场,像这种全是构造题和思维题的比赛还是比较少见的。题目本身很有意思,但是对于现场打比赛想上分的人来说体验就比较差了。......
  • P6659 [POI 2019] Najmniejsza wspólna wielokrotność 题解
    题意给定一个整数\(M\),求是否存在一个区间\([a,b]\)使得\(M\)为\([a,b]\)这个区间中所有数的最小公倍数。解题方法1.区间长度\(=2\)。二分查找\(a\),由于相......
  • SQL server 2019 Express 安装及其一些问题
    1.安装步骤我是遇到问题后,从B站上面查找的参考资料,因为不知道是否涉及版权问题,所以大家自己搜索一下1.从官网上下载安装包,我下载的是Express版,文件名字如......
  • 2023 年 CCF 春季测试赛模拟赛 - 2 题解
    T1约数和标准解法\(n=a_1^{b_1}\timesa_2^{b_2}\dotsa_k^{b_k}\)那么根据算术基本定理的推广,约数个数和约数和都是可以快速计算得到约数和sum\(sum=(a_1^0......
  • CF1776M 题解
    引理1:若\(n\)为偶数,则答案为\(n\)。若\(n\)是叶子,则显然正确。若\(n\)不是叶子,则将整棵树看做以\(n\)为根的有根树,一定可以保证最后一个被删除的是根。故得......
  • AtCoder Beginner Contest 281 A-F 题解
    比赛链接A-CountDown先这样,就这样。点击查看代码#include<cstdio>intn;intmain(){ scanf("%d",&n); for(inti=n;i>=0;i--)printf("%d\n",i); re......
  • Codeforces Round #853 (Div. 2) 题解
    CodeforcesRound#853(Div.2)题解ABCDCodeforcesRound#853(Div.2)|萌新实况被吊打|ABCD题解E.ServalandMusicGame分两种情况讨论:\(\lfloor\frac{s_......
  • 【题解】ARC157
    AtcoderRegularContest157AXXYYX可以考虑得到\(a,b,c,d\)后如何构造,实际上是先根据\(b,c\)铺出形如XYXYXYXYX的序列,之后每存在一个XX或YY就填进去一个X......