tg 92 solution
T1
首先看出第一步
枚举每个数作为最大公约数,
把边权为当前数
如果从大到小枚举
然后考虑优化上述过程
用bitset
维护这些边出现的所有点
然后对于每个出现的点,bitset
维护每个询问,
每一位是
然后当前点每个询问的另一个点必须也在这个集合
此时bitset
一个按位与就是交集
然后我们处理的询问就可以直接找出来了
直接搞这样的询问,并查集维护每组询问两个点是不是连通的
如果连通那就更新答案
早就知道bitset
有叫做_Find_first()/_Find_next
就直接拿了搞
Brute Force
暴力时间复杂度还有常数没收住
写的太烂和别人暴力一比少20
T2
上次做过一个区间
这次来个区间求
正解隔壁势能分析线段树
zasdcn写的确实可以所以就扔上去了
考虑
除
然后等这个
然后线段树上暴力就好了
奇人轶事
我维护了两棵线段树分别针对x和以及y的和
for循环分支判断每个位置是否满足y=1
然后别的都是对的
最后我发现,虽然确实只会修改差不多3e6次
但是我暴力判断直接就废了
后来把`for`换成维护没有变$1$的一个`set`变$70$
然后发现我现在时间复杂度确实是对的,但是线段树常数太大
我修改3e6次直接就寄了
后来看到y修改点修区查换了树状数组过了
赛时写的是直接拿for
搞的只有
后来把for
换成维护没有变set
变
后来维护
没错我就是那个傻逼
T3
扫描线
好像有一个套路就是每次加一列删一列
考虑到列宽这个必须靠枚举了所以考虑尽可能少枚举列
然后就如果比较瘦就翻转一下
这样时间复杂度
考虑后续过程
一个区域
我们现在相当于转化为了序列上的问题:
统计所有子区间的和的和以及最大值乘区间长度之和,
后者可以对序列建笛卡尔树处理,
即在每个节点处处理左端点在左子树以及右端点在右子树的子区间,
相当于固定了区间最大值。
T4
树上差分
说句闲话
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具