【bzoj3573】[Hnoi2014]米特运输
题目链接
Description
米特是D星球上一种非常神秘的物质,蕴含着巨大的能量。在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题。
D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都。这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲。树按深度分层:根结点深度为0,属于第1层;根结点的子节点深度为1,属于第2层;依此类推,深度为i的结点属于第i+l层。
建好高速通道之后,D星人开始考虑如何具体地储存和传输米特资源。由于发展程度不同,每个城市储存米特的能力不尽相同,其中第i个城市建有一个容量为A[i]的米特储存器。这个米特储存器除了具有储存的功能,还具有自动收集米特的能力。如果到了晚上六点,有某个储存器处于未满的状态,它就会自动收集大气中蕴含的米特能源,在早上六点之前就能收集满;但是,只有在储存器完全空的状态下启动自动收集程序才是安全的,未满而又非空时启动可能有安全隐患。早上六点到七点间,根节点城市(1号城市)会将其储存器里的米特消耗殆尽。根节点不会自动搜集米特,它只接受子节点传输来的米特。早上七点,城市之间启动米特传输过程,传输过程逐层递进:先是第2层节点城市向第1层(根节点城市,即1号城市)传输,直到第1层的储存器满或第2层的储存器全为空;然后是第3层向第2层传输,直到对于第2层的每个节点,其储存器满或其予节点(位于第3层)的储存器全为空;依此类推,直到最后一层传输完成。传输过程一定会在晚上六点前完成。
由于技术原因,运输方案需要满足以下条件:
(1)不能让某个储存器到了晚上六点传输结束时还处于非空但又未满的状态,这个时候储存器仍然会启动自动收集米特的程序,而给已经储存有米特的储存器启动收集程序可能导致危险,也就是说要让储存器到了晚上六点时要么空要么满;
(2)关于首都——即1号城市的特殊情况, 每天早上六点到七点间1号城市中的米特储存器里的米特会自动被消耗殆尽,即运输方案不需要考虑首都的米特怎么运走;
(3)除了1号城市,每个节点必须在其子节点城市向它运输米特之前将这座城市的米特储存器中原本存有的米特全部运出去给父节点,不允许储存器中残存的米特与外来的米特发生混合;
(4)运向某一个城市的若干个来源的米特数量必须完全相同,不然,这些来源不同的米特按不同比例混合之后可能发生危险。
现在D星人已经建立好高速通道,每个城市也有了一定储存容量的米特储存器。为了满足上面的限制条件,可能需要重建一些城市中的米特储存器。你可以,也只能,将某一座城市(包括首都)中本来存在的米特储存器摧毁,再新建一座任意容量的新的米特储存器,其容量可以是小数(在输入数据中,储存器原始容量是正整数,但重建后可以是小数),不能是负数或零,使得需要被重建的米特储存器的数目尽量少。
Input
第一行是一个正整数N,表示城市的数目。接下来N行,每行一个正整数,其中的第i行表示第i个城市原来存在的米
特储存器的容量。再接下来是N-I行,每行两个正整数a,b表示城市b到城市a有一条高速通道(a≠b)。
N<500000,A[j]<10^8
Output
输出文件仅包含一行,一个整数,表示最少的被重建(即修改储存器容量)的米特储存器的数目。
Sample Input
5
5
4
3
2
1
1 2
1 3
2 4
2 5
Sample Output
3
HINT
【样例解释】
一个最优解是将A[1]改成8,A[3]改成4,A[5]改成2。这样,2和3运给1的量相等,4和5运给2的量相等,且每天晚上六点的时候,1,2满,3,4,5空,满足所有限制条件。
题解
是会出语文题的friends呢
题意:
给出一棵点上有权值的有根树,问最少改变多少个点的权值可以满足这样的条件:1.每个点的权值等于其所有子节点权值之和;2.每个点的所有子节点权值相等。
要满足这样的条件,如果确定了一个点的权值,那么其它点的权值都唯一确定了呢。
dfs出根节点的权值分别是其它每个点的多少倍,再枚举每个点不改变时根节点的值是多少,能使根节点值相同的节点就是可以一起不被改变的。那么答案就是n−根节点权值出现次数最大值n-{根节点权值出现次数最大值}。
注意这个倍数啊还有权值啊汇非常非常大。
要么取个log,要么搞个hash也是兹磁哒。
#include<bits/stdc++.h>
using namespace std;inline int read(){int x = 0, f = 1; char c = getchar();while(!isdigit(c)) { if(c == '-') f = -1; c = getchar(); }while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); }return x * f;
}typedef double db;
const int N = 500000 + 10, M = 1000000 + 10;
const db eps = 1e-6;
int n, tot;
int to[M], nxt[M], hd[N], a[N], d[N];
db t[N], rt[N];inline void insert(int u, int v){to[++tot] = v; nxt[tot] = hd[u]; hd[u] = tot;to[++tot] = u; nxt[tot] = hd[v]; hd[v] = tot;d[u]++, d[v]++;
}void init(){n = read();for(int i = 1; i <= n; i++) a[i] = read();for(int i = 1; i < n; i++) insert(read(), read());for(int i = 2; i <= n; i++) d[i]--;
}void dfs(int u, int fa){for(int i = hd[u]; i; i = nxt[i]){if(to[i] != fa){t[to[i]] = t[u] + log(d[u]);dfs(to[i], u);}}
}void work(){t[1] = log(1);dfs(1, 0);for(int i = 1; i <= n; i++) rt[i] = log(a[i]) + t[i];sort(rt + 1, rt + n + 1);int tmp = 1, ans = n;for(int i = 2; i <= n; i++)if(rt[i] - rt[i-1] < eps) tmp++;else ans = min(ans, n - tmp), tmp = 1;ans = min(ans, n - tmp);printf("%d\n", ans);
}int main(){init();work();return 0;
}
【bzoj3573】[Hnoi2014]米特运输相关推荐
- BZOJ3573:[HNOI2014]米特运输(树形DP)
Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市 ...
- BZOJ3573: [Hnoi2014]米特运输(树上乱搞)
Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1669 Solved: 1031 [Submit][Status][Discuss] Descri ...
- P3237 [HNOI2014]米特运输
P3237 [HNOI2014]米特运输 第104道题让我洛谷红名. (^ w ^) 题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存 ...
- 洛谷P3237 [HNOI2014]米特运输 题解
洛谷P3237 [HNOI2014]米特运输 题解 题目链接:P3237 [HNOI2014]米特运输 题意: 这题面是真的长啊 qwq 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为 ...
- BZOJ 3573 [HNOI2014]米特运输
题目链接:传送门 冗长冗长的题面: 3573:[HNOI2014]米特运输3573: [HNOI2014]米特运输3573:[HNOI2014]米特运输 Description 米特是D星球上一种非常 ...
- [HNOI2014]米特运输
Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为 ...
- 洛谷P3237 [HNOI2014]米特运输
题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个 ...
- hnoi2014米特运输
思维题 略水 我们一定要用以偏概全的眼光做这道题... 一根节点说明一切 #include <cstdio> #include <cstring> #include < ...
- [HNOI 2014] 米特运输
[HNOI 2014] 米特运输 题目描述 题目 题目描述 输入格式 输出格式 样例输入 样例输出 提示 解题过程 思路 代码 感想 题目描述 一道树形dp 题目 题目描述 米特是D星球上一种非常神秘 ...
最新文章
- 牛客网Wannafly模拟赛
- 织梦的if(!defined('DEDEINC')) exit("Request Error!");解析
- jmeter mysql数据库_jmeter连接mysql数据库
- sncr脱硝技术流程图_SNCR烟气脱硝技术工艺流程示意图
- win11怎样在多屏中设置主显示器 Windows11主显示器的设置方法
- 利用anaconda给pycharm配置python3.7版本的tensorflow虚拟环境的配置
- 面向对象编程——实战1
- 【转】selenium之 定位以及切换frame
- webpack入坑之旅(一)入门安装
- 如何去追女生,看了你就成功了一半
- html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
- 《微信小程序案例12》图片识别功能
- Visual Studio 2017卸载不干净
- 官方Nexus软件下载教程
- word转图片,pdf转图片,doc转图片,docx转图片
- 京东商品详情API、通过商品ID获得京东商品详情
- Java 将带有小数点的字符串转成Integer类型数值
- ENVI 5.3汉化教程(适用于5.3以上版本)
- 日均互动时长突破20亿分钟,即构科技做了什么
- linux 编译缓存,Linux磁盘缓存(disk cache)详解
热门文章
- 快速插入数据mysql数据库
- 将字符串形式的日期转换成日期对象
- 谈计算(cpu)密集型和io密集型与php性能优化
- 基于jeeSite的软件测试课程作业 流程记录
- 图片制作二次元头像,表情很到位哦
- 【NIO】Socket 编程:基于NIO的Server、Client 示例
- 华为计算机和备忘录不见了,华为手机桌面备忘录不见了该怎么办
- 论文阅读笔记《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
- 博学谷python_2020年最新博学谷Python基础班,资源教程下载
- Oracle选择填空题中英文,oracle中英文分开排序