hdu 3938 Portal (prim+离线)】的更多相关文章

Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2027    Accepted Submission(s): 998 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This impor…
Problem - 3938 题意是要求出给定权值下,满足要求的点对的数目.所谓的要求是,给出两点,之间会有很多路径,这个点对的最小距离是众多路径中,最短的一条路径的长度,路径长度是路径上最长边的长度.于是,认真观察可以发现,两个点能连在一起的前提条件是,之间的的边都小于给定值.于是,用边来构建最小生成树就可以得到这样的一些满足要求的点对了.如果是两个集合因为一条边的加入连在一起了,那么总的点对数目就增加Na*Nb.把答案存下来,然后查询的时候二分找出满足的那一个即可. 代码如下: #inclu…
搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1. 这条边这两点间某条路径上的最长边:2. 这条边是这两点间所有路径上的最长边中的最短边. 简单来说,假如a到d有两条路径,一条经过b,一条经过d,其中ab = 1, bd = 3, ac = 2, cd = 2,那么abd上的最长边为3,acd上的最长边为2,则ad的距离为2. 如果a, d两点间…
Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 931    Accepted Submission(s): 466 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This import…
Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1312    Accepted Submission(s): 656 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This impo…
http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Problem Description   ZLGG found a magic theory that the bigger banana the bigger banana peel .This important theory can help him make a portal in our universal. Unfortunately, making a pair of po…
HDU 3938 题目大意:给你一个长度为n的数组a,定义区间[l,r]的val为区间内所有不同的数值之和.现在有m个询问,每次询问一个区间,问区间的val是多少. 思路:将所有的询问按照右端点排序.然后暴力枚举右区间,然后对之前出现过的val做一个标记即可,每次都更新这个标记就好了. 具体的和HDU 5869一样,只不过5869还要预处理,比较难 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using…
http://acm.hdu.edu.cn/showproblem.php?pid=3938 两点之间建立传送门需要的能量为他们之间所有路径里最小的T,一条路径的T为该路径上最长的边的长度.现在 Q 个询问,问 L 能量可以选择多少种不同点对? 因为小的能量找出的点对,在大的能量下肯定也能建立传送门,因此把询问记下来,按询问的能量从小到大计算,这样离线处理. 从小到大枚举添加每条能量不超过当前能量且还没枚举过的边, 如果它连接的两个点属于不同联通块,就加上这条边. 能选择的点对就有两个联通块的点…
题意:在一张无向图上,已知边权,做q组询问,问小于L的点对共有几组.点对间的距离取=min(两点之间每一条通路上的最大值). 分析:这里取最大值的最小值,常用到二分.而这里利用离线算法,先对边从小到大排序,逐一加入集合中.利用并查集,当两点之间不在同一个集合,那么所加入的边就是两个集合中任一点对的距离(两集合各取一点).所以有cnt2+=num[fu]*num[fv]; 注意:有些询问比m条边中的最小边还小,比最大边还大. #include<cstdio> #include<cstrin…
题目大意:给你n个点,m条边,q个询问,每条边有一个val,每次询问也询问一个val,定义:这样条件的两个点(u,v),使得u->v的的价值就是所有的通路中的的最长的边最短.问满足这样的点对有几个. 思路:我们先将询问和边全部都按照val排序,然后我们知道,并查集是可以用来划分集合的,所以我们就用并查集来维护每一个集合就行了. //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using namespac…