- 博客(23)
- 收藏
- 关注
原创 概率DP小结
昨天从金华回来,成绩不理想,但是也没办法,自己的问题,想知道比赛详情的请戳http://bbs.whu.edu.cn/wForum/disparticle.php?boardName=ACM_ICPC&ID=1105535232&pos=11今年的比赛算是结束了,于是心想现在还是本着学习的态度,重新开始学习新的知识,于是想着就从DP开始吧。不知怎么地,搜到了一道概率DP的题目,就开始研究。
2012-10-30 19:10:51
462
原创 POJ 1149 最大流
最初读完这道题目之后,完全没有什么想法,也根本不会想到用最大流的做法。因为题目的条件似乎很多变:每个顾客打开自己的猪笼后,可以随时变换里面猪的数量,这个条件就给思考上带来了一定难度。后来到网上看了一下题解,才发现建图是关键。具体建图的思路和过程,详见:http://imlazy.ycool.com/post.2059102.html。只要你知道最大流是干什么的,这个题解肯定能够看懂。
2012-10-26 18:47:14
409
原创 Light OJ 1129 Trie树 动态建树
做了一道POJ 2001,对TRIE树的思想差不多理解了。其实TRIE树的思想很简单,就是建树,每个节点都有26个子节点(如果是数字的话,那就是10个),然后每个单词从头到尾按照树的深度找下去,最后所有这些单词就挂在TRIE树上啦。对于TRIE树的操作有:插入、删除、搜索等等。每个操作都很重要,删除如果没有的话在多组数据中就基本上要MLE了,这道题就是这样,一开始我没有做删除操作,ML
2012-10-23 19:30:11
541
原创 POJ 3164 最小树形图
看这个知识点纯属临时抱佛脚,毕竟每年PKU时不时会出些图论的偏知识点,大致了解一下思路也好。用到的是朱刘算法,具体过程网上都有,我就不赘述了。貌似这道题还是我们WHUACM前辈们出的?题干里好多熟悉的名字啊。要注意的是,初始化邻接矩阵的时候,和最小生成树一样,都要赋为Inf,否则最后求出来的值就成0了。#include#include#include#include
2012-10-23 16:21:42
360
原创 POJ 1679 最小生成树
题意很简单:给你一些点和边的关系,求最小生成树是否是唯一的,若不唯一,则输出最小生成树的长度。解题思路:在每次找到一条边之后,看这个新找到的点是否只从一个已经找过的点延伸过来,如果能找到两个以上的点,那么说明最小生成树不止一个,退出判断即可。但是我一开始在做这道题的时候,思路却是:找到一个新的点P后,从这个原来的点集P'中能否找到一个和新的距离相等的点Q。这个想法之所以错误,是因为
2012-10-23 00:26:29
598
原创 POJ 2531 经典的DFS
在8月份做过两遍这道题,做第一次的时候觉得这道题DFS的想法还挺新颖的。做第二次的时候,貌似就已经忘了思路了,这次在CAI的解题表格里又看到了这道题,出于练手的想法,就又做了一遍。题目大意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值。思路:1、把这两个集合标记为0和1,先默认所有点都在集合0里。 2
2012-10-22 13:33:43
5898
原创 POJ 3678 2-SAT
因为A和B的取值只有0,1,在运算里就可以用2-SAT来解决。建图过程如下:1) X AND Y=1,Add(I',J'),Add(J',I'),Add(I,I'),Add(J,J')2) X AND Y=0,Add(I',J),Add(J',I)3) X OR Y=1,Add(I,J'),Add(J,I')4) X OR Y=0,Add(I,J),Add(J,I),Add
2012-10-20 20:10:31
425
原创 SRM 555 DIV2 555
挺有意思的一道DP,题目大意是说,给你一个01构成的字符串,问你最少切几刀,能把切成的子串都分成5的某一次方,如果不存在,就输出-1。DP的思路:1、从左往右扫,如果扫到的这一位与之前所有数构成的子串是5的某次方,就记录f[i] = 1; 2、否则,再一重循环,找1~i中子串的数目。伪代码:
2012-10-20 02:30:11
362
原创 POJ 2723 2-SAT 第一题
2-SAT的第一题,话说两个月前就看过国家队的论文和PPT,不过当时因为没有好好搞过强连通分量,所以对2-SAT不是很理解。这次回过头来看,思路清晰了不少。2-SAT一般用在二选一的问题里面,比如说,当你选了a,就不能选b,那么你就可以在a到b'之前连一条边(或者a'到b)。然后2-SAT通过求强连通分量,最后可以得出,是否存在满足条件的选择(比如:使得a和a‘不能同时出现)。但是在做2-
2012-10-20 01:52:40
382
原创 Light OJ 1055 BFS
题目大意:给一个图,图上有A,B,C三个小人,每移动一次,都是对三个小人进行同时移动,如果碰到'#',或者其他人的时候就自动不走。思路:BFS求最短路,但是要同时记录三个人的状态,幸亏这道题的图只有10*10,3个人的状态也就10^6,不至于超内存,否则就要状态压缩了。在我的思路里,BFS的时候判断不走的条件是:没有碰到'#‘,或者超出边界。所以会出现碰到其他人继续走的情况,wa了两次。后
2012-10-16 00:47:39
552
原创 SRM 556 DIV2 解题报告
250:简单的字符串处理题目,因为最多只有50个字符,所以可以用O(n^2)的算法,对从每个位置开始的字符进行扫描,每次扫到了重复的字符即退出此次扫描,并比较长度是否最大即可。500:看起来很玄乎貌似不可做,但是用搜索既可以解决这个问题,搜索的时候注意要记录城市i,和经过城市i获得的利润的状态,避免重复搜索以至于死循环。搜索用BFS,开一个队列queue > q,初始状态为q.push
2012-10-15 15:25:30
544
原创 KMP算法中的NEXT数组的应用
KMP算法中的关键部分就是next数组,没有这个数组的维护,KMP算法根本没法实现。下面来简单讲一下他的用途,这两天会持续更新:1、求一个字符串中最长子串:(在保证这个字符串是由这些子串连续构成的情况下)比如说一个子串:abcabcabc,目测最长子串长度为3。在求next数组的时候,每个字符的值依次为:-1, 0, 0, 0, 1, 2, 3, 4, 5, 6。这时候你会发现
2012-10-13 01:11:31
849
原创 POJ 2185 KMP中next数组的应用
这道题一开始没明白意思,后来一查,是说给定一个字符矩阵,然后把能够构成这个字符矩阵的最小字符矩阵的字符个数给求出来。解法是KMP中next数组的应用,先对每一行进行get_next,求出他们的最小公倍数;再对每一列进行get_next,求出最小公倍数。这两步都很好想,然后r * c即可。坑爹的是,我wa了5、6次都是wa在get_next(char s*)这个函数上。教训就是,以后
2012-10-12 21:59:00
473
转载 <转>KMP算法中关于next数组的探究
转自:http://www.cnblogs.com/cxiaojia/archive/2011/09/16/kmp.html看了一天的KMP,其中最蛋疼的莫过于next数组的意思了,看了好多人的资料,包括matrix67大牛的博客,看了半天也没搞懂为什么要开个next数组,凑巧搜到这篇文章,讲得还比较清楚。原文如下:从《严书》上看到了KMP算法,看了一遍没懂,但觉得挺神
2012-10-11 02:26:21
532
原创 ZOJ 3362 无向图费用流
今天看了watashi的解题报告后,才发现不是模板错了,是自己对模板不熟,没仔细想题目。导致应该改模板的地方没有改……-_-!附上代码:#include#include#include#include#includeusing namespace std;const int maxn = 111;const int maxm = 55555;
2012-10-10 13:58:53
502
原创 Floyd算法的几个用法
1、求多个点之间的最短路,最广为人知的用法:for(int k = 0; k < n; k ++) for(int i = 0; i < n; i ++) for(int j = 0; j < n; j ++) if(a[i][j] > a[i][k] +a[k][j]) a[i][j] = a[i][k] + a[
2012-10-09 13:03:35
451
原创 ZOJ 3308 最小费用最大流
不管是最大流还是费用流,模板一般都不会出什么问题,一般错就错在建图……这也是一道裸的套费用流模板的题,不得不说,费用流代码量真是大,初始化什么的完成基本就快100行代码了。费用流的基本思想是多次最短路,所以在MCMF函数里会看到while(spfa(st, ed))这么个东西。先贴代码后分析:#include#include#include#includeusi
2012-10-08 20:44:38
606
原创 Hash (POJ 2785)
这两天看文章,看得手又痒了。于是提前开了自己挂的hash专题。因为在数据结构课上有学过,所以大致思路还记得。看了下网上的解法和细节上的东西,差不多就能写一些简单题了。这题用的是线性探测除法散列法,要注意的是key = (num % mod + mod) % mod。前面的%mod是为了防止出现比mod大的数,再加mod是为了解决负数的问题。这题其实也可以用n^2+二分,但是题目给的内存很大
2012-10-04 23:18:26
749
2
原创 Light OJ 1303——Basic Data Structure
调了一下午的水题,一开始是题目读错了……然后把queue直接用数组模拟,调了好久还是不对,直到前面才发现是pos = check(w, l, r) == -1出错了,==是先执行的,这样的话pos就被赋为0或1了,这样子就必然杯具。最后加个括号即可。在调的时候我始终都不知道算法哪里错了……从注释的长度就可以看出来了,弱爆了Code:#include#include#in
2012-10-03 18:16:25
581
原创 操作系统——进程间通信Peterson解法代码简析
Peterson解法解决的是进程中竞争的问题,比如:有两个进程——进程0、进程1要读取共享内存中的数据,假设他们几乎同时进入了共享内存中,那么就会造成一定的问题。代码如下:#define N 2 //进程数为2int turn; //现在轮到哪个进程?int interested[N]; //初始化置为false,即没有在临界区等待读写共享数据的void enter_
2012-10-02 23:37:23
2256
原创 About面试的种种
这学期管了两个俱乐部技术方面的事情。距离招新过去也快两三周了,有面过技术的,也有面过常务的。从各式各样小孩的表现来看,还是有些话想写一下,提醒作为面试官的自己,也给今后将要面对各种面试的我一个启发。As an interviewer:技术:我面技术组的想法就是,要么招有基础,想在技术上继续好好干下去的孩子;要么招在思维上很有天赋的孩子,毕竟大学前有实际编程基础的学生不多。所以对
2012-10-02 00:23:32
862
4
原创 操作系统——进程9问
买了本《现代操作系统》,前面的介绍部分直接略过,在回家的路上直接从进程开始看。对并发、多道程序设计有了初步的了解,在此将心得稍微写一下。1、什么是进程?进程是正在运行程序的一个实例,可以把他比作计算机正在做的某一件事情。2、什么是并发?在单核CPU中,实现真正的并发是不可能的,因为在一个时间片里,CPU只能运行一个进程。就好比,你不可能同时做饭,同时看书。那么所谓的
2012-10-01 23:24:47
467
原创 基于社交网站的社会学理论学习
这两天在看教主的Paper,前两天看了介绍性的第1-3部分,今天看第四部分,模模糊糊的不知所云,干脆把前面三部分又看了一遍,总算把思路理了一下。教主论文要解决的三个问题是:1、形成不同结构社交网站的因素有哪些;2、如何设计出一个形式化这个问题的通用框架;3、在社交网站规模增大时,如何扩大算法的规模;再介绍一下社会学中的一些理论:1、社会平衡理论:
2012-10-01 22:32:13
1303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人