对并查集的深入理解 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 30, 2008 对并查集的理解:1、树的深度最多是22、一般set结构体都需要有一个rank[]来记录有多少孩子,孩子多的,以后还是父亲3、并查集:不相交集合,这个概念一定得搞清楚! 欢迎拍砖! 获取链接 Facebook X Pinterest 电子邮件 其他应用 评论 wanghaishanren2012年2月10日 17:56理解的不是很深,但还是要顶一下!回复删除回复回复添加评论加载更多... 发表评论
提交了30次才AC ---【附】POJ 2488解题报告 五月 08, 2008 NND,这道题目,竟然提交了30次,搞的我晕过去了都!花费了将近12个小时!! 感一下,叹一声!如今的ACM,不仅锻炼编程,还锻炼了心理承受能力!! 1、注意格式,后面有一个空行 2、注意输出的时候的字典序--什么叫字典序,要弄清楚 3、注意国际象棋的棋盘-- 横的是字母,竖的是数字-- 一定要按照这个格式,否则即使是答案对,也WA 有26次,全部栽在第3点上 3次栽在第二点上 1次栽在第一点上 PS:因为是字典序,所以,可以肯定只需要从(1,1)开始即可。不需要注意那句话:start at any position of the chessboard. Source Code Problem: 2488 User: omycle Memory: 192K Time: 360MS Language: C++ Result: Accepted Source Code #include <iostream> #include <string> using namespace std ; bool ok = false ; int col = 0 ; int row = 0 ; int zoufa [ 8 ][ 2 ]= {{ - 2 ,- 1 } , { - 2 , 1 } , { - 1 ,- 2 } , { - 1 , 2 } , { 1 ,- 2 } , { 1 , 2 } , { 2 ,- 1 } , { 2 , 1 }} ; // int flag [ 50 ][ 50 ]; //第0行的,第零列的全不要 typedef struct { int x ; int y ; } Step ; Step step [ 100 ]; //记录路径呀 Step step_c [ 100 ]; int Count = 0 ; void print ( int n ); //数组比较函数 bool cmpint () { int i = 0 ; while ( i < col * row ) { if ( step_c [ i ]. x < step [ i ]. x ) return false ; //不用 if ( step_c [ i ]. y < step [ i ]... 阅读全文
n个进程共享m个资源得死锁问题证明 六月 09, 2008 n个进程共享M个资源,每个进程一次只能申请/释放一个资源,每个进程最多需要M个资源,所有进程总共的资源需求少于M+N个,证明该系统此时不会产生死锁。 答:设max (i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。由题中所给条件可知: max(1)+┅+max(n)=(need(1)+┅+need(n))+((alloc(1)+┅+alloc(n))<m+n 如果在这个系统中发生了死锁,那么一方面m个资源应该全部分配出去, alloc(1)+ ┅+alloc(n)=m 另一方面所有进程将陷入无限等待状态。可以推出 need(1)+ ┅+need(n)<n 上式表示死锁发生后,n个进程还需要的资源量之和小于n, 这意味着此刻至少存在一个进程i,need(i)=0 ,即它已获得了所需要的全部资源。既然该进程已获得了它所需要的全部资源,那么它就能执行完成并释放它占有的资源,这与前面的假设矛盾,从而证明在这个系统中不可能发生死锁。 阅读全文
理解的不是很深,但还是要顶一下!
回复删除