8.2 day10图论+dp
100+70+70+20=260
感觉如果时间够感觉还能写一下,结果T3超大数据结构写死了
T1
观察到最短路径仍然最优,直接dij即可,注意判断终点不用等红灯
T2
暴力是
设计
每次从所有点转移,算曼哈顿距离
假如从左上角转移,柿子就可以写成
发现可拆,直接分层扫描x轴维护上述柿子即可
正着扫一遍处理第3,4象限
反着扫一遍处理第1,2象限
时间复杂度:
T3
考场写出来了树上莫队,但是维护丑了,用了bitset,复杂度多一个
树上莫队不用说,维护询问,主要的是如何维护curans,我们插入一个数,最多3个质因数,我们可以想到一个简单的容斥去计算curans的增量:加上与自己没有重叠质因数的数,减去与自己至少有一个质因数重叠的数,加上至少与自己有两个质因数重叠的数......
依此,我们去枚举x的质因数的组合,并开一个桶记录全局质因数组合的个数,就可以做到上述效果,就不用bitset了
时间复杂度:
T4
对于树上相邻的两个点,他们的M值的绝对值差
为了准确定位3个点中点,我们将每两个点之间再插入一个点,此时原本M值翻倍,此时假设我们插入的点为x,相邻点为u和v,我们要去计算
1.
此时说明x是
由于我们开篇讲到的性质,
由于这样的点只会有最多3个(u之间两两有一个),所以是常数)
2.
此时
讨论完两种情况,代表着我们能在
如果我们将一条边按M值从大指向小定向,那么整体流动的方向则是三个点中点的方向,最后汇聚在3个点的中点,不妨,我们假设
观察得知,这里也可以分两种情况讨论:
1.
此时1,3中点同时也是2,3中点,那么可能有一个疑问,为什么3个点的中点不是图中蓝色的位置呢,考虑我们求得是中位数,在蓝色位置时,到三个点dis相同是 (d,d,d),但是我们向着1,2走一步,就成了(d-1,d-1,d+1),中位数实际上减小
我们如何去求方案数呢,我们知道此时
三个点分别在以u为根不同子树内,首先dep不足d1的先排除,设计
2.
此时看上去比较复杂,但是如果按照上文的方法分析,很快就能定向出来
考虑求方案
我们已经得知两个汇点的位置,所以他们之间距离已知,假设为
此时
统计也非常简单,以
这样我们就在
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现