HDU 4750

时间:2022-09-28 17:51:54

解题方法,,,首先应该可以看出来是一颗 最小生成树,任意一条的边的价值是不同的;所以计算出最小生成树的每一条边有多少对顶点满足他的 f 值就是这条边的 权值,因此可以在生成最小生成树的时候,进行一下统计,每加入一条边,就统计一下,得到 f 值和这条边权值相同有多少对顶点;方法是  记录一个 rank 数组,记录每个分支里面有多少个顶点,合并的时候,以为 是按照权值从小大大放入的,所以结果是 rank[a]*ran[b]*2;

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; struct date{
int
u,v,w;
bool
operator < ( const date &a )const{
return
a.w > w;
}
}
edge[];
int
N,M,Q;
int
f[];__int64 rank[];
int
find( int x ){
if
( x != f[x] )return f[x] = find( f[x] );
return
x;
}

int
res[]; __int64 num[];
int
search( int lt,int rt,int key )
{

if
( rt - lt < )
{

for
( int i = lt; i <= rt; i++ )
if
( res[i] >= key )return i;
return
rt+;
}

int
mid = ( lt + rt )>>;
if
( key > res[mid] )
return
search( mid,rt,key );
else return
search( lt,mid,key );
}

int
main( )
{

int
u,v,w;
while
( scanf("%d%d",&N,&M) != EOF )
{

for
( __int64 i =; i <= M; i++ ){
scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w);
}
sort( &edge[],&edge[]+M );
for
( int i =; i <= N; i++ )f[i] = i;
for
( int i =; i <= N; i++ )rank[i] =;
int
k =;
for
( int i =; i <= M; i++ )
{

int
u = edge[i].u; int v = edge[i].v;
int
a = find( u ); int b = find( v );
if
( a != b )
{

res[++k] = edge[i].w;
num[k] = rank[a]*rank[b]*;
rank[b] += rank[a];
f[a] = b;
}
}

for
( int i = k-; i >=; i-- )
num[i] = num[i]+num[i+];
scanf("%d",&Q);
for
( int i =; i <= Q; i++ )
{

int
a; scanf("%d",&a);
int
pos = search(,k,a );
if
( pos > k )puts("0");
else
printf("%I64d\n",num[pos]);
}
}

return
;
}

HDU 4750的更多相关文章

  1. &lbrack;2013 ACM&sol;ICPC Asia Regional Nanjing Online C&rsqb;&lbrack;hdu 4750&rsqb;Count The Pairs&lpar;kruskal &plus; 二分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意: 定义f(u,v)为u到v每条路径上的最大边的最小值..现在有一些询问..问f(u,v)>=t ...

  2. hdu 4750 Count The Pairs&lpar;并查集&rpar;

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 代码: #include<cstdio> #include<cstring&g ...

  3. 2013南京网赛1003 hdu 4750 Count The Pairs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:给出一个无向图,f(a,b)表示从点a到点b的所有路径中的每条路径的最长边中的最小值,给出 ...

  4. HDU 4750 Count The Pairs&lpar;并查集)

    题目链接 没有发现那个点,无奈. #include <cstdio> #include <cstring> #include <cmath> #include &l ...

  5. hdu 4750 Count The Pairs&lpar;并查集&plus;二分&rpar;

    Problem Description With the 60th anniversary celebration of Nanjing University of Science and Techn ...

  6. hdu 4750 Count The Pairs &lpar;2013南京网络赛&rpar;

    n个点m条无向边的图,对于q个询问,每次查询点对间最小瓶颈路 >=f 的点对有多少. 最小瓶颈路显然在kruskal求得的MST上.而输入保证所有边权唯一,也就是说f[i][j]肯定唯一了. 拿 ...

  7. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  8. HDU 4750 Count The Pairs &starf;&lpar;图&plus;并查集&plus;树状数组&rpar;

    题意 给定一个无向图(N<=10000, E<=500000),定义f[s,t]表示从s到t经过的每条路径中最长的边的最小值.Q个询问,每个询问一个t,问有多少对(s, t)使得f[s, ...

  9. HDU 4750 Count The Pairs &lpar;离线并查集&rpar;

    按边从小到大排序. 对于每条边(from, to, dist),如果from和to在同一个集合中,那么这条边无意义,因为之前肯定有比它更小的边连接了from和to. 如果from和to不属于同一个集合 ...

随机推荐

  1. XML转java对象

    使用XStream来转换. XStream xStream = new XStream(); xStream.autodetectAnnotations(true);  // xStream.alia ...

  2. 教你怎么fan qiang 进国内看视频而不受限制

    这一周难得今天闲一点,写日志也不知道写啥,谈爱情?...没得谈.思前想后还是在这儿带给大家点福利吧,主要是针对在国外生活的孩纸们看国内视频总是提示被限制的问题,qq音乐也是.     或许大家有听过f ...

  3. GoldenGate配置(二)之双向复制配置

     GoldenGate配置(二)之双向复制配置 环境: Item Source System Target System Platform Red Hat Enterprise Linux Serve ...

  4. NDK Android&ast; 应用移植方法

    概述 本指南用于帮助开发者将现有的基于 ARM* 的 NDK 应用移植到 x86.假设您已经拥有一个正常执行的应用,须要知道怎样可以高速让 x86 设备在 Android* Market 中找到您的应 ...

  5. Windows环境下google protobuf入门

    我使用的是最新版本的protobuf(protobuf-2.6.1),编程工具使用VS2010.简单介绍下google protobuf: google protobuf 主要用于通讯,是google ...

  6. 安卓弹出对话框——AlertDialog(二)

    在Android中,启动一个对话框有三种方式: 1.定义一个新的activity,并将其主题设置为对话框风格 2.使用AlertDialog类,并且显示它 3.使用 Android的Dialog类的子 ...

  7. 网络1711c语言函数作业总结

    作业地址:https://edu.cnblogs.com/campus/jmu/JMUC--NE17111712/homework/1335 总结 1.评分细则 评分注意事项 代码规范问题依旧要重视, ...

  8. c&num;堆与栈

    一.在讲堆栈之前,我们先看看值类型和引用类型: 1,我们看看值类型与引用类型的存储方式: 引用类型:引用类型存储在堆中.类型实例化的时候,会在堆中开辟一部分空间存储类的实例.类对象的引用还是存储在栈中 ...

  9. Django进阶-auth集成认证模块

    auth认证模块是Django内置集成的一个用户认证模块. auth认证模块方法 方法 释义 auth.authenticate() 认证校验 auth.login(request,user) 封装认 ...

  10. pycharm鸡火

    由于github被封杀,大虾把它挪到了gitee下面 /pengzhile/jetbrains-agent 主要是一个jar包,放在D:\Program Files\JetBrains\PyCharm ...