tg 87 solution

T1

不可以总司令

你发现这个东西实在没有办法维护
考虑乱搞
于是你想到君の星战
于是你考虑哈希
但是你的哈希和别人不一样
你考虑把一个路径上的所有数写成这个形式
sum=i=1lencntibasei
其中base就是一个进制,然后cnti就是i在路径中出现的次数
相等的话就是sum=i=1lenbasei
然后你考虑线段树区间加区间求和维护这个东西
写个双模就结束了......

T2

嘿嘿没想到吧是原题!
考虑把每个边存在的时间做线段树分治
线段树分治时用并查集维护一下所有连通块的大小即可,
并查集需要支持撤销,因此只能支持按秩合并。

T3

三维偏序
二维偏序

T4

思考一下妹子操作的策略,
我们先把t号节点提根,
st的路径就是一条到根的链,
qjd 必然是向上走若干步,
然后妹子在他走的同时删掉一些比较优的子树节点不让他进入,
然后 qjd 找到一个自己能进入的最优的子树并钻进去,
此时妹子可以每次删掉 qjd 所在节点的最优的那个儿子,
因此 qjd 此时只能不断走次优的儿子。
一番操作后,qjd 必然会被堵在某个节点上(因为不能走有标记的边),
此时妹子就慢慢把他到根路径上的所有分岔口全部删掉,
然后清理掉 qjd 到根的边上所有的标记即可。
于是我们可以二分答案,
st一步步跳,
每次看当前节点i的所有不在st路径上的子树,
如果这个子树的代价加上在i之前被删掉的子树数量mid
那么这个子树也必须被删掉。
如果某个时刻必须要被删掉的子树数量比 qjd 跳的步数还大,那么就不行。
这里子树的代价包括找个 qjd 能进入的最优节点,删掉所有分岔口以及清理子树到根上所有边的标记的代价之和。

posted @   2K22  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示