- 博客(8)
- 收藏
- 关注
原创 POJ1456 Supermarket
小贪心,暴力过得,我自己都没想到……还以为要用并查集优化呢 #include #include #include #include #include #include using namespace std; #define N 10010 struct data { int d, v; }a[N]; bool f[N]; int cmp(data a, data b) { re
2012-12-31 22:54:12 304
原创 POJ1308 Is It A Tree?
题目链接:http://poj.org/problem?id=1308 大意就是给一些点的指向关系,最后问能否组成一棵树。 用并查集写了,每次给的两个点不在相同集合,就合并,合并一次相当于多增加了一条边,所以在合并的时候记录一下边数,如果合并过程中出现了环,那么说明不是一棵树,如果之后点数与边数加一不相等,也不是一棵树,所以需要记录点的个数,我用的是string类,每次find一下,最后求st
2012-12-31 05:19:56 490
原创 POJ1988 Cube Stacking
题目链接:http://poj.org/problem?id=1988 这道题当指令是M的时候,就是并查集的合并工作了,C的时候自然就是查找,但是麻烦就是怎么去弄明白那个x下面到底有多少个元素,而且它是整列整列的弄的,所以需要找个东西标记一下。 用一个域u标记元素x的上面有多少个元素,用一个域d标记元素x的下面有多少个元素,合并的时候只要更新这两个域内的值就行了,那么对于每一个查找指令,答案就
2012-12-31 00:59:22 323
原创 POJ2236 Wireless Network
首先看到了给坐标的,我突然间一下子就蒙圈了,难道说我要用勾股定理去算出一个双精度距离?我的天前段时间被双精度坑出翔了的事儿我还记得,这次用双精度,我这不就是要找死吗?不过还好,后来想到了直接一个布尔表达式判断拉倒了…… 首先,所有的电脑的坐标全都给记下来,然后开始了指令的执行,再执行指令的时候,把所有能连接上的电脑合并到一个集合里面,然后需要检查两台电脑是否能够连接的时候,直接检查两个电脑是不是
2012-12-30 23:23:29 370
原创 POJ1861 Network
这道题实际上就是一个裸的最小生成树,联系到我最近写并查集写得非常之火热,所以果断的就用了kruskal这个算法…… 题目链接http://poj.org/problem?id=1861 AC代码 #include #include #include #include #include #include using namespace std; #define M 30010 #d
2012-12-30 00:54:40 439
原创 POJ2524 Ubiquitous Religions
直接合并,合并完以后看一共存在几个集合,我再查有几个集合的时候有点儿蛋疼捉急,哪位大神有好方法告诉一下哈~ #include #include #include #include #include #include using namespace std; #define N 50010 int p[N]; int find(int x) { return p[x] != x ?
2012-12-29 23:09:09 379
原创 POJ1182食物链
这道题是我学数据结构开始敲的第一道题,并查集,留作存目。这道题体现了一些问题,是我不知道的,也是我犯二了,竟然没想到过用类似于边权的东东来表示并查集中各个元素之间的关系的区别,不过还好了,现在转过来这个弯儿了。 这道题,所有的物种之间有三个关系,平等,吃与被吃,那么这三个关系可以分别用0,1,2来表示,如果遇到的两个生物从来没有处理过,或者说有一个没有处理过,那么这句话一定是跟前面的所有真话没有
2012-12-27 23:19:23 352
原创 传说中的启航杯决赛
<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> 世界是怎么对待一个普通人的?就是让人跪了再跪。 话说,不知道怎么的,我就进了启航杯的决赛,结果可想而知,被跪得各种悲剧…… 上场第一题,小排序,无悬念,3分钟1Y。 然后看第二题,我靠,没看懂,回问题区神游,看到了最后一道题,题目非常振奋人心——n!,但是我一
2012-12-01 21:57:25 521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人