NOIP2024集训 Day47 总结
前言
人有两次生命,当他意识到只有一次的时候,第二次生命就开始
最小生成树和二分图匹配专题,感觉总体都比较套路。
但是这些套路为啥感觉见都没见过啊,怪不得做这么慢。
色
观察到对于最终答案显然都是最小生成树上一条两个端点颜色不同的边。
而这个题并不会改变图的形态,仅仅是改变颜色。
故你考虑维护每一个父亲节点,每一种颜色的儿子都开一个
复杂度
最小公倍树
一个有趣的事实是,你考虑枚举
然后你看他们之间怎么连边,假设这些合法的
显然,你考虑将
另外,如果他不是最大的
连边之后直接跑
复杂度应该是
Power Tree
这个题题解区有通过差分而得到的非常巧妙的最小生成树做法,这里讲一下自己输出方案巨恶心的动态规划做法。
定义
定义
显然有转移:
然后这个输出方案巨恶心,因为你要把所有可能的都输出。
City 城市建设
非常重要且典的题,可是我根本不会,所以像我这种脑子不好使的人赶紧去学
你考虑对于操作询问进行线段树分治。
我们观察到两个性质。
- 如果你将修改的边赋为
,跑完最小生成树之后,此时不在树上的边一定不在最终的最小生成树上。 - 如果你将修改的边赋为
,跑完最小生成树之后,此时在树上的边一定在最终的最小生成树上。
故你每次递归儿子的时候就只留下有用的边,然后把一定会用上的边先用并查集维护上,这样你每次需要跑的点和边都是这个区间的长度从而达到复杂度平衡。
时间复杂度
新年的繁荣
参考一下今天的第二题。
观察到边权并不会很大,你考虑
首先对于那些点权相同的点你可以相互之间直接合并,这样显然不劣。
然后你发现假设当前边权是
观察到这些连通块显然不超过
所以你跑一遍类似高维后缀和的操作找到这些连通块然后分别合并即可。
时间复杂度
免费道路
一道比较智慧的题,但是我居然没有想到,我是废物。
你考虑先求出必须要用的鹅卵石路,即你在跑生成树的时候,先跑水泥路,再跑鹅卵石路就可以得到。
然后你再跑一遍生成树,先把必须要用的鹅卵石的路加上,然后先跑鹅卵石路再跑水泥路,鹅卵石路数量到了
显然这样是对的,因为你用了必须用的鹅卵石路之后,不管你鹅卵石路后面怎么取,水泥路都有办法让他变成一颗生成树。
无解显然只有三种情况:
- 图不连通。
- 必须用的鹅卵石路
。 - 跑完第二遍生成树之后,你尽可能多的用鹅卵石路仍然没用到
条。
Sorting a Grid
一道还不错的建模题,大致是会的。
你先考虑合法的情况下,
显然,
故你考虑将
每行的颜色相同。 每列的颜色有 种。
显然,对于
观察到每一个
时间复杂度
马
全场唯一板子。你将
后记
撒花~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】