上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define pii pair#define bug coutr) return ; int m=(r+l)>>1; newNode(x,m); makeTree(ch[... 阅读全文
posted @ 2012-09-15 22:10 一生挚爱 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://poj.org/problem?id=2513题意就是给我们n个带颜色的木棍,看是否能排成一排(相接的颜色必须是一样的),解题思路是看的别人的:判断无向图中是否存在欧拉通路,判断条件是:1、有且只有两个度为奇数的节点2、图是连通的由于节点是字符串,因此我们可以利用字典树将其转换成一个颜色序号。这样,统计每种颜色的出现次数就可以了。判断图是否连通,可以利用并查集:若最后所有节点在同一个集合,则图是连通的。#include#include#include#define maxn 501000int father[maxn],degree[maxn];struct node{ 阅读全文
posted @ 2012-09-15 14:43 一生挚爱 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1247本题为简单字典树问题。解题思路:进行插入的时候,使用flg标记每个单词的结尾,当flg为true时表示到了某一个单词的结尾当为false时即不是某一个单词的结尾。进行查找的时候当一个单词的前一部分是某个单词的时候则判断后面一部分是否也是一个已经存在的单词,是则返回true否则返回false。#include#include#includechar list[50001][26];struct node{ bool flg; node *next[26];}*root;void insert(c 阅读全文
posted @ 2012-09-15 10:17 一生挚爱 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1251字典树模版题动态实现:#include#include#include#define maxn 26struct node{ int count; node *next[maxn];}*root;void insert(char str[]){ int i,len = strlen(str); node *current,*newset; current = root; for(i = 0; i next[k] != NULL) { current = current->next[k]; 阅读全文
posted @ 2012-09-15 08:16 一生挚爱 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1878欧拉回路:http://baike.baidu.com/view/566040.htm无向图存在欧拉回路充要条件: 一个无向图存在欧拉回路,当且仅当该图所有顶点度数都是偶数且该图是连通图有向图存在欧拉回路的充要条件: 一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图混合图存在欧拉回路充要条件: 要判断一个混合图G(V,E)(既有有向边又有无向边)是欧拉图,方法如下: 假设有一张图有向图G',在不论方向的情况下它与G同构。并且G'包含了G的所有有向边。那么如果存在一个 阅读全文
posted @ 2012-09-14 15:11 一生挚爱 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 本沙茶今年AHOI的时候,遇到裸的最佳匹配的题,竟然把KM算法搞忘了,幸亏是WJMZBMR神犇保佑,临时乱弄一通,想起来了……这MS反映出了本沙茶以前在看某些经典算法的时候看得不深,木有理解透彻……前几天又遇到一道最佳匹配的题,发现KM算法竟然又忘了……米办法,只有把这个搞死人的算法的具体过程重新看了一遍,终于懂了……【KM算法及其具体过程】(1)可行点标:每个点有一个标号,记lx[i]为X方点i的标号,ly[j]为Y方点j的标号。如果对于图中的任意边(i, j, W)都有lx[i]+ly[j]>=W,则这一组点标是可行的。特别地,对于lx[i]+ly[j]=W的边(i, j, W),称 阅读全文
posted @ 2012-09-10 21:02 一生挚爱 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1498/* 题意: 给你一个n*n的矩阵,在矩阵中分布着s种颜色的气球,给你k次扎破气球 的操作,每次操作可以扎破一行,或一列的同一颜色的气球。问在k次操 作后有那几种颜色的气球是不能被完全扎破的. 解题思路: 使用二部图最大匹配,寻找每种颜色的最大匹配数,(行,列分别为两个匹配) 如果都在m次内可以被刺破,则输出 -1 否则的话,按不能被刺破的气球 编号从小到大进行输出。*/#include#include#include#define maxn 101int map[max... 阅读全文
posted @ 2012-09-10 15:03 一生挚爱 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 【二分图】二分图是一种特殊的图结构,所有点分为两类,记做x和y,所有的边的两端分别在x和y,不存在两端同在x或y的边。【最大匹配、完备匹配】给定一个二分图(x,y),找到一种匹配数最大的方案,记做最大匹配。|x|=|y|=匹配数时,我们称该匹配方案为完备匹配。显然,解决了最大匹配也就解决了完备匹配。解决二分图的最大匹配可以用网络流或者匈牙利算法,两者本质上是相同的,不过不论从编程复杂度还是运行效率来讲,匈牙利算法都更加优秀。关于匈牙利算法,可以参见我以前写的文章:用匈牙利算法求二分图的最大匹配这里我主要叙述另一类问题:【最优完备匹配】对于二分图的每条边都有一个权(非负),要求一种完备匹配方案, 阅读全文
posted @ 2012-09-08 21:20 一生挚爱 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1054简单二分匹配,根据题意构造一个无向图。然后求最小点覆盖,然后扫描mark数组将曾经匹配的点所匹配的边消去。最小点覆盖 = 最大二分匹配#include#include#define maxn 1505struct node{ int v; node *next;}*head[maxn],edge[maxn*maxn],*p;int n,vis[maxn],mark[maxn];bool dfs(int v){ for(node *p = head[v]; p ; p = p->next) 阅读全文
posted @ 2012-09-08 20:30 一生挚爱 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1281本题为简单最小点覆盖。只需先求出最小点覆盖然后枚举所有的点。#include#include#define maxn 105bool map[maxn][maxn],vis[maxn];int n,m,k,mark[maxn],edge[maxn*maxn][2];bool dfs(int v){ for(int i = 1; i Hungarian()) sum ++; map[edge[i][0]][edge[i][1]] = true; } printf("Board %... 阅读全文
posted @ 2012-09-07 22:32 一生挚爱 阅读(97) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页