题意:a,b,c三个数,分别代表可乐,两个杯子,三个容器可以互相倒,能不能把a平分,能的话输出最小步数,不能输出NO。
分析:求最小用BFS,对6种倒法进行BFS。另外如果a是奇数的话可以剪枝,因为不能平分。
#include
#include
using namespace std;
struct Node
{
int a,b,c;
int s; //步数
};
bool v...
分类:
其他好文 时间:
2015-06-08 13:26:05
阅读次数:
123
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
整个解的空间相当于一个二叉树,左边是0,代表不取这个物品,右边是1,代表取这个物品,然后进行dfs,回溯的时候修改。
注意,这里应该有两个剪枝,我这里只写了一个。
#include
#include
#include
using namespace std;
...
分类:
编程语言 时间:
2015-06-05 00:46:43
阅读次数:
133
题意:在一个坐标内,给定起点和终点,问能否恰好在t时刻到达终点。
以前很少写搜索题,所以看到这个题,就按照普通的深搜写了一下,交上去超时了。后来在网上搜了一下才知道,要剪枝才行。可是,我以前从没写过剪枝,不知道怎么剪,就按照别人的思路往下想。看懂以后,我对剪枝的理解是:对于一些没有必要继续搜索的路径,不再往下深搜,提前返回到上一层。花了半天时间调试代码,终于AC了。
...
分类:
其他好文 时间:
2015-06-04 13:49:13
阅读次数:
108
题目链接:
csu1651
题解思路 :
用到kruskal算法的思想:
枚举这条路径最小的边作为kruskal算法的起始边
当某条边加入一个 边集 后满足起点和终点在一个集合,即可得到一个答案
这些答案的最小值即为answer
中间会用到几个剪枝
代码:
#include
#include
#include
#define MAXN 1...
分类:
其他好文 时间:
2015-06-04 11:54:36
阅读次数:
101
回溯法解题时通常包含3个步骤: 1. 针对所给问题,定义问题的解空间; 2. 确定易于搜索的解空间结构; 3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 对于问题的解空间结构通常以树或图的形式表示,常用的两类典型的解空间树是子集树和排列树。当所给的问题是从n个元素的集合S中找...
分类:
其他好文 时间:
2015-06-04 11:43:34
阅读次数:
222
就是一道 DFS剪枝+枚举全排列 的题目
我用了vector来存点对的,不用考虑越界的问题。不过效率貌似不如直接用数组高。
WA了三次,花了好长时间找原因╮(╯▽╰)╭
多么弱智的错误啊=。=
WA代码#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-06-02 09:22:31
阅读次数:
143
题目大意:又n个人围成一圈玩游戏,游戏有m个回合。每个人每回合能得到(L * 左边那个人的苹果数量) + (R * 右边那个人的苹果数量),问最后每个人得到的苹果数量解题思路:矩阵的话比较好些,就不解释了,关键是怎么将矩阵乘法的复杂度下降,因为每个人每回合后矩阵变化都是相同的,所以只需要求出第一行就可以了,经过偏移就可以得到其他行的了
这里还有一个剪枝点,传参时要用引用,不然会超时。。。#inc...
分类:
其他好文 时间:
2015-06-01 09:44:42
阅读次数:
127
逃离迷宫
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18519 Accepted Submission(s): 4463
Problem Description
给定一个m × n (m行, n列)的迷宫,...
分类:
其他好文 时间:
2015-05-27 10:23:40
阅读次数:
141
我们都知道区间更新时候有个lazy 标志。而这个lazy 标志 我们要使得其可以理论重叠。即使操作不能重叠。也尽可能让其重叠。比如:一道修改区间>x的值为gcd(x,val)的操作题。首先针对查找区间>x 这种查找。我们在节点上存储 区间最大值 作为剪枝。另外针对求gcd(x,val)操作。用向量存...
分类:
其他好文 时间:
2015-05-26 21:14:25
阅读次数:
142
回溯法--基本思想 有些问题的解有限但是有很多种可能性,解需要穷尽搜索才能获得,为了减少搜索范围,进行剪枝,避免所有的搜索情况。当遍历到某种情况的时候,满足剪枝条件,则停止遍历此种情况,反之,继续遍历下一个。来自为知笔记(Wiz)
分类:
其他好文 时间:
2015-05-26 20:49:45
阅读次数:
342