Luogu P2052 [NOI2011]道路修建
吐槽一下
我开了\(-O2\)优化结果跑的更慢了什么鬼???!!!
我怕不是吸了一口毒氧气
不要脸的放上我的博客,欢迎大家前来面基
题目大意
给定一棵有\(n\)个节点的树,树中有\({n-1}\)条边,每条边花费的价格是这条边两侧的点的数量的差的绝对值和这条边长度的积。求这棵树的总花费。
解题思路
以节点\(1\)作为这棵树的根节点,其实选哪个都可以从题中可以得出一个基本的结论,一条边的两边的点的数量分别等于终点节点儿子的数量\(+1\)和起点节点祖先的数量。我们可以通过遍历整棵树将每个节点儿子的数量预处理出来。
在预处理的同时可以进行统计。到最后输出Ans就可以
附上代码
当然不能少了代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define int long long
using namespace std;
const int maxn = 1e6+3;
int n, fir[maxn], nx[maxn<<1], u[maxn<<1], v[maxn<<1], w[maxn<<1], s[maxn], Ans;
bool vis[maxn];
inline int DFS(int x, int fr) {
if(s[x] != 1) return s[x];
int k = fir[x];
while (k != -1) {
if(fr != v[k]) {
s[x] += DFS(v[k], x);
Ans += abs(n-2*s[v[k]]) * w[k];
}
k = nx[k];
}
return s[x];
}
main() {
scanf("%lld", &n);
memset(fir, -1, sizeof(fir));
fill(s+1, s+1+n, 1);
for(int i=1; i<=(n-1)*2; i++) {
scanf("%lld%lld%lld", &u[i], &v[i], &w[i]);
nx[i] = fir[u[i]];
fir[u[i]] = i;
u[i+1] = v[i], v[i+1] = u[i], w[i+1] = w[i];
i++;
nx[i] = fir[u[i]];
fir[u[i]] = i;
}
vis[1] = 1;
DFS(1, 1);
printf("%lld", Ans);
}
Luogu P2052 [NOI2011]道路修建的更多相关文章
- P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)
P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...
- 洛谷P2052 [NOI2011]道路修建(树形DP)
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...
- P2052 [NOI2011]道路修建
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...
- luogu 2052 [NOI2011]道路修建 BFS序
据说dfs会爆栈,写一个 BFS 序更新就好了~ #include <bits/stdc++.h> #define N 1000005 #define ll long long #defi ...
- bzoj 2435: [Noi2011]道路修建 树上 dp
2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- NOI2011道路修建
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1974 Solved: 550[Submit][Status ...
- BZOJ 2435: [Noi2011]道路修建( dfs )
NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...
- 2435: [Noi2011]道路修建
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2188 Solved: 639[Submit][Status ...
- BZOJ_2435_[Noi2011]道路修建_dfs
BZOJ_2435_[Noi2011]道路修建_dfs 题意: http://www.lydsy.com/JudgeOnline/problem.php?id=2435 分析: dfs搞定. 我怕爆栈 ...
随机推荐
- input title 悬浮值
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- charset='utf8mb4'
charset='utf8mb4' conn = pymysql.connect(host=h, port=pt, user=u, passwd=p, db=db, charset='utf8mb4' ...
- URL 字段简析
URL:统一资源定位符:URL是uri的一个子集,另外一个子集是URN. URL语法:(来自HTTP权威指南中文版P29) 组件 描述 默认值 方案 访问服务器以获取资源时要使用哪种协议 无 用户 某 ...
- bzoj2705 [SDOI2012]Longge的问题——因数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2705 一开始自己想了半天... 有了点思路:遍历 n 的因数 k,每个因数要预处理出 gcd ...
- 短链接及关键字过滤ac自动机设计思路
=============:短链接设计思路:核心:将长字符转为短字符串并建立映射关系,存储redis中.1.使用crc32转换为Long 2.hashids将long encode为最短字符串.作为短 ...
- Linux下 CentOS 7 对比6 改动详解 及 系统安装
系统基础服务变化 操作系统 本文CentOS7 为最新版7.5 本文CentOS6 为6.9 操作 Centos6 Centos7 对比 自动补全 只支持命令.文件名 支持命令.选项.文件名 文件系统 ...
- Python网咯爬虫 — Scrapy框架应用
Scrapy框架 Scrapy是一个高级的爬虫框架,它不仅包括了爬虫的特征,还可以方便地将爬虫数据保存到CSV.Json等文件中. Scrapy用途广泛,可以用于数据挖掘.监测 ...
- java HashMap和LinkedHashMap区别
我们用的最多的是HashMap,在Map 中插入.删除和定位元素,HashMap 是最好的选择.但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好.如果需要输出的顺序和输入的相同,那么用 ...
- Get 和 Post 使用篇(1)
1.Post 请求发送方式 实例: const string sResponseEncoding = "gb2312"; //测试文本信息 string postText = &q ...
- DFS POJ 1321 棋盘问题
题目传送门 /* DFS:因为一行或一列都只放一个,可以枚举从哪一行开始放,DFS放棋子,同一列只能有一个 */ #include <cstdio> #include <algori ...