2013年8月28日

LA 3027 合作网络 并查集

摘要: 题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1028比较简单,用数组d[i]表示结点i和祖先结点的距离,查询时压缩路径并更新d[]数组。刘汝佳大白书(P193):贴代码: 1 #include 2 #include 3 const int N = 20004; 4 int pa[N],d[N]; 5 int findset(int x) 6 { 7 if(pa[x] == -1) return x; 阅读全文

posted @ 2013-08-28 19:26 allh123 阅读(197) 评论(0) 推荐(0) 编辑

LA 3644 易爆物 并查集

摘要: 题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645题意:有一些化合物,每种化合物中含有两种元素,如果有k种化合物含有K种元素就会爆炸,现在装车司机按照输入顺序一件一件的装,遇到加入后会爆炸的化合物就不装,问会有多少化合物不能被装入。解法:将每种元素看成一个顶点,一个化合物含有两种元素就是一条边,构图完成后,出现环就意味着爆炸,所以用并查集,像Kruskal算法一样为同一连通分量的为同一个父节点,加入 阅读全文

posted @ 2013-08-28 16:32 allh123 阅读(255) 评论(0) 推荐(0) 编辑

UVA 11997 STL 优先队列

摘要: 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3148题意:给K个数组,每个数组含有K个整数,从每个数组中各选一个数加起来,得到一个sum,这样的选法一共有K^k种,现在求这样的和中最小的K个sum.解法:先考虑两个数组的情形假设A1,第一个数为和,第二个数为B的序号,放入优先队列,然后从优先队列中弹出最小的,这个最小值一定是所有和中最小的,同时压入A[a] + B[b+1],A[a]+B[b+1] = s-B[b]+ 阅读全文

posted @ 2013-08-28 16:01 allh123 阅读(206) 评论(0) 推荐(0) 编辑

导航