A. 矩阵
考虑枚举一个矩形表示斜率,同时钦定这个矩形的两个端点必须选
不难发现这个矩形对角线上的点的个数是 gcd(长,宽)
这个结论的证明考虑 y=hwx 在 x∈[1,w] 中有几个点满足 y∈{Interger}
上下消掉 gcd(h.w) 之后在 [1,w] 里面有 w/wgcd 个数是它的倍数
ans=2∑d(d−1k−2)⌊Nd⌋∑n(N−nd)⌊Md⌋∑gcd(n,m)=1(M−md)+点在一个直线上的方案
提出来 μ,然后发现有两个乘积就行了
ans=2∑d∑p|dμ(dp)(p−1k−2)⌊Nd⌋∑n(N−nd)⌊Md⌋∑m(M−md)+点在一个直线上的方案
B.覆盖
把区间按照右端点排序,从前往后扫,如果当前区间没有点,那么在右端点放一个
如是解决第一问,按照放点的位置,把这个段割成 n 个小段,每个段里面必然会有一个点
转移:相邻的两个点夹的一段区间,这段里面有一些询问的终点,在区间 mid 左侧的由上一个管,剩下的下一个管
具体就是 f[i]=min{f[j]}+val(i,j),同时得到这个 val(i,j) 满足决策四边形不等式
那么使用分治实现决策单调性的 dp
具体而言,已知当前 dp[i][l→r] 的决策点 ∈[L,R],找到其 mid=l+r2 的决策点然后两边递归即可
C.强壮
将原题中的限制修改为 in or out,也就是相离或者包含
这个可以使用线段树或者单调栈进行简单处理,剩下的部分设 dpi,j 表示处理到第 i 个点,这个点的有长度为 j 的右侧链
转移考虑枚举相邻的限制,合并右链长度,注意每次转移的时候先做一次当前的后缀和
dfs 实现 dp 就行了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律