静态字典树。 1 #include 2 #include 3 #include 4 5 #define MAXN 10005 6 7 typedef struct Trie { 8 bool v; 9 Trie *next[10];10 Trie() {11 ...
分类:
其他好文 时间:
2014-06-28 09:39:33
阅读次数:
171
DescriptionFor the daily milking, Farmer John'sNcows (1 ≤N≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game o...
分类:
其他好文 时间:
2014-06-28 09:32:17
阅读次数:
200
题目链接:http://poj.org/problem?id=2288
题意:每个点有一个权值Vi,找一条哈密顿路径,路径的权值来自三条:1 路径上的Vi之和 2 所有相邻点对ij的Vi*Vj之和 3 相邻连续三点i,j,k(并且三点要构成三角形)Vi*Vj*Vk之和。
解法:dp[st][i][j]表示从j走到i并且剩下集合st没有走的最大权值。关于路径书,在转移的时候顺便计算即可;...
分类:
其他好文 时间:
2014-06-28 09:07:03
阅读次数:
213
题目大意:
16*16的数独。
思路分析:
多说无益.
想说的就是dancing links 的行是按照
第一行第一列填 1
第一行第二列填 2
……
第一行第十五列填15
第一行第二列填 1
……
第二行。。。。
列的纺织则是
第一行放1,第一行放2,。。第十六行放16.。。第一列放1.。第一列放2.。。第十六列放16.。第一块区域放1 。。。。...
分类:
其他好文 时间:
2014-06-28 08:14:30
阅读次数:
303
本题解法很多,因为给出的数据特殊性故此可以使用DFS和BFS,也可以使用01背包DP思想来解。
这里使用BFS,缺点是比DFS更加耗内存,不过优点是速度比DFS快。
当然也比DFS难写点:
int N, B;
int Height[21];
inline int mMin(int a, int b) { return a > b? b : a; }
inline int mMax(int a...
分类:
其他好文 时间:
2014-06-28 08:11:26
阅读次数:
238
题目链接:http://poj.org/problem?id=1470...
分类:
其他好文 时间:
2014-06-28 07:39:22
阅读次数:
208
题目链接:http://poj.org/problem?id=2152
题意:一棵带边权的树,边权表示节点间距离,在i上建立消防站的代价是w[i],如果在一点i没建消防站,那么它与距离这个点最近的消防站之间的距离不能大于d[i]。问满足建站最小的花费;
解法;看了陈启峰的论文才会的,感觉挺难的,不过论文里分情况讨论了,应该不需要;dp[i][j]表示在i处选择j处作为供应站(但是并不一...
分类:
其他好文 时间:
2014-06-27 10:27:40
阅读次数:
159
题目大意:
分析长度为n的子串有多少种。
思路分析:
对于没出现的字符,将其分配一个数字。
然后将子串看做一个nc进制的数。
然后hash判断。
#include
#include
#include
#include
#include
#include
using namespace std;
bool vis[26666666];
int val[30...
分类:
其他好文 时间:
2014-06-27 09:45:35
阅读次数:
184
本题就是以每个节点和节点之间建路,而且说明是无向图,不过这里有个技巧,就是根据题意把它当成有向图来做,就成了直接查找有向图的欧拉回路就可以了。因为题意是需要每条边都走两遍的,而且每次走的方向相反。
观察出这点,那么这道题就好做啦,直接建图,Feury递归求解就可以了。
建图注意需要建邻接表,不要建矩阵,因为建成矩阵,那么会很大很大,而根据题意,建成邻接表最多只需要5倍的顶点数。
打印的顺序是...
分类:
其他好文 时间:
2014-06-27 08:58:59
阅读次数:
187