洛谷 U32911 道路维护 解题报告
U32911 道路维护
题目背景
最近很多人投诉说C国的道路破损程度太大,以至于无法通行。
C国的政府很重视这件事,但是最近财政有点紧,不可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护。
题目描述
将C国抽象成一个无向图,定义两个城市之间的某条路径的破损程度为该条路径上所有边破损程度的最大值,定义两个城市之间的破损程度为两个城市之间所有路径破损程度的最小值。
C国政府向你提问多次,有多少个城市对的破损程度不超过\(L\),他们将依照你的回答来决定到底怎样维护C国的道路
输入格式
第一行三个数\(n,m,q\),表示图的点数和边数以及政府的询问数
以下\(m\)行每行三个数\(a,b,c\),表示一条连接\(a,b\)且破损程度为\(c\)的无向边
接下来一行\(q\)个数\(L_i\),表示询问有多少个城市对的破损程度不超过\(L_i\)
输出格式
一行\(q\)个数,对应每个询问,输出满足要求的城市对的数目。
说明
一个城市对\((i,j)\),满足\(i<j\),也就是说\((i,j)\),\((j,i)\)只算一次,且两个城市不同
数据范围
| 测试点编号 | \(n\) | \(m\) | \(q\) |
|---|---|---|---|
| 1 | 50 | 100 | 100 |
| 2 | 200 | 400 | 100 |
| 3 | 300 | 500 | 1000 |
| 4 | 1000 | 10000 | 10000 |
| 5 | 5000 | 20000 | 10000 |
| 6 | 5000 | 20000 | 100000 |
| 7 | 10000 | 50000 | 100000 |
| 8 | 10000 | 50000 | 100000 |
| 9 | 20000 | 100000 | 100000 |
| 10 | 20000 | 100000 | 100000 |
所有的\(L_i\)满足\(L_i\le 10^9\)
一眼上去可以最小生成树+点剖
但想一下我们发现其实是可以离线的
把询问和边权放在一起排序,模拟krus建最小生成树过程,全局更新答案
Code:
#include <cstdio>
#include <algorithm>
const int N=20010;
const int M=200010;
struct node
{
int u,v,w,id;
bool friend operator <(node n1,node n2)
{
if(n1.w==n2.w) return n1.id<n2.id;
return n1.w<n2.w;
}
}e[M];
int f[N],siz[N],ans[M>>1],sum,n,m,q;
int Find(int x)
{
return f[x]=f[x]==x?x:Find(f[x]);
}
int cal(int x)
{
return x*(x-1)/2;
}
void Merge(int x,int y)
{
int X=Find(x),Y=Find(y);
sum-=cal(siz[X])+cal(siz[Y]);
siz[X]+=siz[Y];
sum+=cal(siz[X]);
f[Y]=Find(X);
}
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
f[i]=i,siz[i]=1;
for(int i=1;i<=m;i++)
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
for(int i=1;i<=q;i++)
{
scanf("%d",&e[i+m].w);
e[i+m].id=i;
}
std::sort(e+1,e+1+m+q);
for(int i=1;i<=m+q;i++)
{
if(!e[i].id&&Find(e[i].u)!=Find(e[i].v))
Merge(e[i].u,e[i].v);
if(e[i].id)
ans[e[i].id]=sum;
}
for(int i=1;i<=q;i++)
printf("%d ",ans[i]);
return 0;
}
2018.7.26**
洛谷 U32911 道路维护 解题报告的更多相关文章
- 洛谷 P2058 海港 解题报告
P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...
- 洛谷 P3956 棋盘 解题报告
P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...
- 洛谷 P1979 华容道 解题报告
P1979 华容道 题目描述 小\(B\)最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时 ...
- BZOJ 3545 / 洛谷 P4197 Peaks 解题报告
P4197 Peaks 题目描述 在\(\text{Bytemountains}\)有\(N\)座山峰,每座山峰有他的高度\(h_i\).有些山峰之间有双向道路相连,共\(M\)条路径,每条路径有一个 ...
- 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...
- 洛谷 P2672 推销员 解题报告
P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ...
- 洛谷 P2679 子串 解题报告
P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ...
- 洛谷 P1076 寻宝 解题报告
P1076 寻宝 题目描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共有\( ...
- 洛谷 P1582 倒水 解题报告
P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...
随机推荐
- 2019年1月23日,好像是这个日子,RF发布了 1.7.3.1 支持python3.6以上了,安装成功。
安装步骤:(win10 家庭版 64) 1.安装Python3.7.2,记得勾选添加Path 2.pip install robotframework 3.pip install wxPython 4 ...
- 接口测试工具postman(六)添加变量(参数化)
1.添加全局变量并引用 2.通过设置请求前置配置变量 3.在Tests里面,把响应数据设置为变量 4.添加外部文件,引用外部文件中的变量和数据,此种场景就可以执行多次请求 1)配置文件,txt或者cs ...
- 【swiper】 滑块组件说明
swiper 滑块视图容器,其原型如下: <swiper indicator-dots="[Boolean]" indicator-color="[Color]&q ...
- lintcode50 数组剔除元素后的乘积
数组剔除元素后的乘积 给定一个整数数组A. 定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法. 您在真实的面试中是 ...
- Multi-task Correlation Particle Filter for Robust Object Tracking--论文随笔
摘要:在这篇论文中,作者提出一种鲁棒视觉跟踪的多任务相关粒子滤波琪跟踪算法(MCPF).作者首先向我们展示了多任务相关滤波器,该滤波器在训练滤波器模板的时候可以学习不同特征之间的联系.本文提出的MCP ...
- LeetCode 386——字典序排数
1. 题目 2. 解答 2.1 方法一 假设返回 118 以内数的字典顺序,则为 1,10,100,101,102,...,109,11,110,111,112,...,118,12,13,....根 ...
- CryptoZombies学习笔记——Lesson5
chapter1:token代币 简而言之,通证就是支持交易的包含一系列规范的函数接口的一个智能合约,发币可以用ERC20标准,但是像僵尸这种非同质化代币,需要用ERC721标准 chapter2:e ...
- APUE学习笔记3_文件IO
APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...
- Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
自己搭建了一套伪分布的大数据环境,运行Hadoop包中自带的示例时,出现如下错误: 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMas ...
- vue.js学习之 跨域请求代理与axios传参
vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...