2024 12 做题笔记

NOIP 没有特别爆,应该还在 1.eps 倍队线内,所以还有 OI 打,但是这个月可能 whk 时间比较多,随缘记吧。

1209#

  • MX_R1_A 集合:应该要场切的,因为组合数取模和常数问题挂掉了,引以为戒。二分图完美匹配问题考虑 hall 定理,由于这题的特殊限制,一个左部点集合的对应集合就是最小的点能连到的所有点,因此我们相当于要求 T1 的每个后缀对应集合大小都大于等于自身,钦定一下集合大小,从后往前 dp 即可。

  • MX_R1_B 字符串:赛时想到了 ddp,但是我以为细节很多就没细想。很关键的转化是变成 trie 树 dfs 序计数,考虑建出所有字符串的压缩 trie,实际上这就是后缀树,二者是本质相同的。先考虑不压缩怎么 dp,由于答案是选一个非空点集的虚树 dfs 序方案之和,考虑设 fu 表示 u 子树至少选了一个点的方案数,转移就是先做一个背包,然后再考虑自己选不选,注意跟平常计数不一样的是根节点可以任意插到孩子遍历顺序之中,因此要多乘 son+1。压缩完实际上就是二度点有一个 3x+1 的贡献,然后对这个东西 ddp 一下即可。

1210#

好像复活了,获得了一车 OI 时间。

  • MX_R1_C 线段树:赛时捏了个笨比做法,被卡常数了,其实比我想的简单。rotate 操作是好维护的,并且你每次最多只会修改到两个区间,我们可以暴力模拟这部分,考虑怎么计算一个区间的答案。直接做很难,转贡献,变成算有多少个子区间包含一个区间,这个问题可以直接算包含当前区间的区间个数减去包含父亲的,这样我们就有了一个 O(n2) 做法,而再观察一步性质可以发现对于一个 (l,r) 覆盖到的线段树上的若干子树,叶子结点的贡献系数是 1,其它都是 -1,拆一步乘积就变成了一个在线二维数点,这样就能做到两只 log。一只呢?考虑从 lr 对应的线段树节点往上跳,跳的时候算一下贡献,相当于一个差分,每次修改相当于区间加减,简单维护即可。

  • P11364 [NOIP2024] 树上查询:来补题了,弱智,转化为区间长度为 k 的最大深度,考虑每个 lca(i,i+1) 的贡献,发现是两个扫描线,做完了。

1211#

爽打 OI,做了组合计数专题。

  • P11364 [NOIP2024] 树上查询:找性质:钦定根可以等价于给每个团的遍历序列钦定一个开始点或者终止点,做容斥:注意到一种方案可能被很多钦定方案钦定到,考虑容斥一个集合,找被这个集合钦定的方案个数,不难发现集合上的边一定是一条链,对着 dp 即可。

  • P2481 [SDOI2010] 代码拍卖会:把递增序列分成若干后缀,直接对着 dp。

  • P5547 [BJ United Round #3] 三色树:模仿对无标号无根树计数的方法,先钦定重心,然后算某一大小的子树,这个可以直接背包,要注意每次需决策一个相同大小的子树集合,且如果选择的相同需要乘上系数。

  • P9896 [ICPC2018 Qingdao R] Sub-cycle Graph:基础 EGF 练习题,推出 GF 之后简单递推即可得到答案。

  • P10175 「OICon-02」Subtree Value:以前做过的套路的相似题,拆分模数。

  • P11292 【MX-S6-T4】「KDOI-11」彩灯晚会:厉害容斥 dp,关键在于分步转移和计算容斥系数,考虑每种容斥系数的贡献后可以简单得到。

  • P3899 [湖南集训] 更为厉害:dsu on tree 板子,练练手。

1212#

梦熊炼石 Day2,100+100+0,rk 11,有 10 个左右同分的。

  • MX_R2_A 战争:限制很像最小瓶颈生成树,可以考虑每次先走到比自己小的所有节点,再往外尝试更新并跳,建出 kruskal 重构树维护上述过程,每次跳的代价就是 max(0,afaSx),答案就是到根 max

  • MX_R2_B 经典题:确实很经典,思考速度有些慢,且讨论得较复杂,导致改了好几次做法,应该先想想清楚所有情况,具体做法就是分讨询问区间和贡献区间的相交情况算贡献,对边界分类然后数点是简化问题的好方法。

  • P5400 [CTS2019] 随机立方体:讲题人给了个非常巧妙的做法,利用概率独立算完方案数直接乘,有点类似求树的拓扑序的概率解释。

  • P5405 [CTS2019] 氪金手游:原来 dfs order 4 的不是新 trick 啊,外向树是背包 dp,否则对反向边容斥,dp 是简单的。

1213#

能不能别惦记着你那 topcoder 了?十点多学校突然断网了,下午三点才好,今天可能比较摆。

  • nflsoj:P16697:implementation 题,注意题面和细节。

  • P7826 「RdOI R3」RBT:小清新数据结构,写了题解。

  • CF1062F upgrading cities:小清新图论题,利用了 topsort 的性质找出无关点。

1216#

周六下午 AK 了 USACO Silver,晚上打了梦熊炼石 Day3,100+50+0,rk14,同分只有 eps 个。T1 模拟想太久了,需要找个时间练模拟了,不能再被季风送退役了。T2 cdq 分治优化数点板子,我对维度的限制还是不是很明晰,对着性质没有 cdq 分治好的笛卡尔树上启发式合并想了很久,其实仔细思考并换维就能发现直接数点就是简单的。

周天和 cch 和 wjq 打 THUPC,E 想了 2h,死在了一步关键转化,否则能进复赛的,不应该,思考方向有问题,要注意思考时何时回溯,不要对着复杂的东西想太久。

今天补了 MX 的题,写了点 DS,数据结构还是好玩的。

  • MX_R3_A 回文数和:数据给的很宽松,可以考虑在正解的范围下做点小暴力优化你的模拟。在这题里我们考虑每一位是否进位是不好确认的,直接枚举子集钦定这个东西,然后枚举两个数的位数,接着就是简单的模拟了。感觉应该有只带 log 的做法,但写起来应该是一坨。

  • MX_R3_B 序列分割:ty=0 的点第一想法是在大根笛卡尔树上枚举小的子树暴力转移,但是对于 ty=1 的就没那么方便了,你发现此时两个子树的信息我们都需要,而且还得对最大值分类讨论,应该可以在笛卡尔树上 dsu on tree 维护你想要的信息,但是我们不妨考虑单纯的 cdq 分治,由于此时二者都需要考虑两边最大值,而 cdq 分治是可以直接枚举区间的,因此考虑用 cdq 分治处理,每次计算一个区间所有点跨过区间中点的所有原来不合法现在合法的区间的贡献,枚举前后缀,写出偏序关系即可简单维护,以前不合法现在合法直接考虑两个限制算答案然后作差分即可。

  • MX_R3_C 加密传输:考虑转化到 LGV 的形式,建出一个分层图,这个图的性质是每列向右的出边很少,对这部分状压 dp,高维前缀和优化转移即可。

  • CF799F Beautiful fountains rows:偏序限制写一写,奇偶性拆一拆即可数据结构维护。但是我们有更好的做法,考虑把每个 1 连续段最右边的 1 拆掉,每个询问区间 (l,r) 的右端点往左缩一格,然后限制就变成了区间异或是 0,证明不难,异或哈希可以简单维护。

  • P11368 [Ynoi2024] After god:换维扫描线的思想很巧妙,然后就是 segtree beats 和历史和板子。

  • loj #510.「LibreOJ NOI Round #1」北校门外的回忆:好题, K 是奇数时考虑最低位一定不变,每个数向下一个连边,这张图会形成若干条链,证明不难,链头可以用一些数论方法得出;不是奇数的情况你会发现当 x 中 2 的因子个数大于等于 k 时结论仍然成立,否则暴力跳最多 log 次即可同样方法处理。

1217#

上午太困了,只写了两个题,训练效率低下,明天开始早睡。

晚上不知道做什么题,nfls 的 toptree 专题全是大数据结构,感觉碰都不能碰啊!topcoder 也不想做,随便找了个题写还多了 log 过不去,太失败了。晚自习最后一个小时找了个集训队互测想。

  • qoj7771 不是这一道据数构结题:找一个充要条件,关注我需要交换的情况下更好计数的性质,然后扫描线数个点。

  • qoj9645 字符游戏:倍增维护区间 SG 值然后暴力跳,对跨过 LCA 的单独处理,暴力记忆化搜索可以过,感性理解一下还挺对的。

1218#

梦熊炼石 Day4,100+47+0,rk14,T2 没有想出来不应该。

与卡常题战至天荒地老,从下午写到第二天早上终于过了(睡觉了)。

  • MX_R4_A:极角排序+博弈论,实现有点麻烦。

  • qoj9516 Désive:好题,性质启发我们在 trie 上 dp,但是暴力合并的复杂度过高,考虑找出若干个支配区间,即对每个点算贡献并发现有用的区间不多,加上一车细节处理和卡常即可通过。

1219#

  • MX_R4_B:先考虑一个 O(k) 的爆搜,每次从小到大找每一个能填的数,要求每次填的递减,不难发现这样的是对的,然后 1e9 分块打表即可。

  • qoj9532 长野原龙势流星群:很神秘的题,有点像以前做过的 travelling merchant,本质思想都是大的不会更新到小的,用一个堆维护当前所有决策然后不断把自己和父亲合并。

  • qoj9533 Classical Counting Problem:考虑怎么算贡献,尝试固定最小值和最大值好像都不好做,但是如果你去固定两个就可以发现联通块种类是唯一的,换句话说只有平方种本质不同的联通块,后面就是 dirty work,建出大根小根两棵 kruskal 重构树,把条件简单转化一下然后变成第一棵树上 dsu,第二棵树上标记节点然后链查。还有一个看到的厉害的 2log 淀粉质做法,把 siz 拆到每个点上,淀粉质,此时你发现一个 x 合法当且仅当到根路径集合被 [l,r] 包含,然后就转化为二维数点问题。

1220#

  • nflsoj:P12678 毛毛虫:卡常 2log 过了,关键的想法在于以两种方式遍历树,离开时加起来得到的线性基并就是对的,大概类似在 dfs 序上拆成前后缀考虑,然后本质不同的线性基不多,直接合并即可。

  • nflsoj:P5171 游戏:二分图博弈,树是二分图,走边在相邻两个点,赛时想到了黑白染色但没有进一步,于是后手必胜的策略就变为二分图有完美匹配,维护这个东西就是考虑对于每个点,肯定自己匹配完孩子之后要多出一部分或 0 和上面匹配,这是一个子问题,不难发现这个等价于每个点减去深度奇偶性不同加上相同的点点权之后大于等于 0,根节点要为 0,树剖简单维护即可。

1221#

  • nflsoj:P12681 删边方案:DAG 计数板子,但是我并没有第一时间发现这个转化,还得练。

  • nflsoj:P12687 字符串:赛时想到了去算这个东西的哈希然后比较后缀相同的大小,但是不知道这玩意怎么哈希,尽管确实想到了记录上一位长度,还是要注意分析问题要分析地彻底。

  • nflsoj:P12725 送分题:考虑把整个问题转化成一个类似杨表的东西一样的计数,然后我们找一个好算的双射并对它 dp,赛时题目看错了,不然也许可以分析得比较深入。

1222#

熨斗模拟赛,rk 7,MX 没力气打了随便看了点题

反思:T1 思考时间过久,对做法在哪里统计,如何统计的细节纠结了非常久,T2 看错题意,题目应该多读几遍,不要让思考白费。

  • YDRG009A 序列:树形态很特殊,每次更改的一定是一个包含根的连通块,考虑从这个角度入手,对于链整体都没有被改变过的贡献是好计算的,剩下的考虑在这条链第一次走到改变过的点的连通块里时将其计数,这里可以拆分成往下走的方案数和往上走的方案数,二者都不难算出。

  • MX_R5_A ds:转化为算离散对数与 p1 的 gcd,你注意到这个东西我们是没办法直接差分然后区间加的,但是可以直接除法,因为我们除完的所有值能表示的数和原来是等价的,也不用考虑差分合不合法之类的问题。

1223#

杂题选做。

  • P3041 [USACO12JAN] Video Game G:AC 自动机上 dp 板子,练练手。

  • P9544 [湖北省选模拟 2023] 调和 / conduct:厉害题,题目条件可以转化为选一堆点,点集凸包包含指定点,由于最终的形态可以大致缩为一个三角形,所以最终的答案连通块一定是一条链,点分值处理即可。

  • P9546 [湖北省选模拟 2023] 山路长环 / ring:简单博弈论,讨论一下链的情况和环的情况,用线段树维护区间线段并,但是我看成每次只能减 1 然后想了个神秘做法/ll。

  • P9543 [湖北省选模拟 2023] 日记 / diary:厉害字符串题,考虑枚举前缀和后缀,把 T 完全包含在前后缀的情况算掉,然后你发现此时有用的部分是 O(n) 的,在 fail 树上维护一下子树和之类的东西即可。

1224#

  • P11472 命运黄之瓜:线性基题,写了个大常数做法并卡了很久的常,写了题解,好像是有更好的方法,还没看。

  • P11471 时空轮回:朴素哈希题,考虑对每种长度分别处理,写了题解。

  • P11458 [USACO24DEC] All Pairs Similarity P:容斥好题,考虑钦定分母,可以把分子拆成开,就只用算有多少个数和自己或起来刚好是这个数,但是你发现由于带上“恰好”的限制,这个计数并不好做,于是考虑容斥,设计一个容斥系数把每个点的贡献在每个位置算的时候分别减掉即可,最后你发现我们不用枚举超集,高维后缀和一下即可。

  • AT_abc288_g [ABC288G] 3^N Minesweeper:给 FWT 的矩阵求逆,可以手动解方程。

  • CF838C Future Failure:先找规律得到合法要么串长是奇数,要么不同子串个数为偶数,不同子串个数如果要求为奇数,那么就是一个多项式系数为奇数,有结论当且仅当每个 ai 位不交,于是就是子集卷积的 k 次方,暴力倍增即可,应该也可以 ln-exp,注意少取点模,比较卡常。

1225#

状压题选做,可惜感冒了没啥力气。不是很理解出 k 进制 FWT 然后还模数不给有单位根的让你手动扩域的是什么素质。P9361 因为自己的实现过于复杂遂放弃,为啥 drc 只写了 1.6k?过两天学习一下。

  • P10890 【烂题杯 Round 1】可持久化糖果树:考虑对模 3 为 0 上单位根反演,拆开然后化一化式子就会变成一个高维 DFT 的形式,每一位都是在做模 3 意义下的循环卷积,可以直接用 FWT 维护。

  • AT_abc220_h [ABC220H] Security Camera:折半状压,你发现钦定点亮的不太方便,不妨考虑有多少条边没被点亮,点集之间的贡献就是左边连到右边度数为奇数的点中有多少个没被选,写出答案发现是高维前缀和的形式。

  • P8478 「GLR-R3」清明:绝世好题,拆开 ,交换求积顺序整理贡献来源,便可以转化为方便的形式,数据范围更大时考虑分治,看维护额外信息是否更优,不优可以直接把不合法的部分容斥。

  • P7670 [JOI2018] Snake Escaping:神秘分治,似乎这种 n 开 32 左右的题都是把某一变量大小分治,找出一些适用的解法,这题就是考虑三种字符哪个多,分别高维前缀和或者直接爆算。

1226#

其实还是要对自己有信心一点,早上被两个写不出来的搜索题搞得很沮丧,结果看了个别人的实现发现其实只是我写麻烦了,有一步我尝试直接去组合数算,但是其实直接爆搜是完全可以的。

下午复习了 FWT 的 exp 和 ln,网上的教程式子没一个推的是对的,令人感慨。

  • CF1596F Palindromic Hamiltonian Path:爆搜颜色分配方案和本质不同的哈密顿路径上配对方案,状态数不会很多,然后去个重即可。

  • P8117 「Wdoi-1.5」旅人 1977:好像被我秒了,发现这个线段树的作用就是看后面有没有访问过对应节点,访问过就加对应权,然后自己有个贡献,这显然倒推要比正着好做。

  • uoj37 「清华集训2014」主旋律:板板题,不讲了,就是 DAG 容斥。

  • CF1155F Delivery Oligopoly:耳分解状压,写了个乱搞过的。

  • loj6729 点双连通生成子图计数:先算连通图个数,然后每次减掉每个点作为割点的情况,删掉点后做个集合幂级数 ln 即可。

1227#

下周要学考了,但是我政治还没咋看,被迫冲刺了这下。

  • nflsoj:P5279 今天的你依旧闪耀:赛时 oeis 发现只用判断质数是否有 2 作为原根,但是实际上每次变换相当于把 i 变成 2imod(n+1),性质还是非常好的,也就印证了前面的猜想。

  • nflsoj:P1435 炸弹:由性质二可得一个节点的前驱不会太多,证明不会,线段树简单维护一下做完了。

  • nflsoj:P12571 滈葕:厉害题,考虑能放 C 或者 D 就贪心地放,放不了 C 的地方形如边权为 0 的边的起点,以及被影响到的 1 边的中点,D 类似,不难发现能放的地方放一定是最优的,因为其他部分不会给 C 和 D 额外的限制,而 A 和 B 有个类似扩展域并查集的限制,把所有不能放 C 的 D 的拿出来跑一下构造方案即可。

  • MX_R6_B 字典序:其实是很简单的搜索题,赛时想的太复杂了,注意到如果把末尾颜色出现个数和其他颜色出现个数的无序集合并成一个二元组,则所有二元组接下来的方案是一样的,爆搜这个东西,状态很少,可以通过,代码也很好写。

  • MX_R6_C 集合选取:DAG 容斥题,考虑判定一个方案有没有解,由于这个冲突集合 S 内部是封闭的,因此考虑一个类似排列的东西,你考虑如果我要钦定最终方案里 iai,那么 ai 也得选,以此类推会连成一个环,而这个集合是冲突的当且仅当至少一条边连向上方,所有边不低于 ai。把所有不低于 ai 的边连出来,连向 ai 的是白色,其他的是黑色,问题等价于计数连黑边方案使得图中不存在一个包含黑色边的环,这等价于所有白边环被黑边连成 DAG,于是爆搜一下可能的环集合方案然后 DAG 计数即可。

  • CF2029H Message Spread:拆分期望到每个第一次经过的状态概率和向下转移的概率,用前缀和容斥并半在线卷积这个东西,写不明白,最后抄的 drc 的实现。

  • P9316 [EGOI2021] Double Move / 二选一游戏:考虑连完边方案数是好求的,而且我们可以把贡献拆给每一步,直接爆搜所有本质不同的方案即可,抢到了最优解。

1228#

nfls 训练赛+熨斗月赛+Good bye 2024,CF 一手好牌打的稀烂,这个 F 想到 beats 了不写,而且根本就不用 beats,看到取 max 就走不动路了,深刻反省!

  • nflsoj:P12723 好序列:写了个搜剪了剪枝过了,不知道为啥。

1229#

熨斗省选模拟,题真是够烂的,MX 省选模拟,一个不会,如此成绩,如何省选?

  • P6645 [CCO2020] Interval Collection:交非空就是找左右端点,否则可以线段树,有点像把 cdq 分治枚举分界点拆到树上。

  • CF2053F Earnest Matrix Complement:注意到每行选的颜色一定相同,调整不难证明,然后可以考虑每次转移比较特殊的颜色不多,线段树维护一下即可,注意取 max 可以直接打标记维护。

  • MX_R7_A 于星的彼岸:好题,赛时没有想到从小到大插入的可行性,觉得这个东西没办法维护子序列的性质,事实上你只要多记一维表示上次选的 a 里的数在哪即可,转移是简单的。

1230#

开始复习会考了...

  • AT_agc041_f [AGC041F] Histogram Rooks:好题,先考虑 n×n 的做法,直接计数不好做,考虑钦定若干个点一定没被覆盖,简单容斥即可,对于原题的情况你会发现有些行不受到这个东西的影响,但是对列容斥是一定对的,考虑对每个列的集合算这个集合恰好是所有关键点所在列的方案,然后再容斥一手得到式子,由此 dp 优化,启示是优化题目时找到方便的部分。

  • P10008 [集训队互测 2022] Range Minimum Element:直接钦定最小值然后区间 dp?你发现可能会算重,考虑找个双射,然后就可以简单 dp 了,最后拉插回来即可。

  • CF2053G Naive String Splits:好题,启示是可以先考虑一些暴力操作再优化,也许会有意想不到的效果,写了题解。

  • qoj5097 小 P 爱学习:三方 dp 是简单的,对这种跟 siz 强相关的就考虑根号分治,做两次 dp 然后合并。

  • qoj7793 雷同:注意到如果树结构确定最优的排布分案也将确定,而树结构基本上可以通过深度集合确定,我的思考止步于此,但是接下来是简单的:考虑如果知道深度集合怎么算答案,最优的合并顺序一定是合并深度相邻的节点,于是磨损值可以简单算出,设计 dp 刻画这个过程即可。

1231#

今年的最后一天,下午看了学校的元旦晚会,评价是烂完了。

  • qoj9611 木桶效应:我一直在想怎么优化一个钦定最小值然后容斥+高维前缀和的暴力,看上去容斥系数拆不了,但是从头开始考虑 min{},就能发现这实际上就是在统计比这个数列少的序列个数,所以你只需要枚举下面这个序列然后考虑有多少种排列比它大即可,于是你可以考虑从大到小 dp,每次确定若干最小值为当前数的列,对于已经确定至少一个数的列单独状压一下考虑即可,最后发现式子可以高维前缀和优化就做完了。

  • qoj9561 树数叔术:简单题,由性质考虑增量,每次从小到大点亮一种颜色的节点,发现每次要么都在原来的数的虚树上,要么就只多开了一个叶子,于是 dp 记录虚树形态,每次要么多叶子,要么选若干空点和边插入当前点,简单 dp 一下即可。

作者:eastcloud

出处:https://www.cnblogs.com/eastcloud/p/18596146

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   eastcloud  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示