题意:给出n个点和m条有向边(有向边!!!!我还以为是无向查了半天),然后给出K个点,问这k个点中最近的两点的距离 思路:比赛时以为有询问,就直接丢了,然后这题感觉思路很棒,加入把所有点分成起点和终点两部分,然后加个S点和T点与他们 的距离为0,然后跑最短路就可以了,但是这样有可能最近的两个点都在起点或者都在终点,那么就不一定是最短的,所以就有个二进制分组. 考虑每个点的编号的二进制表示,那么对于任何两个点,他们至少有一位二进制不同,那么我们通过枚举二进制的位,当前位为1的作为起点集合, 当前位…
Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday. The task is simple : ZKC will give Pan a directed graph every time, and selects some nodes from that graph, you can calculate the mini…
http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意: 给出一张无向图,给定k个特殊点 求这k个特殊点两两之间的最短路 二进制分组 枚举一位二进制位 这一位为1的放到起点集合 这一位为0的放到终点集合 跑一遍两个集合间的最短路 因为是有向图,反过来再跑一遍 正确性分析: 设最优解是x和y间的最短路 若x和y被分在了两个不同的集合,那么两个集合的最短路就是x和y的最短路 而任意两个点至少有一位二进制不同 所以一定会有x和y分在两个不同集合的时候 #in…
学长好久之前讲的,本来好久好久之前就要写题解的,一直都没写,懒死_(:з」∠)_ Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1332    Accepted Submission(s): 533 Problem Description Senior Pan fails in his discrete ma…
题目链接 Problem Description Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday.The task is simple : ZKC will give Pan a directed graph every time, and selects some nodes from that graph, yo…
题意 给出一个\(n\)个点\(m\)条边的有向图\((n,m<=100000)\),从中选择\(k\)个点\((k<=n)\),问这k个点两两之间的最短路最小值是多少? 思路 直接的想法是对于每个点求一遍最短路,这样一共要跑n次最短路,时间复杂度\(O(nmlogm)\). 考虑两个点集\(S1\)和\(S2\)之间的最短路,我们可以跑一次最短路求出来. 具体可以新建虚拟源点\(s\)和虚拟汇点\(t\),\(s\)和\(S1\)的每个点之间连一条零边,\(t\)同理. 那么这一次最短路就相…
Senior Pan Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem DescriptionSenior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday.The task is simple :…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意:给你一个有向图,然后给你k个点,求其中一个点到另一个点的距离的最小值. 解法:枚举二进制位按照标号当前位为1 和当前位为0分为两个集合,每次求解两个集合之间的最短路即可覆盖到所有的点对.时间复杂度20*dijstla时间,这样做的正确性在哪?显然我们需要的答案至少有一个二进制位不同,那么这样求解肯定可以找到正确答案,事实上还可以随机分组emmmm... #include <bits/st…
题意:n个点,m条有向边,指定k个点,问你其中最近的两点距离为多少 思路:这题的思路很巧妙,如果我们直接枚举两点做最短路那就要做C(k,2)次.但是我们换个思路,我们把k个点按照二进制每一位的0和1分类logn次,然后做集合最短距离.因为任意两个不等的数,总有一位不一样,所以每个点都有机会和其他点在不同集合.那么这样就花了logn次枚举了所有情况.集合最短距离可以指定一个超级源点和超级汇点,然后做两点最短路. 代码: #include<cmath> #include<set> #i…
Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Problem Description Senior Pan had just failed in his math exam, and he can only prepare to make up for it. So he began a daily task with Master Dong, D…