首页 > 其他分享 >NOIP2024集训 Day47 总结

NOIP2024集训 Day47 总结

时间:2024-10-08 22:00:03浏览次数:8  
标签:Code text dp 显然 生成 NOIP2024 Day47 集训 鹅卵石

前言

人有两次生命,当他意识到只有一次的时候,第二次生命就开始

最小生成树和二分图匹配专题,感觉总体都比较套路。

但是这些套路为啥感觉见都没见过啊,怪不得做这么慢。

观察到对于最终答案显然都是最小生成树上一条两个端点颜色不同的边。

而这个题并不会改变图的形态,仅仅是改变颜色。

故你考虑维护每一个父亲节点,每一种颜色的儿子都开一个 \(\text{multiset}\)(你可以开一个 \(\text{map}\) 来方便实现这个过程),在维护一个答案的 \(\text{multiset}\),维护的时候注意一下插入和删除的细节即可。

复杂度 \(\mathcal{n\log^2 n}\),但是常数巨大。

\(\text{Code}\)

最小公倍树

一个有趣的事实是,你考虑枚举 \(\text{gcd},1\to r\),然后在枚举它在 \([l,r]\) 之间的整数倍是哪些数,这一部分显然是个调和级数,\(\mathcal{O}(n\ln n)\)。

然后你看他们之间怎么连边,假设这些合法的 \(\text{gcd}\) 的整数倍分别是 \(a_1,a_2,...a_m\)。

显然,你考虑将 \(j\in[2,m]\) 连一条 \((a_j,a_1,\frac{a_j\times a_i}{\text{gcd}})\) 的边即可。因为你本质上只需要将同一层的 \(\text{gcd}\) 连向最小的一个点即可,毕竟他和其他点连的边权显然是最小的。(这个 \(\text{trick}\) 其实出现在了后面的题目里面,就是本质上你边权相同的点你可以只连一个菊花,而没有必要两两互相建边,是非常重要的。)

另外,如果他不是最大的 \(\text{gcd}\),那么使用它显然不会更优,故这样连边不会出错。

连边之后直接跑 \(\text{Kruskal}\) 即可。

复杂度应该是 \(\mathcal{O}((r-l+1)\times (\ln r) \times (\log (r-l+1)))\)

\(\text{Code}\)

Power Tree

这个题题解区有通过差分而得到的非常巧妙的最小生成树做法,这里讲一下自己输出方案巨恶心的动态规划做法。

定义 \(dp_{i,0}\) 表示将 \(i\) 子树之下的叶子节点全部变为相同所需要的最少代价。

定义 \(dp_{i,1}\) 表示将 \(i\) 子树之下的叶子节点可以变为任意数的最小代价。

显然有转移:

\(dp_{i,0}=\min dp_{j\in son_i,0}+\sum_{k\in son_i,k\not= j} dp_{k,1}\)。

\(dp_{i,1}=\min dp_{j\in son_i,0}+\sum_{k\in son_i,k\not= j} dp_{k,1}+w_i\)。

然后这个输出方案巨恶心,因为你要把所有可能的都输出。

\(\text{Code}\)

City 城市建设

非常重要且典的题,可是我根本不会,所以像我这种脑子不好使的人赶紧去学 \(\text{LCT}\) 吧。

你考虑对于操作询问进行线段树分治。

我们观察到两个性质。

  • 如果你将修改的边赋为 \(\text{inf}\),跑完最小生成树之后,此时不在树上的边一定不在最终的最小生成树上。
  • 如果你将修改的边赋为 \(-\text{inf}\),跑完最小生成树之后,此时在树上的边一定在最终的最小生成树上。

故你每次递归儿子的时候就只留下有用的边,然后把一定会用上的边先用并查集维护上,这样你每次需要跑的点和边都是这个区间的长度从而达到复杂度平衡。

时间复杂度 \(\mathcal{O}(q\log q \times \alpha(n))\)。

\(\text{Code}\)

新年的繁荣

参考一下今天的第二题。

观察到边权并不会很大,你考虑 \(\text{Kruskal}\) 求最大生成树的过程,从大到小枚举边权,然后合并连通块。

首先对于那些点权相同的点你可以相互之间直接合并,这样显然不劣。

然后你发现假设当前边权是 \(x\),你考虑找到所有含有点 \(y,x|y\) 的连通块。

观察到这些连通块显然不超过 \(m\) 个,且每个连通块中必然包含 \(x \lor 2^i\),如果不包含那我显然可以在更高边权的时候将 \(x\lor 2^i\) 合并进这个连通块,显然更优,如果超过了 \(m\) 个显然通过鸽巢原理我仍然可以在更高位的地方合并。

所以你跑一遍类似高维后缀和的操作找到这些连通块然后分别合并即可。

时间复杂度 \(\mathcal{O}(m\times 2^m\times \alpha(2^m))\)。

\(\text{Code}\)

免费道路

一道比较智慧的题,但是我居然没有想到,我是废物。

你考虑先求出必须要用的鹅卵石路,即你在跑生成树的时候,先跑水泥路,再跑鹅卵石路就可以得到。

然后你再跑一遍生成树,先把必须要用的鹅卵石的路加上,然后先跑鹅卵石路再跑水泥路,鹅卵石路数量到了 \(k\) 个那就别再往生成树里面加鹅卵石路即可。

显然这样是对的,因为你用了必须用的鹅卵石路之后,不管你鹅卵石路后面怎么取,水泥路都有办法让他变成一颗生成树。

无解显然只有三种情况:

  • 图不连通。
  • 必须用的鹅卵石路 \(>k\)。
  • 跑完第二遍生成树之后,你尽可能多的用鹅卵石路仍然没用到 \(k\) 条。

\(\text{Code}\)

Sorting a Grid

一道还不错的建模题,大致是会的。

你先考虑合法的情况下, \(b,c\) 需要满足什么条件。

显然,\(c\) 是必须让每一行的数都包含了这一行最终应有的元素。

故你考虑将 \(x\) 染上 \(\lceil \frac{x}{m}\rceil\) 这种颜色,你发现合法的 \(b,c\) 满足:

  • \(c\) 每行的颜色相同。
  • \(b\) 每列的颜色有 \(n\) 种。

显然,对于 \(b\) 你可以通过求一个二分图完美匹配得到。

观察到每一个 \(b\) 显然都会对应它唯一的 \(c\)。

时间复杂度 \(\mathcal{O}(n^2m^2)\)。

\(\text{Code}\)

全场唯一板子。你将 \((i+j)\) 为奇数的时候看成左部节点,为偶数的时候看成右部节点,然后跑一个最大独立集即可。

\(\text{Code}\)

后记

撒花~

标签:Code,text,dp,显然,生成,NOIP2024,Day47,集训,鹅卵石
From: https://www.cnblogs.com/SFsaltyfish/p/18453146

相关文章

  • NOIP2024集训Day47 生成树+二分图
    NOIP2024集训Day47生成树+二分图B.[THUPC2022初赛]最小公倍树直接建边显然不行,考虑优化建边。对于两个点\(u,v\),\((u,v)\)的边权为\(\displaystyle\operatorname{lcm}(u,v)=\frac{u\timesv}{\gcd(u,v)}\),显然应该选择\(\gcd(u,v)\)尽可能大的点对连边,也就是......
  • CSP2024 前集训:csp-s模拟10
    前言T2赛时不会,T3没有想到移项遂打了个背包得\(50pts\),T4又放回滚莫队板子,结过开太晚了没打完,以后板子麻烦放靠前点谢谢。T1需要线性基思想,听5k讲完貌似懂了,但是学了再回来补吧。T2首先选择一个度数不是\(1\)的点当根。对于一个非叶子节点\(p\)被扫到有两种情况......
  • [43] (CSP 集训) CSP-S 模拟 10
    B.清扫考虑从叶子节点往上推首先可以发现的几个性质子树内需要消除的数,要么通过子树根节点“发送”到上面(只经过子树内一个叶节点),要么通过自己的叶节点解决对于子树内既不是根也不是叶节点的节点,节点上的值只能由这一支路的叶节点消除,所以如果他节点上的值和下面节点“发......
  • [41] (CSP 集训) CSP-S 模拟 9
    A.邻面合并观察到\(m\)很小,支持我们\(mn2^{2m}\)状压枚举二进制状态,\(f_{i,j,k}\)表示到第\(i\)位的状态为\(j\),上一位状态为\(j\)(\(i,j\)为状压位)的方案数考虑转移的时候加了什么判断这一行与上一行的联通情况,如果这一行的某一个连通块和上一行正好对上了,......
  • 多校A层冲刺NOIP2024模拟赛03
    A.五彩斑斓没办法,不会统计四个点相同的,赛时没想到,写了一个神秘算法骗了80考虑倒着计算,总子矩阵有\(\frac{n(n+1)*m(m+1)}{4}\)个,减去四个角相同的矩阵数量就是答案,枚举矩阵的上下边界两条线再枚举每一列,会有两个交点,统计每种颜色的上下交点颜色一样的个数,就可以计算了点击......
  • 【训练记录】山东济南齐鲁工业大学ACM集训队第二次入队赛同步赛(场外VP)
    https://icpc.qlu.edu.cn/contest/66ed8b746002253a77c10d5e训练情况场外rk#2AK赛后反思A题太菜了,没看出来是01背包DP,往前缀和上面想了,写了个假做法。B题又不认真看题,忘记了\(=0\)的情况。C题博弈论乱猜D题未考虑完全导致一次WAA题分两组,两组和相同,观察数据范围我们......
  • CSP2024 前集训:csp-s模拟9
    前言T1状压挂了\(10pts\),貌似做法是假的,但是一下午也没调出来哪儿假了,但是错误率很低,几百组能有一组错的。T2赛时数据锅了赛后重测了,赛时想到线段树但是没能具体实现,最后无奈写暴力。T3、T4没看。T1邻面合并\(m\le8\)所以考虑状压表示每一行哪些地方被覆盖,对与相邻两......
  • [42] (多校联训) A层冲刺NOIP2024模拟赛03
    今天的乐子今天的乐子2昨天晚上做梦梦见自己被关进戒网瘾学校里面的老师全和疯子一样然后我和这帮疯子老师比疯疯子老师发现他们没我疯所以就把我放了今天的乐子3lhx罗曼蒂克的辟谷A.五彩斑斓赛时的想法\(n^4\)的做法,设\(f_{i,j,k,l}\)表示以\((i,j)......
  • 多校A层冲刺NOIP2024模拟赛03 -- T4 量子隧穿问题
    多校A层冲刺NOIP2024模拟赛03--T4量子隧穿问题$$HZOI$$感觉是这两天最有意义的题吧。\(n\)句话题意我是巴甫洛夫的狗,我又重生了,重生在薛定谔的家里。薛定谔是抖S,于是给我铃声。我开始狂跑不止。为什么没流口水没删除我给定\(n\)个点,对于\(i\)存在一条外向连的单向......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛03
    Rank炸了,触底反弹A.五彩斑斓(colorful)签,又没签上。考虑如何一步步优化暴力。最暴力的思想\(\mathcal{O(n^4)}\)枚举每个矩形,判断四个顶点颜色。稍微优化些,两次\(\mathcal{O(n^2)}\)跑出对于行/列每个点下一个与之颜色相同的坐标,利用容斥全部减去不合法的方案数,然后再枚......