2024.12.12 近期练习
实在是难以相信我竟然又来到了机房训练。
P10141 [USACO24JAN] Merging Cells P
一个简单的
区间往外拓展当前仅当当前
然而状态数已经达到
注意到初始条件是
也就是原本我们是区间的合并,现在时光倒流,转化为区间的分割来划分子任务。
也就是求从
考虑区间分割的点
考虑前缀和优化,维护
P4437 [HNOI/AHOI2018] 排列
看式子的形式应该是贪心,我们即需要让后面的
那么我们可以得到一个条件就是,要想填
这非常像一个图论建模。考虑
如果是 DAG,进一步地其实这就是一棵内向树,考虑从根节点,也就是
很典是吧,转化为选平均数最小的若干段。取出平均值最小的点
合并代表的是,若
关于答案的计算,只需要在每次合并的时候累加上
这是一个形而上学的问题。
P4654 [CEOI2017] Mousetrap
考虑先给树定根,很显然要定到
考虑整个过程是什么样的,老鼠显然最后一直走走到一个叶子节点。
当老鼠被困住的时候,我们可以先堵住不是前往
而在老鼠走向叶子的过程中,我们可以堵塞其一些道路,我们要堵塞其花费最大代价的道路。
考虑树形 dp 设
如果
考虑可以从
在往上走的时候,如果有子树的答案超过了当前的
并且,需要堵住的个数不超过当前能用的步数。满足以上的条件
ARC140D One to One
首先联通块的个数等同于环的个数。考虑拆贡献到每个环。
如果已经存在的环,我们直接加上其贡献。现在问题就是已知有若干棵内向树,要把他们拼成环。
设总共有
对于钦定某
这是一个背包,简单解决即可。
AGC028C Min Cost Cycle
先贪心地选出
经过手玩盲猜只需要存在一个
或者是
ARC121D 1 or 2
逆天孩子,只需要把一个数看成与
P4426 [HNOI/AHOI2018] 毒瘤
新科技广义串并联图。
根据经典结论,通过以下三个操作,最终得到的图的边数是
三个操作是:消串联(选一个二度点合并其两端);消并联(删重边),去断路(删一度点)。
考虑在上述过程中维护答案。考虑维护
同时维护每条边三种情况
最后统计答案的话考虑枚举每个点选不选再乘起来即可。
消串联的话,考虑枚举中间的点是
消并联可以用一个 map 维护是否有边,注意到重边的贡献是独立,直接相乘即可。
去断路的话,就是更新与其连接的那个点的
具体实现可以类比拓扑排序。
AGC005E Sugigma: The Showdown
观察样例,A 可以一直躲避下去的方式是已知躲在某条边,使得其两端点在 B 树的距离
那么我们可以找出这样所有的边,只要 A 能到达这样的边那么 A 就获胜了。
所以 B 是要在 A 前往这些边的过程中阻碍 A 到达。
那么,所以如果 B 要获胜,那么一定不能让 A 到达这些边的任何一个端点对吧,
所以 B 到这些边的每个端点的距离一定是小于 A 所到达的,对吧。
如果 B 一定赢,那么 A 的策略一定是躲到距离 B 最远的某个叶子处,所以找到这个点即可。
是不是说 B 到上述每个对 A 胜利的点距离都比 A 小就赢了呢?是的,并且我们还可以在路上阻断他。
条件是如果
可以理解为 B 就是走了一条最快靠近 A 的路,反正 A 是不能回头因为会更亏的。
所以我们以 A 定根做一遍 dfs,只能走 B 不能更快到达的点,看能不能走到一条胜利边即可。
如果走不到,就计算能走的点距离 B 最远的点是哪个,A 就躲在这里。
P7897 [Ynoi2006] spxmcq
对于每个
也就是:如果当前子树为贡献正数,那么就可以向父亲贡献。
同时因为这题可以离线,所以这启示我们按照
那么我们可以维护当前已经向上贡献的边,因为
所以我们相当于维护若干连通块。那么我们需要当
设该子树目前总共有
所以我们考虑用一个堆维护当前最小
合并的话考虑用并查集处理。然后修改的话是一个链加的形式。差分转化为求子树和即可。
离线+维护连通块。
P8277 [USACO22OPEN] Up Down Subsequence P
贪心地,对于
那么树状数组维护 dp。
P10060 [SNOI2024] 树 V 图
考虑找充要条件,那么就是取出所有两端颜色不同的边出来,设这条边为
设
同时注意到每个颜色形成一个连通块,连通块之间又有一个树形结构关系。
那么考虑树形 dp,设
P10857 【MX-X2-T6】「Cfz Round 4」Ad-hoc Master
非常地 Ad-hoc 一个题。
首先考虑所有
证明比较显然,当且仅当一个深度为
那么我们可以找到根节点的编号,只需要找到一个匹配上就可以了。
那么考虑求根节点的值。我们可以求出除了根节点外所有点的异或和。
那么注意到,两个距离为奇数的点
如果
如果全
P8314 [COCI2021-2022#4] Parkovi
显然二分+贪心。考虑二分
那么贪心地,从子树开始填关键点,能“咕”则“咕”即可,也就是把关键点放到深度最浅的位置。
对于一个点
如果
否则如果此时不放关键点的话,
这种以子树形式划分子任务的贪心非常的典且非常的重要。
P6817 [PA2013] Filary
取
考虑把
但是可能答案是合数,那么我们要把两个质数合并,两个质数合并的条件是其出现的位置完全相同。
那么判断集合的相同我们考虑用 xor-哈希处理。
注意特判质数的幂次。
P9521 [JOISC2022] 京都观光
考虑从
那么移项可得若
但是如果中间走别的一条路呢?钦定原本是先往下走,现在中间多了一条
那么就转化为与
所以我们贪心。但是遇到一个问题就是如果是比较向右和向下的两条边的话,我们看不到后面的情况。
根据经典套路,我们需要将序列划分为斜率不降的若干段。使得当前选择不会有后效性。
相当于维护两个下凸包。然后我们维护两个指针走即可。
如果有多组询问,取出询问情形的凸包,而不是走到终点的两个凸包。
相当于将整段路程分割为若干个从
P1792 [国家集训队] 种树
突然发现一个典题不会做。我们如果贪心就是取出前
考虑
我们可以考虑将
根据贪心,我们每次要选择贡献最大的,那么我们维护一个堆即可。
删除操作考虑用一个环形链表处理。
AT_code_festival_2017_qualb_f Largest Smallest Cyclic Shift
太逆天一个题了。证明的话?
每次取出字典序最小的串和字典序最大的串合并,直到只有一个串存在。
AGC023D Go Home
考虑每个楼房的人是怎么投票的。比较明显的投家的方向是错的,可能会“反水”。
即,因为人数的差距,即使现在往家的方向走,最后还是要往反方向走,浪费更多时间。
考虑时光倒流,注意到最后一步一定是从
那么现在相当于只有
钦定
这是借时光倒流思想,递归,划分子任务。
AGC010E Rearranging
我们先有一个图论建模,将不互质的两个数连起来,代表这两个数相对位置不变,即被“卡住”。
假设我们钦定了这些数的先后关系,考虑后手的策略,类似拓扑排序,贪心每次取出最大的能选的数。
所以现在相当于给边定向。
因为目前所有数都可以被第一个选,我们要让大的数被卡住,所以大的数要有小的数连入。
考虑一个连通块,我们第一个选的肯定是其中最小的数,来卡住其他大的数对吧。
接下来,最小的数肯定希望下一个接的还是小的数,所以找出边最小的数 dfs。
所以一直 dfs 下去即可。哎呀我也不会证。
考虑这就是一个搜索树,然后不同的子树独立,要想他们不独立呢,就要能走即走,也就是深搜。
CF1458D Flip and Reverse
神仙题,考虑将
所以相当于自由调换
那么转化为图论模型,我们只需要确保
现在相当于一个欧拉路径。字典序最小可以转化为
CF1610G AmShZ Wins a Bet
注意到,要删括号必须将其中间全部删完,因为要不然第一个右括号删完会左移。
所以我们每次删除都是必须删掉一个合法括号子串。
根据最优化字典序的常见方法我们从后往前 dp,最优化后缀,即设
那么
那么这个 dp 牵扯到字符串的比较。考虑用到可持久化数据结构,然而这么做是双
考虑倍增跳,相当于转移树取出来树上倍增,维护哈希值即可。
细节地,倍增维护的是第
P6346 [CCO2017] 专业网络
先转化一下题意,就是给
其中,分配第
相当于有若干个任务,任务的有效期是
贪心地,任务越后做越优。所以我们时间倒着做,在第
用堆维护即可。
CF1411F The Thorny Path
首先相当于优化
但是可能
注意到,对于一个大环大小为
所以我们贪心地先对大环取出若干个大小为
然后剩下
特判
即:如果有
否则考虑用已有的两个余
CF725F Family Photos
很牛的贪心。值得记录。
我们想如果一叠照片只有一张的话如何选择。我们不妨想第一张取的是哪个。
如果只有两张,我们第一张取
拓展到多张每叠只有一张的情况,也就是按照
那么每叠有两张呢?如果
如果
若
若
CF1844F2 Min Cost Permutation (Hard Version)
首先先观察一些性质。钦定
也就是说,当所有数的和一定的情况下,这些数越集中答案越优。
注意到当
我们猜测,当
证明的话,考虑邻项交换,设
并且,数全部递增字典序也是最小的,那么我们就解决了
考虑
逐位确定,设该位确定了
然而这样做是
找条件,设
那么我们只需要支持查询最小的
直接用 set 维护,再用链表维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】