摘要: Problem Description在魔方风靡全球之后不久,Rubik先生发明了它的简化版——魔板。魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示。任一时刻魔板的状态可用方块的颜色序列表示:从魔板的左上角开始,按顺时针方向依次写下各方块的颜色代号,所得到的数字序列即可表... 阅读全文
posted @ 2015-02-01 10:39 justPassBy 阅读(694) 评论(0) 推荐(0) 编辑
摘要: a*b^n(mod(b-1) =a(mod(b-1)http://acm.timus.ru/problem.aspx?space=1&num=1104 1 #include 2 #include 3 4 char str[1000000 + 10]; 5 6 int CharToInt(ch... 阅读全文
posted @ 2015-01-10 15:41 justPassBy 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 给定一个有向图,如果存在平均值最小的回路,输出平均值。使用二分法求解,对于一个猜测值mid,判断是否存在平均值小于mid的回路如果存在平均值小于mid的包含k条边的回路,那么有w1+w2+w3+...+wk 2 #include 3 const int N = 50+10; 4 const in... 阅读全文
posted @ 2014-11-23 15:40 justPassBy 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 给定一个源点,求最短路径,那么存在以源点为根的最短路径树因为最短路径具有最优子结构的性质,所以我们可以先求出树的第一层,然后再求出树的第二层,以此类推bellman_ford算法就是按照这种思想求最短路径的。因为树最多有n-1层,所以只要n-1次循环即可,每次循环i访问所有的边,然后松弛路径,就求出... 阅读全文
posted @ 2014-11-23 14:45 justPassBy 阅读(176) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1的答案就是入度为0的点的个数 为什么?入度为0的点,肯定不能通过其他学校传送软件给他,所以他必须存在... 阅读全文
posted @ 2014-11-21 08:58 justPassBy 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 要判定一个结点u是不是割点的方法是dfs树中①u是根结点,如果u有两个及其以上的孩子(因为是dfs,所以如果有两个孩子,那么这两个孩子只通过u连接到一起),那么u是割点②u不是根结点,如果u的后代的时间戳能够比u的时间戳小,即u的后代有边能够连回u的祖先,那么u不是割点(即low[v] = pre[... 阅读全文
posted @ 2014-11-20 15:51 justPassBy 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,要求求出从某个下标开始,这个字符串的字典序最小,即字符串的最小表示法比如字符串bbbaaa,从下标3开始表示为aaabbb,字典序最小暴力算法的时间复杂度为O(n^3)但是有线性的算法初始时,让i=0,j=1,k=0;分为三种情况,①如果str[i+k] == str[j+k] k+... 阅读全文
posted @ 2014-11-11 16:19 justPassBy 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 给定串S和T,求S的每一个后缀和T的最长公共前缀。方法1:暴力算法,时间复杂度O(n^2);方法2:后缀数组,利用height的性质可以求出该问题,时间复杂度为O(n),但是预处理为O(nlogn)方法3:扩展KMP,充分利用已经匹配过的性质,降低匹配的时间,时间复杂度为O(n)学习资料:http:... 阅读全文
posted @ 2014-11-11 15:38 justPassBy 阅读(233) 评论(0) 推荐(0) 编辑
摘要: height[i] 表示排名第i的后缀和排名第i-1的后缀的最长公共前缀,也即sa[i]与sa[i-1]的最长公共前缀。1、给定一个字符串,询问任意两个后缀的最长公共前缀,假设询问suffix(i)和suffix(j)的最长公共前缀,且rank[i] =k的分为一组,这样组内,任意两个后缀重复长度才... 阅读全文
posted @ 2014-11-09 10:26 justPassBy 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 const int N = 100; 4 int a[N]; 5 int dp[N][33]; 6 inline int min(const int &a, const int &b) 7 { 8 return a < b ? a : b... 阅读全文
posted @ 2014-11-07 08:44 justPassBy 阅读(142) 评论(0) 推荐(0) 编辑