摘要: //7983483 vrs 2227 Accepted 1120K 235MS C++ 2852B 2010-12-08 20:02:00//POJ 2227 凹凸坑装水 优先队列(堆)+floodfill(bfs)//黑书中的一道题 先分析边界点,弄为障碍物,把他们放到堆里,然后从最小的开始,进行一次floodfill(木桶原理)//一直循环直到堆为空,每次floodfill是使用队列做一次广搜#includestdio.h#includequeueusing namespace std;#define bool int#define MAXNUM 90005typedef stru 阅读全文
posted @ 2010-12-08 20:50 VRS 阅读(508) 评论(0) 推荐(0) 编辑
摘要: //7977992 vrs 1442 Accepted 516K 125MS C 1930B 2010-12-07 13:26:53//1142 黑盒数字 优先队列(大根堆+小根堆)//这题看了别人的解题报告才弄出来的,感觉这里两个堆操作很巧妙//维护两个优先队列,大根堆,小根堆,大根堆保存当前最小的i-1个数,并把i到u[p]个数放到小跟堆里,那么//小根堆的最小值就是当前状态的第i小元素//注意到一点,c不支持函数的按引用调用 &#includestdio.h#define bool int#define MAXNUM 30005long minqu[MAXNUM];long maxq 阅读全文
posted @ 2010-12-08 20:49 VRS 阅读(637) 评论(0) 推荐(0) 编辑
摘要: //7976667 vrs 3253 Accepted 228K 47MS C 1334B 2010-12-06 23:03:13//3253 锯木板 贪心+堆优先队列//遇到一个问题,变量声明要放在最前面,不然POJ编译不通过#includestdio.h#define bool int#define MAXNUM 20005unsigned int n;unsigned int wood[MAXNUM];void swap(int i,int j){ wood[0]=wood[i]; wood[i]=wood[j]; wood[j]=wood[0];}void Insert(unsi 阅读全文
posted @ 2010-12-08 20:48 VRS 阅读(428) 评论(0) 推荐(0) 编辑
摘要: //2365768 2010-12-06 16:41:01 Accepted 2724 C 280 1332 VRS//2724 模拟消息队列 用堆实现的优先队列//练堆的基础题#includestdio.h#includestring.h#define MAXNUM 60005#define bool inttypedef struct _MESSGAE{ char name[10]; int para; int key;}MESSAGE;MESSAGE process[MAXNUM];void swap(int x,int y){ strcpy(process[0]. 阅读全文
posted @ 2010-12-08 20:47 VRS 阅读(375) 评论(0) 推荐(0) 编辑
摘要: //2364907 2010-12-05 00:06:08 Accepted 1268 C 0 416 VRS//1268 Is it a Tree? 并查集//利用并查集,一直合并,直到输入结束//注意几点:1.空树也是树;2.森林不是树;3.重复输入会当成环,也不行;4.结点自身指向自身也算是环#includestdio.h#define bool int #define MAXNUM 32767int father[MAXNUM];int differentTreeNode[MAXNUM];int Find(int x){ if(father[x]==x) retur 阅读全文
posted @ 2010-12-08 20:46 VRS 阅读(217) 评论(0) 推荐(0) 编辑
摘要: //7968286 vrs 1182 Accepted 548K 219MS C 1078B 2010-12-04 21:33:24//1182 食物链 利用向量偏移的并查集////每个集合都有三类动物,用rank表示,0——同类;1——食物;2——天敌,初始时都以自己为根节点,且rank为0//只需对每一句话,判断x,y是否同一集合内,如果是就判断语句真假,否则就合并集合//根据公式知道x-y=d-1,主要想出几个推导公式://1: rank[x]=(rank[x]+rank[temp])%3 // 这个最好设一两个例子验证一下,由于每次都是两集合的根合并,且只有根更改rank,所以每个x的 阅读全文
posted @ 2010-12-08 20:46 VRS 阅读(497) 评论(0) 推荐(0) 编辑