02 2017 档案

RMQ算法
摘要:1. Sparse Table:静态数据,多次查询 2. Binary Index Tree:单点更新,多次查询 3. 线段树:单点/成段更新,多次查询 阅读全文

posted @ 2017-02-27 15:24 ivancjw 阅读(127) 评论(0) 推荐(0)

[LeetCode 471] Encode String with Shortest Length
摘要:Trick: int r = (sub + sub).find(sub, 1); 寻找重复pattern。sub.size() % r == 0一定成立。否则设r是查找结果,总能找到更小的r满足条件。 阅读全文

posted @ 2017-02-26 15:51 ivancjw 阅读(816) 评论(0) 推荐(0)

{}语法问题
摘要:跟emplace一样,语法不统一。 阅读全文

posted @ 2017-02-25 16:05 ivancjw 阅读(151) 评论(0) 推荐(0)

[TC SRM 665 div1 lev1] LuckySum
摘要:这道题挺有意思,转化为图来做。顶点v = (carry, zero),其中carry表示是否有从右边一位进1,zero表示是否有其中一个lucky number进入前导0。 G存储从某个顶点通过某边(取某digit)可到达的下一个顶点;E存储某顶点可出去的所有边(即该位可取的digit)。 需要特别 阅读全文

posted @ 2017-02-19 21:31 ivancjw 阅读(235) 评论(0) 推荐(0)

[TC SRM 662 div1 lev1] FoxesOfTheRoundTable
摘要:转载:http://codeforces.com/blog/entry/19151 Note: 将问题转化为寻找hamiltonian回路问题。证明过程值得一看。 Suppose the heights are sorted: h[0] <= h[1] <= h[2] ... In one hand 阅读全文

posted @ 2017-02-18 15:39 ivancjw 阅读(136) 评论(0) 推荐(0)

带权最短路 Dijkstra, SPFA, Bellman-Ford, ASP, Floyd-Warshall 算法分析
摘要:转载:https://www.renfei.org/blog/weighted-shortest-path.html 图论中,用来求最短路的方法有很多,适用范围和时间复杂度也各不相同。 本文主要介绍的算法的代码主要来源如下: Dijkstra: Algorithms(《算法概论》)Sanjoy Da 阅读全文

posted @ 2017-02-15 22:26 ivancjw 阅读(706) 评论(0) 推荐(0)

[TC SRM 697 div1 lev1] DivisibleSetDiv1
摘要:Tutorial:https://apps.topcoder.com/wiki/display/tc/SRM+697#DivisibleSetDiv1 Note:证明过程值得一看。 主要内容:寻找[x1,x2,...,xn]使得满足bi * xi >= S - xi,其中S = x1 + x2 + 阅读全文

posted @ 2017-02-14 21:13 ivancjw 阅读(169) 评论(0) 推荐(0)

n个labeled顶点k棵树森林计数
摘要:n个labeled顶点构成包含k棵rooted树的森林,不同森林的个数为: C(n - 1, k - 1) * n ^ (n - k) 若指定了k个不同的root,则森林计数为: k * n ^ (n - k - 1) 证明: http://www.stat.berkeley.edu/~pitman 阅读全文

posted @ 2017-02-14 17:12 ivancjw 阅读(486) 评论(0) 推荐(1)

逻辑等价式
摘要:转载: http://star.aust.edu.cn/~xjfang/AiPrinciple/logical.html 逻辑等价式 常用逻辑蕴含式 阅读全文

posted @ 2017-02-14 12:43 ivancjw 阅读(4589) 评论(0) 推荐(0)

[LeetCode 493] Reverse Pairs
摘要:这道题可以用D&C或者BST做。在contest上看到一种bit manip解法,记录一下。 基本思想: 将a按lowbit减,b按lowbit加。 1. 若a >= b,则必在某点相遇(包括自身),且仅相遇一次; 2. 若a < b,永不相遇。 复杂度: 1. 期望时间复杂度是O(n),但是由于常 阅读全文

posted @ 2017-02-14 12:34 ivancjw 阅读(988) 评论(0) 推荐(0)

二分图的最大匹配、完美匹配和匈牙利算法
摘要:转载:http://www.renfei.org/blog/bipartite-matching.html 这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙 阅读全文

posted @ 2017-02-13 12:23 ivancjw 阅读(187) 评论(0) 推荐(0)

二分图最小顶点覆盖与最大匹配
摘要:二分图最小顶点覆盖等价于最大匹配,最大二分匹配问题可以使用匈牙利算法求解。 证明(lrj书): 比如最大匹配是M。为了求最少的点让每条边都至少和期中一个点关联。 (1)M个点是足够的。就是说他们覆盖最大匹配的那M条边后,假设有某边e没被覆盖,那么把e加入后会得到一个更大的匹配,出现矛盾。 (2)M个 阅读全文

posted @ 2017-02-13 11:54 ivancjw 阅读(985) 评论(0) 推荐(0)

[TC SRM 685 div1 lev1] MultiplicationTable2
摘要:转载: https://www.linkedin.com/pulse/topcoder-685-multiplicationtable2-yingwu-zhu Note: 生成封闭集合方式。 ProblemFox Ciel is creating a new binary operation.The 阅读全文

posted @ 2017-02-11 21:38 ivancjw 阅读(265) 评论(0) 推荐(0)

[TC SRM 708 div2 lev3] PalindromicSubseq2
摘要:1 #include 2 3 using namespace std; 4 5 typedef long long LL; 6 7 const int MOD = 1e9 + 7; 8 9 class PalindromicSubseq2 { 10 public: 11 int solve(string s) { 12 int n = s.si... 阅读全文

posted @ 2017-02-11 20:17 ivancjw 阅读(272) 评论(0) 推荐(0)

KMP预处理
摘要:1 vector calPrefix(string &p) { 2 int n = p.size(); 3 vector q(n + 1); 4 q[1] = 0; 5 int k = 0; 6 for (int i = 1; i 0 && p[i] != p[k]) k = q[k]; 8 if (p[i] == p[k]... 阅读全文

posted @ 2017-02-11 18:16 ivancjw 阅读(254) 评论(0) 推荐(0)

导航