JZOJ 5776. 【NOIP2008模拟】小x游世界树
5776. 【NOIP2008模拟】小x游世界树
(File IO): input:yggdrasil.in output:yggdrasil.out
Goto ProblemSet
Description
Input
第二行n个数ai,表示每个平台上的加速器的性能。
第三至n+1行,每行三个数bi,ci,di分别表示这条无向边的起点,终点与耗费的能量值
Output
第二行一个数,表示最小耗费的体力值。
Sample Input
4 2 1 3 3 1 2 3 1 3 4 2 4 6
Sample Output
1 9
Data Constraint
对于40%的数据:n<=1000
对于60%的数据:n<=8000
对于80%的数据:n<=100000
对于100%的数据:0<n<=700000;ai<=1000;1<=bi,ci<=n;di<=1000。
数据保证一个点的加速器性能绝对小于等于它的所有的边所耗费的能量,保证所有节点都可以到达,保证没有数据与样例相同。
Hint
样例解释:
如果以第一个点为根,则需要耗费0(到1)+1(到2)+2(到3)+6(到4)=9的能量值。
如果以第二个点为根,则需要耗费2(到1)+0(到2)+4(到3)+5(到4)=11的能量值。
如果以第三个点为根,则需要耗费1(到1)+2(到2)+0(到3)+7(到4)=10的能量值。
如果以第四个点为根,则需要耗费5(到1)+3(到2)+7(到3)+0(到4)=15的能量值。
很明显以第一个点为根是最优的。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #define LL long long 5 #define N 1000007 6 using namespace std; 7 struct edge 8 { 9 LL to, next, w; 10 }e[N * 2]; 11 LL zs[N], n, a[N], ls[N * 2], ans, root, site, cnt; 12 bool v[N]; 13 14 void add(LL x, LL y, LL z) 15 { 16 e[++cnt].to = y; 17 e[cnt].next = ls[x]; 18 e[cnt].w = z; 19 ls[x] = cnt; 20 } 21 22 void dfs(LL x, LL sum) 23 { 24 root += sum; 25 for (int i = ls[x]; i; i = e[i].next) 26 { 27 if (v[e[i].to]) continue; 28 v[e[i].to] = 1; 29 dfs(e[i].to, sum + (e[i].w - a[x])); 30 zs[x] += zs[e[i].to]; 31 } 32 zs[x]++; 33 } 34 35 void find(LL x, LL sum) 36 { 37 if (sum < ans) 38 { 39 ans = sum; 40 site = x; 41 } 42 else if (sum == ans) site = min(site, x); 43 for (int i = ls[x]; i; i = e[i].next) 44 { 45 if (v[e[i].to]) continue; 46 v[e[i].to] = 1; 47 find(e[i].to, sum + (n - zs[e[i].to]) * (e[i].w - a[e[i].to])- zs[e[i].to] * (e[i].w - a[x])); 48 } 49 } 50 51 int main() 52 { 53 freopen("yggdrasil.in", "r", stdin); 54 freopen("yggdrasil.out", "w", stdout); 55 scanf("%lld", &n); 56 for (int i = 1; i <= n; i++) 57 scanf("%lld", &a[i]); 58 for (int i = 1; i <= n - 1; i++) 59 { 60 LL x, y, z; 61 scanf("%lld%lld%lld", &x, &y, &z); 62 add(x, y, z); 63 add(y, x, z); 64 } 65 v[1] = 1; 66 dfs(1, 0); 67 ans = root; 68 site = 1; 69 memset(v, 0, sizeof(v)); 70 v[1] = 1; 71 find(1, root); 72 printf("%lld\n", site); 73 printf("%lld", ans); 74 }
View Code
转载于:https://www.cnblogs.com/traveller-ly/p/9461936.html
JZOJ 5776. 【NOIP2008模拟】小x游世界树相关推荐
- JZOJ5776. 【NOIP2008模拟】小x游世界树
题目:[NOIP2008模拟]小x游世界树: 题目的附加题解给的很清楚,这里只给一个代码: 1 #include<iostream> 2 #include<cstdio> 3 ...
- [2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)
文章目录 数列 solution code 秘密通道 solution code 小X游世界树 solution code 划分 solution code 数列 a[1]=a[2]=a[3]=1 a ...
- [题解](树形dp/换根)小x游世界树
2. 小x游世界树 (yggdrasi.pas/c/cpp) [问题描述] 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当 ...
- 【JZOJ 5776】【NOIP2008模拟】小x游世界树 (树)
问题描述 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达,然而现在已经春天了, ...
- 梦幻模拟战 java,梦幻模拟战手游:抽SSR真的难!你抽到几个SSR英雄?
原标题:梦幻模拟战手游:抽SSR真的难!你抽到几个SSR英雄? NB游戏,娱乐生活!大家好,我是NB.前段时间一直测试狐妖小红娘手游和航海王燃烧意志这两款手游,甚至是网易刚出的神都夜行录也去体验了一把 ...
- 梦幻模拟战手游怎么在电脑上玩 梦幻模拟战安卓模拟器玩法教程
梦幻模拟战是上古三大日式RPG的巅峰之一,作为正统游戏续作将传承经典特色,还原游戏经典,在剧情上补充了游戏后续空白,同时进行内容创新.战棋式策略战斗让玩家感受到时代气息,游戏画面升级换代,战斗流程也更 ...
- 【DP】小明游天界(zjoj 2149)
小明游天界 题目大意: 有 m个单位时间,让你从1走到n(不能早到,不能晚到),要使经过的城市最多,若无法用m个单位时间到达n就输出-1 样例输入 5 12 4 1 2 5 1 4 3 4 2 4 2 ...
- 梦幻模拟战手游服务器维护,梦幻模拟战手游11月21日更新公告 执行者降临限时召唤开启[多图]...
梦幻模拟战手游11月21日更新内容中开启了限时十连抽必得SR英雄哦,同时还有时空的轨迹SC秘境新挑战,接下来跟随安族大大来看看详细资讯详情吧,希望各位能够喜欢~ 梦幻模拟战手游11月21日更新公告 服 ...
- Bootstrap框架: 模拟小风车科技官网
插件地址:http://www.bootcss.com Bootstrap是一个简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. 本次我们利用它来模拟小风车科技的官网,因为它的官网开发也是利 ...
最新文章
- 为.Net程序集添加资源
- c++中的左值与右值
- Docker基本组成 和 基本命令
- LeetCode MySQL 1747. 应该被禁止的Leetflex账户
- netty 游戏服务器框图_基于Netty和WebSocket协议实现Web端自动打印订单服务方法与流程...
- [Tips] WSL ubuntu 18.04 安装python3
- 【Elastischearch】Elastischearch 的 ID 生成器 UUIDGenerator
- 干货||Selenium自动化测试网页
- Hadoop的安装配置
- html音乐if代码如何使用,关于html:如何在带有JavaScript代码的if条件中使用函数方法?...
- 【遥感图像预处理方法】
- 线性表的链式存储结构(完整代码(C语言)+运行实例)
- 高速电路常用的信号完整性测试手段与仿真
- Spark实用议题系列(02)--- DataFrame的各种join总结和实例
- python编程长方形面积公式_求长方形面积-题解(Java代码)
- Android打开系统设置界面
- Python Scrapy 上传图片到FastDfs(py3fdfs)
- ChatGPT数据集之谜
- 萌新 学习python 途中一点疑惑记录IndexError: string index out of range
- AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
热门文章
- Oracle if else if for case
- Felix的Nodejs代码风格
- 字符串处理示例--列车车次查询.sql
- 看到一个暴强的翻译,闲的蛋疼,写个c#版的
- [Web 前端] 解决因inline-block元素导致的空白间距和元素下沉
- C++11 tuple的使用
- JavaScript中eval()函数
- [新功能]删除团队文章
- 数据链路层中的LLC
- java 判断数字变化增减_java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等...