摘要: dp[k][x][y]表示第k步的时候女孩走到x行、y列的概率;一步一步的递推就可以了。需要注意的地方是算完第i步相遇的概率后需要将dp[i][(n+1)/2][i]清零才能算后面相遇的概率,若不清零会对求第i+1步相遇的概率产生影响,即——第i步相遇了,第i+1步还相遇,出现不应有的概率叠加。#include <iostream>#include <cstdio>#include <string>#include <vector>#include <cstring>#include <utility>#include & 阅读全文
posted @ 2012-09-25 10:08 fCarver7 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 最小权匹配:#include <iostream>#include <cstdio>#include <cstring>usingnamespace std;constint N =210;constint M =30100;constint inf =0x1fffffff;int n, m, tot, lx[N], ly[N], match[N], h[N], v[M], w[M], nxt[M];bool visx[N], visy[N];int lack;void add(int a, int b, int c){ v[tot] = b; w[tot] 阅读全文
posted @ 2012-09-23 20:06 fCarver7 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 以前做过的题目,现在整理了一下,去掉了和具体题目相关的细节,并加上了一些注释,方便使用吧。#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int N = 1010;int n; //原图中共有2*n个相对的节点。int ct, depth, top, index[N<<1], d[N<<1], low[N<<1], 阅读全文
posted @ 2012-09-23 19:59 fCarver7 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 喜欢dinic算法,清晰,简洁,高效,优雅。uva820.#include <iostream>#include <cstdio>#include <string>#include <vector>#include <cstring>#include <utility>#include <algorithm>using namespace std;const int Maxn = 105;const int Maxm = 30005;const int inf = 0x1fffffff;int n, m, s, 阅读全文
posted @ 2012-09-23 19:35 fCarver7 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 后缀数组排序的思想很容易理解,代码也被大牛没极度精简了~~有时间可以好好看一下其中各种优化的细节。而后缀数组的应用多与其中的height数组相关,所以对height数组性质的把握和理解是至关重要的,网上大部分代码没有很好的注释,这里给出一个注释版的。#include <cstdio>#include <string>#include <vector>#include <cstring>#include <utility>#include <algorithm>using namespace std;const int MA 阅读全文
posted @ 2012-09-21 22:20 fCarver7 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 这题目是去年大连regional的题目,当时比赛的时候已经看出是道自动机+dp的题目了,但是无奈当时自己的自动机基础太弱了,被虐了一顿。今天再来做这道题目,感觉还好,思路还是蛮清晰的,但是却看出了长时间写代码少代码能力的不足。。。一个<=写成了<然后昨天WA了一晚上。。。这题和传统的自动机+dp差不多,主要区别在于每个带权基因串只计算一次,需要用状态压缩(字符串个数最大只有10个)。dp[l][n][state]表示长度为l的字符串,后缀为自动机中第n类状态(自动机中每个节点代表一类状态),是否可取道带权基因串组合状态为state的情况;如果可以dp[l][n][state]为tr 阅读全文
posted @ 2012-09-20 22:04 fCarver7 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 重新做了下hdu2222,结果WA。。后来发现加数据了,有重复单词,感觉这种做法真无聊。贴下模版部分:struct node { int ct; node *pre, *next[26]; void init() { ct = 0; pre = 0; memset(next, 0, sizeof(next)); }};int cnt; //节点总数node *root, trie[500010];node *queue[500010];void insertStr(node *root, char *str) { int ... 阅读全文
posted @ 2012-09-20 16:03 fCarver7 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 不了解分数规划的先看看论文吧,胡伯涛的那篇。分数规划我自己也看得晕晕的,特别是对于最大化目标函数的那种。论文中讨论的是最小化目标函数,证明也比较容易明白;但最后说对于g(r)单调性的结论对于最大化目标函数的问题同样成立,这一点我是百思不得其解;如果哪位大牛可以严格证明该结论的话希望回复帮我解答。简单总结一下解分数规划的一般步骤吧:1. 对于最小化目标函数r = ax/bx,则构造函数g(r)=min{ax - r*bx} 对于最大化目标函数r = ax/bx,则构造函数g(r)=max{ax - r*bx}2. 由各种大科学家大神们证明得结论T_T: (1)g(r)是单调减函数(有些离散情.. 阅读全文
posted @ 2012-09-15 20:50 fCarver7 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 被unity折磨死了,gnome2又不能完全回复,那个小活动面板太难用了,而且代码提示背景是一片白色啊。。。然后很无奈的换成了xfce4->xubuntu,结果发现这界面长的太粗糙了,和xp的最接性能的样子基本一样。最后走上了kde,感觉蛮舒服的,在这里记录一下。安装:有两个版本,一个是standard,一个是full,我安的是full的。sudo apt-get install kde-full但是安装之后语言默认是英文,需要安装中文语言包,安装过程如下:sudo apt-get install language-pack-kde-zh-hant language-pack-kde-z 阅读全文
posted @ 2012-09-15 09:38 fCarver7 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 本题为《算法导论》动态规划一章中思考题的第一题。原题目中假设任意两点的x坐标均不同,hdu2224中并没有说明,但后台数据应该是没有x坐标重复点的。这道题目,网上写解法的文章很多,但是很多都写得很乱,有些甚至是错误的。在这里我想好好澄清一下O(n^2)的解法及其原理,希望能起到抛砖引玉的作用。原题大意:平面n个不同的点(假设任意两点x坐标不同),旅程从最左点开始,严格地从左到右直至最右点,然后严格地从右到左至最左点。求最短双调路线。解法:(1)对n个点按x坐标排序,我们用dp[i][j]表示其中一条路径走到i点,另一条路径走到j点(且i和j并不相连);则dp[i][j]==dp[j][i](想 阅读全文
posted @ 2012-09-11 10:27 fCarver7 阅读(408) 评论(1) 推荐(0) 编辑