uoj #770. 【UER #11】切割冰片
https://uoj.ac/contest/79/problem/770
赛时睡了一觉后就会转化了/hsh
-
考虑这个竖线倘若存在第 条能发到 ,那么 之后的也一定能发到!
-
考虑每条横线“阻挡”了一段区间的竖线发到 ,那么横线阻挡的区间肯定不交,且它是一段一段的,也就是说,第 条横线阻挡的区间在第 条横线的前面,。这个随便就能看出来了。
-
假如你用 条横线,覆盖了前 条竖线,那么第 条竖线之后的形状是一定的,因此你只要考虑前面有多少种形状即可。
-
一种不同的覆盖方案对应一种不同的形状,显然不存在相同的覆盖方案但能覆盖出不同的形状,也不存在不同的覆盖方案但能覆盖出相同的形状。
既然如此,不妨想到 表示前 条横线,覆盖了前 条竖线的方案数。转移的时候考虑当前这条横线做了多少次转移即可,注意需要看看是否当前横线能够覆盖得到,倘若覆盖不到的话,因为可以不覆盖,直接转移前面的即可。
然后不难发现是一个前缀和选点的形式,也就是你要选若干点,单不降,且满足在其区间里,倘若不在其区间里,那么那一个只能跟上一个相等(即选空)
即问题变为,你要构造一个序列 ,满足 ,且 ,否则,即 ,你需要满足 ,求构造序列的方案数。实际意义即为每条横线要么不覆盖,要么覆盖它能覆盖的,且覆盖区间不交,单不降。
考虑按其右端点进行划分(不存在线段覆盖了某个区间的一部分)
那么你定义 为构造到第 个位置, 在第 个区间内的方案数,显然你要枚举 ,然后 这部分的 都在第 个区间内,然后进行转移。
需要注意的是,那么你 了,所以一定要满足 ,即能覆盖到第 个区间,否则那你就只能跟上一个取等得到 取当前这一个区间的值,然而你 已经钦定在上一个区间了。
然后考虑组合数即可,注意对于中途不满足 的你就让他跟上一个取等即可,也就是你现在要让满足的点形成单调不降序列。
然后问题变为计算一个很大的组合数作为转移系数,注意到 同时加 ,你列一下就能 求出这东西啦。
__EOF__

本文链接:https://www.cnblogs.com/xugangfan/p/16913486.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】