道路修建 2(自创题+题解)(From NOI2011)
道路修建这道题想来各位不陌生(传送门在此——Bzoj2435),看了此题,一开始以为是最初各个点处于分散状态,然后做了一下,直到发现标程都有点问题,才发现原题是说本来各点已经处于连接完毕的状态(phile:汗。。。 HansBug:论HansBug同学的逗比本性^_^)
既然说道这里了,那么就提出一个新的问题——假如题目别的不变,然后输入的那些边的新的意义如下——首先,一开始各个点处于分散状态,然后按照输入的顺序,每输入一条边就按照当前两边的状态(即两点所在的块的大小之差的绝对值),进行和题目一样的计算,然后将这两个联通,然后进行下一个点——如此循环往复
例如:对于题目中的原有样例:
6
1 2 1
1 3 1
1 4 2
6 3 1
5 2 1
则结果为12(0×1+1×1+2×2+3×1+4×1=12)即边是被一条一条加进来的,不像原题那样本来就是一张完整的树,啊呸,图。。。
.jpg)
题解:乍一看题目貌似相当令人头大,但实际上仔细想想不难发现这里面充斥着并查集的影子,并查集可以完美的支持块与块之间的合并操作,则问题来了——怎样同时维护各个块的大小?只要这个解决的,此题也就解决了——其实也不难,由于本题中的合并全都保证不会出现同一块内部的合并(就算出现这个只要在合并前先判断是否必要合并即可),所以每次当你getfat找到最高节点时,同时再进行数量的叠加即可。。。That's all。。。(Hansbug:论HansBug的逗比本性么么哒)
var
i,j,k,l,m,n,a1,a2,a3,a4:longint;
ll:int64;
b,c:array[..] of longint;
function getfat(x:longint):longint;
begin
if c[x]<>x then c[x]:=getfat(c[x]);
exit(c[x]);
end;
procedure merge(x,y:longint);
var i,j,k,l:longint;
begin
i:=getfat(x);
j:=getfat(y);
b[i]:=b[i]+b[j];
c[j]:=i;
end;
begin
readln(n);
fillchar(b,sizeof(b),);
fillchar(c,sizeof(c),);
for i:= to n do
begin
c[i]:=i;
b[i]:=;
end;
ll:=;
for i:= to n- do
begin
readln(a1,a2,a3);
j:=getfat(a1);
k:=getfat(a2);
ll:=int64(ll+int64(a3*int64(abs(int64(b[j])-int64(b[k]))))); //此处建议不要套那么多int64(),实验表明会严重影响速度,不过此题还是很轻松的
merge(j,k);
end;
writeln(ll);
end.
道路修建 2(自创题+题解)(From NOI2011)的更多相关文章
- 【题解】 bzoj2435: [Noi2011]道路修建 (傻逼题)
bzoj2435,懒得复制,戳我戳我 Solution: 模拟即可(有点傻逼啊 Code: //It is coded by Ning_Mew on 5.13 #include<bits/std ...
- P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)
P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...
- 【bzoj2435】[NOI2011]道路修建
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. 每条道路的修 ...
- bzoj 2435: [Noi2011]道路修建 树上 dp
2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- [NOI 2011]道路修建
Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道 ...
- 【bzoj2435】[NOI2011]道路修建 树形dp
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. 每条道路的修 ...
- 【BZOJ3995】[SDOI2015]道路修建 线段树区间合并
[BZOJ3995][SDOI2015]道路修建 Description 某国有2N个城市,这2N个城市构成了一个2行N列的方格网.现在该国政府有一个旅游发展计划,这个计划需要选定L.R两列(L&l ...
- BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】
题目 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道路. 每条道路的修 ...
- BZOJ 2435: [Noi2011]道路修建 dfs搜图
2435: [Noi2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他 ...
随机推荐
- ASP.NET MVC中使用异步控制器
线程池 一直想把项目改写成异步,但是ASP.NETMVC3下写的过于繁琐,.NET 4.5与ASP.NET MVC下代码写起来就比较简单了, MS好像也一直喜欢这样搞,每一个成熟的东西,都要演变好几个 ...
- winform的Textbox设置只读之后ForeColor无效的解决方法
winform的Textbox设置只读之后ForeColor无效. 通过以下方法就可以解决: 设置为只读之后,把BackColor改一下,然后运行一下窗口,再设置ForeColor就没问题了. tbT ...
- 如何在NodeJS项目中优雅的使用ES6
如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...
- HTML5 JavaScript API
W3C官方指定的HTML5规范已经修订了很多次,HTML5这个概念是与javascript API相捆绑的语义标记.在过去这些年中,HTML5这个词所指代的范围正以惊人的的速度膨胀,某种程度上已经成为 ...
- Spring AOP中的动态代理
0 前言 1 动态代理 1.1 JDK动态代理 1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的过滤功能 2 Spring AOP中的动态代理机制 2.1 ...
- 笔记:Spark简介
Spark简介 [TOC] Spark是什么 Spark是基于内存计算的大数据并行计算框架 Spark是MapReduce的替代方案 Spark与Hadoop Spark是一个计算框架,而Hadoop ...
- HTML5和CSS3
一.HTML5 HTML5 是 HTML 标准的最新演进版本. 这个术语代表了两个不同的概念:它是一个新的 HTML 语言版本包含了新的元素,属性和行为,同时包含了一系列可以被用来让 Web 站点和应 ...
- SQL 增删改查45道题
create database School use School go create table Student --1.学生表 ( Sno ) not null primary key,--学号( ...
- HTML__post 和 get区别【URL】
一.get和post的区别: 表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的U ...
- ArcGIS制图表达Representation-制图表达原理
ArcGIS制图表达技术-制图表达原理 by 李远祥 在讲述原理之前,需要对上一章内容进行一些必要的补充说明.既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要 ...