BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】
题目
在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家 
之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿 
意修建恰好 n – 1条双向道路。 每条道路的修建都要付出一定的费用, 这个费用等于道路长度乘以道路两端的国家个数之差的绝对值。例如,在下图中,虚线所示道路两端分别有 2 个、4个国家,如果该道路长度为 1,则费用为1×|2 – 4|=2。图中圆圈里的数字表示国家的编号。 
 
由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建 
费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计 
算出所需要的费用。请你帮助国王们设计一个这样的软件。
输入格式
输入的第一行包含一个整数n,表示 W 星球上的国家的数量,国家从 1到n 
编号。接下来 n – 1行描述道路建设情况,其中第 i 行包含三个整数ai、bi和ci,表 
示第i 条双向道路修建在 ai与bi两个国家之间,长度为ci。
输出格式
输出一个整数,表示修建所有道路所需要的总费用。
输入样例
6
1 2 1
1 3 1
1 4 2
6 3 1
5 2 1
输出样例
20
解释
n = 1,000,000 1≤ai, bi≤n
0 ≤ci≤ 10^6
题解
dfs算算就好了【NOI题??】 
要注意爆栈= =【蒟蒻爆了一次】 
减少传参就好了【事实告诉我们1000000只传一参不会爆。】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define LL long long int
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define Redge(u) for (int k = h[u]; k != -1; k = ed[k].nxt)
using namespace std;
const int maxn = 1000005,maxm = 2000005,INF = 1000000000;
inline int RD(){
    int out = 0,flag = 1; char c = getchar();
    while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();}
    while (c >= 48 && c <= 57) {out = (out << 1) + (out << 3) + c - '0'; c = getchar();}
    return out * flag;
}
int n,siz[maxn],fa[maxn];
int h[maxn],ne = 0;
struct EDGE{int to,nxt,w;}ed[maxm];
inline void build(int u,int v,int w){
    ed[ne] = (EDGE){v,h[u],w}; h[u] = ne++;
    ed[ne] = (EDGE){u,h[v],w}; h[v] = ne++;
}
LL ans = 0;
void dfs(int u){
    int to; siz[u] = 1;
    Redge(u) if ((to = ed[k].to) != fa[u]){
        fa[to] = u; dfs(to);
        ans += (LL)ed[k].w * abs(n - 2 * siz[to]);
        siz[u] += siz[to];
    }
}
int main(){
    memset(h,-1,sizeof(h));
    n = RD(); int a,b,w;
    REP(i,n - 1) a = RD(),b = RD(),w = RD(),build(a,b,w);
    dfs(1);
    cout<<ans<<endl;
    return 0;
}
BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】的更多相关文章
- 【bzoj2435】[NOI2011]道路修建 树形dp
		题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. 每条道路的修 ... 
- [luogu2052 NOI2011] 道路修建 (树形dp)
		传送门 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 ... 
- [noi2011]道路修建 树形dp
		这道题可以说是树形dp的入门题,也可以看成是一道检验[树]这个数据结构的题目: 这道题只能bfs,毕竟10^6的复杂度win下肯定爆栈了: 但是最恶心的还不是这个,实测用printf输出 用cout输 ... 
- 洛谷P2052 [NOI2011]道路修建(树形DP)
		题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ... 
- bzoj 2435: [Noi2011]道路修建 树上 dp
		2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ... 
- P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)
		P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ... 
- BZOJ2435:[NOI2011]道路修建 (差分)
		Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道 ... 
- BZOJ2435 NOI2011道路修建
		要多简单有多简单.然而不知道为啥在luogu上过不掉. #include<iostream> #include<cstdio> #include<cmath> #i ... 
- 【题解】 bzoj2435: [Noi2011]道路修建 (傻逼题)
		bzoj2435,懒得复制,戳我戳我 Solution: 模拟即可(有点傻逼啊 Code: //It is coded by Ning_Mew on 5.13 #include<bits/std ... 
随机推荐
- 使用c++控制sqlite3
			首先,到官网下载相关的压缩包 https://www.sqlite.org/download.html 但是要自己再重新编译一个, 博主自己收集了一下,密码:hixo https://pan.baid ... 
- IOS中input与fixed同时存在的情况会出现bug
			两种解决方案,一种是将内容区域放在中间部分,只是中间部分在滚动(还是固定在底部):另一种是判断当是ios时,将其转换为absolute定位.(跟随着页面的滚动而滚动);; 当使用input时,fixe ... 
- 深入理解yii2之RBAC(模块化系统)
			一.前言 上一篇文章我们已经大致谈过RBAC到底是什么和yii2底层RBAC接口的分析. 下面我深入理解一下RBAC权限分配,深入理解下yii2底层RBAC扩展,以及它是如何针对模块化系统的开发的? ... 
- mysql_old_wrong
			DELIMITER $ create trigger auto_post_person_pointafter insert on post for each rowbeginupdate person ... 
- .c和.h区别
			本质没有区别: .h是头文件 一般情况下下边内容放在.h文件中 宏定义 结构体,联合,枚举声明 typedef声明 外部函数声明 全局变量声明 .c是程序文件 一般情况下下边内容放在.h文件中 内含函 ... 
- scrapy之分布式
			分布式爬虫 概念:多台机器上可以执行同一个爬虫程序,实现网站数据的分布爬取. 原生的scrapy是不可以实现分布式爬虫? a) 调度器无法共享 b) 管道无法共享 工具 scrapy-redis组件: ... 
- 重头开始学Qt——day1
			以前学过Qt,但只是为了学分,现在重学. 1. 认识Qt应用程序框架 直接新建一个项目后,自动生成了一下文件,下面一个个理解. (1)main.cpp main.cpp中特别的是QApplicatio ... 
- C# 输出结果有System.Byte[]
			byte[]类型直接输出或者调用ToString函数都会出现这个结果. 需要执行: byte[] a=new byte[10]; string text = "";for (int ... 
- POJ:3061-Subsequence(尺取法模板详解)
			Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18795 Accepted: 8043 Descript ... 
- Android 热点相关操作
			Android未提供对该API的直接访问, 需要使用反射, 代码较简单, 如下 GetHotspotState.java package club.seliote.hotspotscanner.uti ... 
