[题解]gdfzoj2145 奇怪的题目4

传送门

本场唯一一道自己想出的题

洗澡的时候 YY 出正解

还有别问我为什么模数是这个

本人语文能力有限,喷轻点。。

可以说是本场最良心的题了,没有码量,部分分也很多

24 分暴力: n2DP 不讲

48 分暴力:容斥 O(k2k)

想到这里的同学已经是史诗级大佬了

易得:答案 = 总路径条数 非法路径条数

考虑没有障碍的情况:没有非法路径,答案即为总路径数

考虑有一个障碍 A : 答案 = 总路径条数 经过 A 的路径条数

考虑有两个障碍 AB

非法路径数 = 经过 A 的路径数 + 经过 B 的路径数 同时经过 AB 的路径数

答案 = 总路径条数 非法路径数

...... 以此类推

所以我们可以对障碍进行排序,再二进制枚举状态,容斥即可

因为模数是个质数,所以两点之间的路径数可以直接用组合数求出(然后用加乘原理瞎搞

需要注意的是有时同时经过多个点的状态不存在。这个点我在求组合数的时候顺便解决了

正解:

正解就是将求非法路径数的时间复杂度变为 O(k2)

path(x1,y1,x2,y2) 表示从 (x1,y1) 走到 (x2,y2) 的路径数 (不考虑障碍)

g[i] 表示从第 i 个陷阱,不经过其他任何陷阱,到达 (n,m) 的路径数

g[i]=path(xi,xj,n,m) 经过其他陷阱的路径数

易得

g[i]=path(xi,xj,n,m) j=i+1n path(xi,yi,xj,yj) × g[j] × [yj>=yi]

对于每一条非法路径,都至少经过一个障碍

我们枚举每个障碍, path(0,0,xi,yi)×g[i] 就为 经过的最后一个障碍为 i 的路径个数

然后相加即为非法路径条数

代码(巨丑无比)

完结撒花

posted @   ZSH_ZSH  阅读(171)  评论(4编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示