恢复内容开始 7.1,今日AC题目5到,今天为大家讲解一道普及组的深搜剪枝问题,这道题参解时需要在脑海及对应的手上模拟,切忌眼高手低,切忌三心二意 题目描述 对于一个给定正整数的集合s={x1,x2,x3…xn}和正整数c,编程计算s的第一个子集s1,使得子集s1的和等于c。 输入 第一行有2个正整 ...
分类:
其他好文 时间:
2019-07-02 00:23:49
阅读次数:
164
Fence Rails 题目大意 `N define rep(i,a,n) for (int i=a;i=a;i ) using namespace std; const string filename = "fence8"; void usefile(){ freopen((filename+". ...
分类:
其他好文 时间:
2019-07-01 10:33:56
阅读次数:
111
对于计算一个游戏的胜负,当且仅当后继状态中至少有一个必败状态时,本状态是必胜状态。但是这样既效率很低又不能计算出量化的形势。 因此需要改为双人零和博弈(如图所示) 结点的值代表对于这个状态的甲方最终受益,显然甲方希望这个值尽可能大,乙方希望这个值尽可能小。 这就是极大极小搜索算法(minimax s ...
分类:
其他好文 时间:
2019-06-24 00:20:19
阅读次数:
100
心得:这道题开始想的是剪枝和回溯,但是没想到思路,然后看题解 发现动态规划真的简单,从后往前看,遍历倒数第二个元素,如果他能到达 最后,这说明这个点能到达,遍历倒数第三个,如果这个点能到达第二个,那么他一定能 到达最后一个,问题规模逐渐缩小。 ...
分类:
其他好文 时间:
2019-06-22 20:06:12
阅读次数:
121
枚举: 枚举是最简单也是最直白的搜索方式,它依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解。 例6.1 百鸡问题 广度优先搜索(BFS:breadth-first search): 例6.2 胜利大逃亡(广搜+剪枝) AC代码: #include<cstdio ...
分类:
其他好文 时间:
2019-06-16 00:36:18
阅读次数:
147
一、简述: 众所周知,深搜(深度优先搜索)的时间复杂度在不加任何优化的情况下是非常慢的,一般都是指数级别的时间复杂度,在题目严格的时间限制下难以通过。所以大多数搜索算法都需要优化。形象地看,搜索的优化过程就像将搜索树上没用的枝条剪下来,因此搜索的优化过程又叫剪枝。剪枝的实质就是通过判断决定是否要沿当 ...
分类:
其他好文 时间:
2019-06-11 10:52:12
阅读次数:
98
题意: 给出一个n和m个数 求一个最小的数 1 为n的倍数 2 没有这m个数字中的任意一个 123%n = ((((1%n)*10+2)%n)*10+3)%n 如果 a%n==b%n 那么 (a+x)%n==(b+x)%n 这样就可以剪枝了 之前取模n出现过的后来再出现就可以不要了 例如 A%n== ...
分类:
其他好文 时间:
2019-06-09 18:16:32
阅读次数:
120
之前做过不少深搜题,很多TLE,所以剪枝很重要,如何“未雨绸缪”,避免不必要的搜索树分支? 例题: 数的划分 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输出 ...
分类:
其他好文 时间:
2019-06-09 12:48:25
阅读次数:
102
1440:【例题1】数的划分 类型 DFS 可行性剪枝 上下界剪枝 题解 为了防止TLE,那就不能简单暴搜 1.由于分解数字不考虑顺序,我们不如设定分解的数字依次递增,所以扩展节点时的下界>=前一个结点的值,也就是a[ i ] >= a[ i-1 ] 2.那么上界呢?假设已经分解出了k份,那么 i ...
分类:
其他好文 时间:
2019-06-08 21:40:18
阅读次数:
138
众所周知,搜索是个好东西,他能在很多时候(就是你不会正解打暴力的时候)派上用场。 然而搜索的时间复杂度实在是太高了,大多数都是指数级别的,这让人很是头疼 那么我来总结一下对搜索进行优化的技巧:剪枝 什么是剪枝 我们知道,搜索的进程可以看做遍历一棵搜索树的过程。而所谓的剪枝,就是通过某种判断,避免一些 ...
分类:
其他好文 时间:
2019-06-08 11:39:33
阅读次数:
91