DP is, enumeration + pruning. If you can think of enumeration pattern of a problem, plus a recurrence relation later, you are there.Main ref:http://bl...
分类:
其他好文 时间:
2014-07-03 09:32:27
阅读次数:
213
给出某些交叉点的距离,-1 表示无法到达。
然后给出火灾发生点 和 附近的消防局位置。
排列消防局 的 时间 与路径。
反向建图,以火灾出发点为起点做一次SPFA。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-07-02 09:47:43
阅读次数:
285
题目大意:
求可覆盖的出现k次的子串的最大长度。
思路分析:
同样是二分答案的长度,然后扫描height判断是否成立。
#include
#include
#include
#include
#define maxn 1000005
using namespace std;
int str[maxn];
int sa[maxn],t1[maxn],t2[maxn]...
分类:
其他好文 时间:
2014-07-02 09:02:19
阅读次数:
258
感觉这种算法还是比较局限的吧,重复搜索是一个不好的地方,而且需要高效的估值函数来进行强剪枝,这点比较困难。
迭代搜索深度是一个比较炫酷的搜索方式,不过有点拿时间换空间的感觉。
首先迭代深度比较搓的写法是,首先设置一个阀值MaxH,初始为最小值。
当在搜索深度Depth
另外一种比较吊的写法是二分搜索深度,若搜到则减小阀值,否则增大阀值。
总之,迭代深度搜索就是通过改变深搜的深度来寻找最...
分类:
其他好文 时间:
2014-07-02 09:01:04
阅读次数:
247
经典搜索问题,主要是时间上的优化,我用了三个辅助数组记录信息 row[i][k] = 1表示第i行数字k已经被使用,col[j][k] = 1表第j列数字k已经被使用,blo[i][k]表示第i个小九宫格中数字k已经被使用
还有很重要的一个优化(没有优化的话可能会超时,或者非常慢,像POJ讨论区里有很多说正着搜超时,倒着搜0ms,这的确是一个可以用的方法,但是有一定的随机性),每次填数字时,先扫...
分类:
其他好文 时间:
2014-07-02 07:56:21
阅读次数:
235
题目地址:POJ3288
这个题跟之前的一道题混了,感觉是一样的,所以连想都没怎么想就拆点然后求最短路然后二分求最大流了。结果连样例都不过,还一直以为又是哪里手残了。。结果看了看样例,手算也确实不对,,。后来就没拆点,直接在原点上建的图,结果样例就过了。。然后提交1次AC。。。
后来仔细的想了想,这题是问每一段路的最短的,而不是整个的最短的。所以说不应该拆点。而我混的那道题(poj2391)是...
分类:
其他好文 时间:
2014-07-02 07:48:56
阅读次数:
140
传送门:http://poj.org/problem?id=1511...
分类:
其他好文 时间:
2014-07-01 16:05:38
阅读次数:
169
假设初始状态为
a:2 3 1 5 4 6
则目标状态为
b:1 2 3 4 5 6且下标为初始状态中的3 1 2 4 5 6(a[3],a[1]...)
将置换群写成循环的形式
(2,3,1),(5,4),6就不用移动了。
移动方式2种
1:选循环内最小的数和其他len-1个数交换
2:选整个序列最小的数和循环内最小的数交换,转到1,再换回来。
#include
#inclu...
分类:
其他好文 时间:
2014-07-01 15:50:03
阅读次数:
243
题意:排序后字符串全排列
思路:好久没水一题了
#include
#include
#include
#include
using namespace std;
const int MAXN = 220;
char str[MAXN];
int main() {
while (scanf("%s", str) != EOF) {
int n = strlen(str);
...
分类:
其他好文 时间:
2014-07-01 15:09:17
阅读次数:
182