poj 2349 求MST中第S大的权值】的更多相关文章

题目大意: 有一些炮台,如果这个炮台有卫星接收器,那么任意两个有卫星接收器的炮台可以通信,不受距离限制:否者,两个炮台之间只能通过对讲机通信,这是受距离限制的.要买一种对讲机,用在需要的炮台上,要求所有炮台两两之间可以直接或者间接通信,问要买通信距离D至少为多少的对讲机可以满足要求. 有S个卫星接收器,那么就可以减少S-1个距离开销.要让D尽可能小,就让这S-1个距离开销最大,所以,想法就是,求这些点的最小生成树,然后把所选的边排序,第S大的边的权值就是所求.假如有4个点,2个卫星,那么最长的那…
原创 利用到快速排序的思想,快速排序思想:https://www.cnblogs.com/chiweiming/p/9188984.html array代表存放数列的数组,K代表第K大的数,mid代表一趟快速排序后返回的基准记录下标: 一趟快速排序下来若基准记录存在的位置满足:array.length-mid==K,则说明array[mid]即是第 K大的数,若小于K,说明第K大的数在区间 [ left , mid-1 ],大于K说明在区间 [ mid+1,right ]: import jav…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1914 http://poj.org/problem?id=2349 题目大意,给定一些点的坐标,求MST,然后要求求去掉最大的k条边后,最大的边 直接Prim,然后在排序即可. 小技巧是一开始不求平方根,最后输出的时候在求出平方根即可. ZOJ上排行第三,不过在POJ就被虐了... #include<cstdio> #include<cmath> #incl…
题目链接:https://vjudge.net/problem/POJ-2349 题意: 题目就是要我们找到一个最小的值D,把图里面所有大于D的边去掉之后剩余的连通分支的数量为S.这个就是找这个图里面最小生成树的第S大的边(也就是第n-S小的边),我们可以依照求最小生成树的过程来,首先对于每一个单点,我们把它看成一个点集,这样一开始我们有n个点集,然后我们找一条距离最小的边,合并边连接的两个点集,这样集合总数就变成了n-1个,假设我们要找一个最小的D,去掉大于D的边,使得连通分支数位n-1,那么…
给出结点的坐标 以及已建好的边 要输出MST中加入的边(已建好的边就不用输出了)结点的编号从1开始注意这题只有一组数据 不能用多组输入 否则就超时(在这被坑惨了Orz) Sample Input 91 50 0 3 24 55 10 45 21 25 331 39 71 2Sample Output 1 63 74 95 78 3 # include <iostream> # include <cstdio> # include <cstring> # include…
给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么 只有询问,没有修改 可以用归并树和划分树(我都没学过..囧) 我是专门冲着弄主席树来的 对主席树的建树方式有点了解了,不过这题为什么是在主席树里面这么操作的 还是有点不懂,今天照着模板敲了一遍就打多校了 再研究吧 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using name…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Input 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p.最后一行是两个数 s,t;起点s,终点.n和m为0时输入结束.(1<n…
两种解法.当中一种是用单调栈. 我想到的是第二种:最大的矩形,中间一定有个最矮的某个单位矩形.所以求出每一个包括矩形histogram[i]的最大矩形的面积.输出这些面积中最大那个就可以. key:用两个数组记录histogram[i]左右两边第一个比它小的单位矩形的序号leftLowerId[i]和rightLowerId[i].那么对于histogram[i],它自己的最大矩形面积就是(rightLowerId[i] - leftLowerId[i] - 1) *  histogram[i]…
/** * 找出数组中数第二大的值 * @param array * @date 2016-9-25 * @author shaobn */ public static void getMethod_5(int[] array){ int temp = 0; int len = array.length; for(int i=0;i<len;i++){ if(i==len-1){ break; } for(int j = i+1;j<len;j++){ if(array[i]>=arra…
Sample Input 3aaa12aabaabaabaab0Sample Output Test case #12 23 3 Test case #22 2 //aa有2个a6 2 //aabaab有2个aab9 312 4 0  1  2 3 4 5 6 7 8 9 10 11 a  a b a a b  a a b a a b     的next数组为-1 0 1 0 1 2 3 4 5 6 7 8 9 #include<stdio.h> #include<iostream>…