
进阶搜索
文章平均质量分 56
南星啊
南星啊
展开
-
CF912E
我们可以将奇数位值得结果存在一起,在将偶数位的结果存在一起,这样就会得出两个集合,之后,我们二分一个数X,寻找集合A与集合B相乘小于等于X的个数,我们以第一个集合A为基准,每次查找集合B中,使得集合A的数乘上集合B的数小于等于X,每查找一个B,就将B的下标加起来,最终个数就等于所有下标的总和.这题看不懂题目什么意思,看了看题解求:在给定的集合中任选不限定个数,选择的数可以相同,求第k小的数,这里也可以什么都不选,什么不选的时候答案为1。如果总和大于k,就将右侧的边界放缩,如果小于k就将左边的边界放大。原创 2025-04-22 17:33:19 · 236 阅读 · 0 评论 -
P3959 [NOIP 2017 提高组] 宝藏
其中,i代表深度,j代表状态,由于我们每次的状态都是由上一次的状态推导出来,所有这一层比上一层多余的状态(上一层没有被选,但这层被选的宝藏图)的消费就等于上一层到这一层的花费乘上深度.(乘上深度的原因是我们每一层的状态都是比从上一层推导而来的,所以,这一层的深度比上一层加1,那么,这一层新增的藏宝图到起点的距离也就比上一层多1)首先,我们看下数据,n最大为12,并且每两个结点都可以由上一个结点推出来,那么,我们可以考虑从状态压缩的角度考虑。原创 2025-04-21 13:40:07 · 234 阅读 · 0 评论 -
洛谷P1763 埃及分数
3.定义左右区间,左区间等于上一层存储的数+1或者此时剩余的分子/剩余的分母+1,两者的最大值就是左区间,右区间的最大值需要我们计算:为了保证后序有解,我们需要保证此时层的最小值*层数大于剩余的分数,我们假设最小值是z,那么。首先,考虑dfs,bfs,dfs另现在搜索状态为搜索到第几个数,但显然,我们不知道还需要搜索多少棵树,因此,此方案不行,如果是bfs,同理,我们不知道还有多少个数需要搜索,因此,时间会太高,那么,我们考虑迭代加深.并且根据题目,我们需要y<=1e7,y过大,直接break。原创 2025-04-15 12:19:10 · 839 阅读 · 0 评论 -
洛谷P1312 [NOIP 2011 提高组] Mayan 游戏
算法/进阶搜索思路:根据题意,我们可以知道,这题只能枚举,剪枝,因此,我们考虑如何枚举,剪枝.首先,我们要定义下降函数down(),使得小木块右移时,能够下降到最低处,其次,我们还需要写出判断函数,判断矩阵内是否有小木块没被消除.另外,我们还需要消除函数,将矩阵内三个相连的小木块清除,dfs()函数进行搜索这里,我们定义数组横坐标代表原矩阵的列,纵坐标代表原矩阵的行,坐标轴从1,1开始。原创 2025-04-19 18:36:25 · 256 阅读 · 0 评论 -
洛谷P1120 小木棍
首先,最初始想法,将我们需要枚举的长木棍个数计算出来,在dfs中,我们先判断,此时枚举这根长木棍需要的长度是否为0,如果为0,我们就枚举下一个根木棍,接着再判断,此时仍需要枚举的木棍个数是否为0,如果为0,代表我们这种方案可行,直接打印长木棍长度,接着我们再枚举每一根小木棍,将还没有访问的长木棍,以及长度小于还需要的长度的小木棍dfs下去。3.在我们枚举枚举短木棍时候,如果我们枚举上一根木棍的长度与此时准备枚举的短木棍长度相同,并且,上一根的短木棍方案不行,那么,我们无需再继续枚举这根小木棍.原创 2025-04-19 18:34:23 · 306 阅读 · 0 评论