搜索枚举_冯政玮
搜索枚举_冯政玮
A - 循环赛
搜索剪枝
题面
给出队伍的最终得分,求有多少种可能的分数表。
平1胜3负0
指:
- 若两支队伍打平,则各得到
分; - 否则,胜利的队伍得到
分,被打败的队伍得到 分。
题解
搜索剪枝。
-
知道总分数,可以列方程知道平局数与胜局数,剪枝
-
如果有人的得分超过了总得分,剪枝
-
如果有人无论如何也达不到总得分,剪枝
-
当一个人被匹配完后,对剩下场数的状态进行记忆化,注意必须是当一个人匹配完后再记忆化,因为在匹配过程中,一个人同时受自己的剩下的场数及剩下的未匹配的人限制,比如一个人还剩
场 个人,与还剩 场 个人的方案是不一样的。
便可以通过。
方法
- 搜索剪枝
B - Binary Cards
简化搜索条件
题面
给定
题解
注意到以下操作不会使得答案更劣
-
。 -
所以对于一个
如果
所以可以对于所有数,判断是否被
由于每次值域减半,每次去重后再处理,复杂度
方法
- 简化搜索条件,使得可能性减少。
D - Balanced Cow Subsets G
折半搜索
题面
题解
每个数有划分至左、右以及不选择三中情况,可以搜索,我们可以将条件看作
发现
记录前
时间复杂度:unordered_set
实现,bitset
实现,
方法
- 折半搜索
F - 靶形数独
搜索剪枝
题面
靶形数独的方格同普通数独一样,在 9 格宽且 9 格高的大九宫格中有 9 个 3 格宽且 3 格高的小九宫格(用粗黑色线隔开的)。每个数字在每个小九宫格内不能重复出现,每个数字在每行、每列也不能重复出现。每个数字在每个小九宫格内不能重复出现,每个数字在每行、每列也不能重复出现。如左图:
总分数即每个方格上的分值和完成这个数独时填在相应格上的数字的乘积的总和。如右图,在以下的这个已经填完数字的靶形数独游戏中,总分数为
给定一个已经填了
题解
搜索剪枝,让
方法
- 搜索剪枝——尽早判断不合法
G - Au Pont Rouge
题面
给出一个长度为
对于一个把
现在把所有分割方案对应的代表该方案的串按字典序从大到小排序,求排序后的第 k 个串。
题解
直接求代表元素不好求,可以考虑转化为判定,先将所有子串排序,二分判定大于串
首先是如何快速比较子串
令
可以
比较两个子串
-
若
,直接比较子串长度。 -
否则比较
与
于是我们可以
排序复杂度
接着如何求解划分个数
令
在每次转移的时候都需要枚举
我们知道字典序是从前往后比较的,但这个方程中却在不断移动左端点,使得我们不得不重新得到大小信息,于是可以考虑从后往前转移。
令
根据我们对于子串比较的分析,
这样就可以
总复杂度
方法
-
预处理快速比较子串
-
更改枚举顺序——字典序尽量保证左端点定而右端点动
H - Wavy numbers
题面
我们将一类正整数称为“波浪数”,它的每个数位上的数都大于或小于两边数位上的数。
你的任务是找到第
题解
注意到
具体地,搜索两个数
可以先枚举
但是如果在枚举 unordered_map
常数太大,可以先用其处理,处理完
方法
- 假数位DP,真折半搜索
作者:lupengheyyds
出处:https://www.cnblogs.com/lupengheyyds/p/18303122
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效