USACO2023
所有题都是向这篇博客学的,orz。
*loj3934. 「USACO 2023.1 Platinum」Tractor Paths
首先可以观察到,对于节点
所以一组询问
不过这个区间交实际上可以差分拆开,所以两边是独立的,暴力查询即可。
*loj3935 「USACO 2023.1 Platinum」Mana Collection
注意到答案只和每个点最终到达的时间有关,假设到达的所有节点的集合为
考虑一个 DP。
注意
但是关键在于
总复杂度
*loj3936. 「USACO 2023.1 Platinum」Subtree Activation
猜过去了,抄一下题解。
注意到我们的任务是求出一个排列,最小化
在树上构造排列的方式是:先构造子树的排列,归并,并将根插入之中。考虑插入到一个子树的排列之间的影响,假如插入到两个没有祖先关系的节点之间,对答案的贡献是
如果考虑每个点的贡献,可以发现插入一个节点之后,一棵子树内只有不超过两个点的系数会发生变化。然后讨论一下 DP 即可。
说白了其实只要考虑插入到两个没有祖先关系的节点之间的系数变化。
*loj3949. 「USACO 2023.2 Platinum」Hungry Cow
好题!
题解其实只有一句话:用线段树维护被覆盖的节点个数,被覆盖的节点的和,向右侧剩余的干草堆。合并的时候采用和楼房重建类似的合并方式。
有愚蠢的线段树分治做法,可能是这个题开 6s 的原因,但是没人愿意写。
loj3950. 「USACO 2023.2 Platinum」Problem Setting
最简单的一个题。
考虑一个
*loj3951. 「USACO 2023.2 Platinum」Watching Cowflix
很显然可以做到平方。
整体 DP 不太行的样子。不过可以大胆猜测:一个点选择的时间为一个后缀。 拿这个套整体二分容易做到
如果观察答案的性质可以发现,答案是
但是,如果你做一下整理,可以发现如果我们建立关键点的虚树,并把确定已经变黑的联通块缩起来,剩下的点的个数是不会超过
这个缩点优化还是很有趣的。
*loj3961. 「USACO 2023 US Open Platinum」Pareidolia
首先有一个愚蠢的使用
考虑没有修改,那么可以利用分治解决。具体地,每次计算跨过中点
求
注意到
所以线段树上维护:
这类统计问题一般就是转化(分治,DP)+推式子解决。
*loj3962. 「USACO 2023 US Open Platinum」Good Bitstrings
Stern-Brocot 树好题。
考虑怎么判断
。- 对于
,一定有 。
转化一下,可以发现等价于不存在
但是如果不是最简分数,这个做法可能覆盖不到。所以要讨论不是最简分数的情况
我开始试图把非最简分数和最简分数放一起处理,没想到可以直接分类讨论掉。
*loj3963. 「USACO 2023 US Open Platinum」Triples of Cows
神秘邻域信息维护题。
先转化一下:两个点有边当且仅当它们中间的点都被删了。如果考虑重构树的话会非常麻烦,所以考虑把中间被删掉的点缩成一个白点,那么答案是长度为
这玩意看起来十分不可维护。但是如果你推个式子,假设
- 如果两个白点相同,那就是
。 - 讨论哪个点是 LCA,都可以推出来式子。
所以答案可以被表示成了只和
- 黑点的二阶儿子个数。
- 白点的一阶儿子和三阶儿子个数。
每次删点的时候更新三级父亲的信息即可。
总之这类树上问题可以只维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具