摘要: 2-SAT 输出可行解找可行解的方案就是:根据第一次建的图建一个反图..然后求逆拓扑排序,建反图的原因是保持冲突的两个事件肯定会被染成不同的颜色求逆拓扑排序的原因也是为了对图染的色不会发生冲突,输出可行解就是遍历一次逆拓扑排序时染成的颜色,输出同一组颜色的解就是其中的一组可行解。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 const int maxn = 2011; 8 const int maxm = 3000011; 9 struct node{ 10 int u; 1... 阅读全文
posted @ 2013-11-18 19:25 pony1993 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 后缀数组 求长度不小于k的公共子串的个数代码: 1 #include 2 #include 3 4 const int maxn = 200011; 5 int len, len1; 6 int wa[maxn], wb[maxn], wv[maxn], wd[maxn], sa[maxn]; 7 int lcp[maxn], r[maxn], rank[maxn], height[maxn]; 8 9 int cmp(int *r, int a, int b, int l){ 10 return r[a] == r[b] && r[a+l] == r[b+l... 阅读全文
posted @ 2013-11-17 08:40 pony1993 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1953好长时间没写过博客了。。今天上英语课闲着无聊,聊天玩的时候有人问到了2-SAT。。突然就想起来了这道题。。。2-SAT嘛。。比赛的时候居然没想到。。给定需要满足的m个条件。把每个变量拆为两个点。一般情况下拆为2i和2i+1 分别代表它为真和为假 由于这道题是<1000的。且正的代表选,负的代表不选。那么我们可以把<999的作为要选的,>999的作为不选的。。比如,第一组样例中的 1 2 代表他投票赞成1和2 那 阅读全文
posted @ 2013-03-12 15:19 pony1993 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3436纠结了好几天的题目,看懂题意就看了好长时间,题目大意:有N台机器,每台机器有P部分,每部分有自己的输入、输出,因此每台机器有2*P+1种参数:第一个参数Q:该机器的容量;接下来P个参数S:该机器各部分的输入;接下来P个参数D:该机器各部分的输出。其中输入有三种情况:0,1,20:该部分必须不要;1:该部分必须要;2:该部分可有可无输出有2种情况:0,1 0:该部分不存在;1:该部分存在题目要求的是最大流、流量改变的边数和改变的边。思路:如果某个节点 u的输入部分没有1,则添加一条 s->u 路径,容量为Qu;如果某个节 阅读全文
posted @ 2012-12-07 14:48 pony1993 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 给一个n个点、m条边,无自环的无向图,每个顶点有一个颜色值,在出现过的颜色值中找到一个有最多相邻的颜色值,如果有多种相同的,输出一个小的。 1 const int maxn = 100011; 2 set<int>s[maxn]; 3 int c[maxn]; 4 bool vis[maxn]; 5 6 int main(){ 7 #ifndef ONLINE_JUDGE 8 freopen("in.txt", "r", stdin); 9 #endif10 int n, m, a, b;11 scan_d(n);12 scan_d(m... 阅读全文
posted @ 2012-11-22 11:07 pony1993 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 1、 概述二叉查找树(Binary Search Tree,也叫二叉排序树,即Binary Sort Tree)能够支持多种动态集合操作,它可以用来表示有序集合、建立索引等,因而在实际应用中,二叉排序树是一种非常重要的数据结构。从算法复杂度角度考虑,我们知道,作用于二叉查找树上的基本操作(如查找,插入等)的时间复杂度与树的高度成正比。对一个含n个节点的完全二叉树,这些操作的最坏情况运行时间为O(log n)。但如果因为频繁的删除和插入操作,导致树退化成一个n个节点的线性链(此时即为一个单链表),则这些操作的最坏情况运行时间为O(n)。为了克服以上缺点,很多二叉查找树的变形出现了,如红黑树、AV 阅读全文
posted @ 2012-11-20 19:16 pony1993 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个n*n的 0、1矩阵,把尽量少的0改成1,使得每个元素的上下左右的元素之和都为偶数。思路:约束条件是某元素周围上下左右四个元素之和必须为偶数,那么,只需要枚举第一行,剩下的n-1行根据前一行递推出来。话说最近改了一下代码风格,盗用了某大神的define和template。。。下面代码就不贴那部分了。代码: 1 const int maxn = 20; 2 const int inf = 9999999; 3 int mi; 4 int n, a[maxn][maxn], b[maxn][maxn], c[maxn]; 5 6 int make(){ 7 int v; 8... 阅读全文
posted @ 2012-11-15 21:21 pony1993 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 这是第一章的所有例题和课后习题,寒假前的任务,尽量刷吧。。。问题求解策略例题例题 1UVa11292The Dragon of Loowater排序后用贪心法例题 2UVa11729Commando War用贪心法求最优排列;用“相邻交换法”证明正确性例题 3UVa11300Spreading The Wealth用代数法进行数学推导;中位数例题 4LA3708Graveyard推理;参考系例题 5UVa10881Piotr's Ants等效变换;排序例题 6LA2995Image is Everything三维坐标系;迭代更新例题 7UVa11464Even Party部分枚举;递推 阅读全文
posted @ 2012-11-12 20:23 pony1993 阅读(2616) 评论(3) 推荐(0) 编辑
摘要: 刘汝佳新出了一本《算法竞赛入门经典——训练指南》知识点挺全面的,按照这本书刷上面的题吧。。以后或许博客不怎么经常更新了,处于学习新东西的阶段,就个人而言,我更喜欢多看书然后配合着做题。一般情况下我不会每做一道题就记录在博客中,博客更多的用来记录自己做不出来后看了别人思路或者想了好长时间才做出来的题。so,博客大概会经常性的不更新。。然后专题的题目总结大概会发到独立博客。。。另外,自己不会的太多了,好多算法只是知道是干什么的。完全没用过。。。补补数学部分、数据结构部分、计算几何部分。压力还是挺大的。。。。以后跟着总体的计划POJ 慢慢做,然后是《训练指南》的题。。把上面不会的那三部分好好补补.. 阅读全文
posted @ 2012-11-12 20:06 pony1993 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题意:一个有n个点,m条边的无向图,找出最短路中的两个点的路径最大值。n次spfa求最短路,然后找出最大值即可,踩着时间线险过。。。代码: 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 #include <queue> 6 #include <string> 7 #include <map> 8 using namespace std; 9 10 const int oo=1< 阅读全文
posted @ 2012-11-09 11:32 pony1993 阅读(1273) 评论(11) 推荐(0) 编辑

View My Stats