【HDU 3938】Portal (并查集+离线)
http://acm.hdu.edu.cn/showproblem.php?pid=3938
两点之间建立传送门需要的能量为他们之间所有路径里最小的T,一条路径的T为该路径上最长的边的长度。现在 Q 个询问,问 L 能量可以选择多少种不同点对?
因为小的能量找出的点对,在大的能量下肯定也能建立传送门,因此把询问记下来,按询问的能量从小到大计算,这样离线处理。
从小到大枚举添加每条能量不超过当前能量且还没枚举过的边,
如果它连接的两个点属于不同联通块,就加上这条边。
能选择的点对就有两个联通块的点数之积那么多种。
#include <algorithm>
#include <cstdio>
#include <cstring>
#define ll long long
using namespace std;
#define N 10005
struct edge{
int u,v,w;
}e[N*5];
int cmp0(edge a, edge b){
return a.w<b.w;
}
struct question{
int id,v,ans;
}q[N];
int cmp(question a,question b){
return a.v<b.v;
}
int cmp2(question a, question b){
return a.id<b.id;
}
int n,m,Q;
int fa[N],num[N];
int find(int v){
int k,j,fv=v;
while(fv!=fa[fv])
fv=fa[fv];
k=v;
while(k!=fv){
j=fa[k];
fa[k]=fv;
k=j;
}
return fv;
}
void init(){
for(int i=1;i<=n;i++)
fa[i]=i,num[i]=1;
}
int main() {
while(~scanf("%d%d%d",&n,&m,&Q)){
init(); for(int i=1;i<=m;i++)
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
sort(e+1,e+1+m,cmp0);
for(int i=1;i<=Q;i++){
scanf("%d",&q[i].v);
q[i].id=i;
q[i].ans=0;
}
sort(q+1,q+1+Q,cmp);
int l=1;
for(int i=1;i<=Q;i++){
q[i].ans=q[i-1].ans;
for(;l<=m&&e[l].w<=q[i].v;l++){
int fu=find(e[l].u),fv=find(e[l].v);
if(fu!=fv){
fa[fv]=fu;
q[i].ans+=num[fu]*num[fv];
num[fu]+=num[fv];
}
}
}
sort(q+1,q+1+Q,cmp2);
for(int i=1;i<=Q;i++)
printf("%d\n",q[i].ans);
}
return 0;
}
【HDU 3938】Portal (并查集+离线)的更多相关文章
- ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线
hdu 1811 Rank of Tetris Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & % ...
- BZOJ5188: [Usaco2018 Jan]MooTube 并查集+离线处理
BZOJ又不给题面... Luogu的翻译看不下去... 题意简述 有一个$n$个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权 给你$Q$个询问,问你与点$v$的距离超过$k ...
- poj 2528 Mayor's posters 线段树 || 并查集 离线处理
题目链接 题意 用不同颜色的线段覆盖数轴,问最终数轴上有多少种颜色? 注:只有最上面的线段能够被看到:即,如果有一条线段被其他的线段给完全覆盖住,则这个颜色是看不到的. 法一:线段树 按题意按顺序模拟 ...
- ACM学习历程—SNNUOJ 1110 传输网络((并查集 && 离线) || (线段树 && 时间戳))(2015陕西省大学生程序设计竞赛D题)
Description Byteland国家的网络单向传输系统可以被看成是以首都 Bytetown为中心的有向树,一开始只有Bytetown建有基站,所有其他城市的信号都是从Bytetown传输过来的 ...
- HDU 3938:Portal(并查集+离线处理)
http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Problem Description ZLGG found a magic theor ...
- hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10
搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1 ...
- zoj3261 并查集离线处理
Connections in Galaxy War Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%lld & ...
- HDU 2818 (矢量并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2818 题目大意:每次指定一块砖头,移动砖头所在堆到另一堆.查询指定砖头下面有几块砖头. 解题思路: ...
- BZOJ-1015 StarWar星球大战 并查集+离线处理
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Submit: 4105 Solved: 1826 [Submit ...
- 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...
随机推荐
- [No000048]程序员的成长过程中,有哪些阶段?
有人在 Quora 提问,并补充: 有木有朋友能根据你们自身经历,清晰地划分各个阶段?比如:学习第一门编程语言.第一份工作.职业决策.理解 IT 公司的目标,等等. Quincy Larson 的回复 ...
- hashmap先按照value从大到小排序,value相等时按照key从小到大排序
hashmap先按照value从大到小排序,value相等时按照key从小到大排序. [2]是从小到大排序,在[2]代码基础上交换o1,o2位置即可. 代码中用到[1]中提到的在value相等时再比较 ...
- oracle round 函数,replace()函数
(1)如何使用 Oracle Round 函数 (四舍五入)描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果.SELECT ROUND( number, [ decimal_ ...
- HTML 学习笔记 JavaScript (实现)
HTML中的脚本 必须位于<script></script>标签之间 脚本可被放置在HTML页面的<body>和<head>部分中 <script ...
- Meet Github
Source: http://www.liaoxuefeng.com/ Here only the local part. Install on windows download: https://g ...
- Windows Server 2008 R2中的ASP.NET环境架设
.NET Framework的部分功能在Windows Server 2008 R2得到支持,包括:.NET 2/3/3.5的子集和ASP.NET.另外,PowerShell也在Server Core ...
- LINQ 常见用法
以下数据源都假设为data 1.获取某列的不重复数据 List<int> ids = data.Select(t => t.ID).Distinct().ToList(); 2.对 ...
- 恢复Reflector反编译后资源文件的办法
反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选 ...
- mysql ERROR 1045 (28000): Access denied for user解决方法
一 这种情况下是 root@% update mysql.user set host='%' where user='root' and host='localhost'; flush privile ...
- 2013级软件工程GitHub账号信息
GitHub账号信息 序号 班级 学号 姓名 个人GitHub网址 1 信1301-1班 20122951 刘伟 https://github.com/weige8882 2 信1301-1班 201 ...