【考试总结】2021-03-28

A. 矩阵

考虑枚举一个矩形表示斜率,同时钦定这个矩形的两个端点必须选

不难发现这个矩形对角线上的点的个数是 gcd(长,宽)

这个结论的证明考虑 y=hwxx[1,w] 中有几个点满足 y{Interger}

上下消掉 gcd(h.w) 之后在 [1,w] 里面有 w/wgcd 个数是它的倍数

ans=2d(d1k2)nNd(Nnd)gcd(n,m)=1Md(Mmd)+点在一个直线上的方案

提出来 μ,然后发现有两个乘积就行了

ans=2dp|dμ(dp)(p1k2)nNd(Nnd)mMd(Mmd)+点在一个直线上的方案

B.覆盖

把区间按照右端点排序,从前往后扫,如果当前区间没有点,那么在右端点放一个

如是解决第一问,按照放点的位置,把这个段割成 n 个小段,每个段里面必然会有一个点

转移:相邻的两个点夹的一段区间,这段里面有一些询问的终点,在区间 mid 左侧的由上一个管,剩下的下一个管

具体就是 f[i]=min{f[j]}+val(i,j),同时得到这个 val(i,j) 满足决策四边形不等式

那么使用分治实现决策单调性的 dp

具体而言,已知当前 dp[i][lr] 的决策点 [L,R],找到其 mid=l+r2 的决策点然后两边递归即可

C.强壮

将原题中的限制修改为 in or out,也就是相离或者包含

这个可以使用线段树或者单调栈进行简单处理,剩下的部分设 dpi,j 表示处理到第 i 个点,这个点的有长度为 j 的右侧链

转移考虑枚举相邻的限制,合并右链长度,注意每次转移的时候先做一次当前的后缀和

dfs 实现 dp 就行了

posted @   没学完四大礼包不改名  阅读(62)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示