[HNOI 2014]米特运输
Description
Input
Output
输出文件仅包含一行,一个整数,表示最少的被重建(即修改储存器容量)的米特储存器的数目。
Sample Input
5
4
3
2
1
1 2
1 3
2 4
2 5
Sample Output
HINT
【样例解释】
一个最优解是将A[1]改成8,A[3]改成4,A[5]改成2。这样,2和3运给1的量相等,4和5运给2的量相等,且每天晚上六点的时候,1,2满,3,4,5空,满足所有限制条件。
题目大意
给一棵树,每个点有一个权值,要求修改一些点的权值,使得:
①同一个父亲的儿子权值必须相同
②父亲的取值必须是所有儿子权值之和
题解
有这样一个结论,当这棵树的任何一个节点的权值确定之后,其余所有节点的权值便都可算出来。
例如下图:
若我们确定了 $5$ 号节点的权值为 $x$ ,那么 $7$ 号节点的权值 $y$ 可以算出 $y = \frac{3}{2} \cdot x$ 。
现在我们将每一条边定向,方向为从父亲指向儿子,对于每个节点,统计每个节点的出度,做一遍树上前缀积 $prod_u$ 。例如上图中 $prod_5 = 6$ , $prod_7 = 4$ ,特别地 $prod_1 = 1$ 。
我们假设 $u$ 节点的权值是不变的,那么必然有修改后的根节点的权为 $w = a_u \cdot prod_u$。
记 $f_u = prod_u*a_u$ ,我们将树上 $f_u$ 相同的点放在一组,现在问题就变成了求点数最多的一组的点的个数。
由于乘积过大,直接 $hash$ 。
1 //It is made by Awson on 2018.1.3 2 #include <set> 3 #include <map> 4 #include <cmath> 5 #include <ctime> 6 #include <queue> 7 #include <stack> 8 #include <cstdio> 9 #include <string> 10 #include <vector> 11 #include <cstdlib> 12 #include <cstring> 13 #include <iostream> 14 #include <algorithm> 15 #define LL long long 16 #define LD long double 17 #define Max(a, b) ((a) > (b) ? (a) : (b)) 18 #define Min(a, b) ((a) < (b) ? (a) : (b)) 19 using namespace std; 20 const int N = 500000; 21 const int MOD1 = 1e6+9; 22 const int MOD2 = 1e6+7; 23 const int MOD3 = 1e6-3; 24 25 int a[N+5], u, v, n; 26 struct tt { 27 int to, next; 28 }edge[(N<<1)+5]; 29 int path[N+5], top, degree[N+5]; 30 int hash1[MOD1+5], hash2[MOD2+5], hash3[MOD3+5]; 31 int ans1, ans2, ans3; 32 33 void add(int u, int v) { 34 edge[++top].to = v; 35 edge[top].next = path[u]; 36 path[u] = top; 37 } 38 void dfs(int u, int fa, int num1, int num2, int num3) { 39 int tmp, d = --degree[u]; 40 tmp = ++hash1[(LL)num1*a[u]%MOD1], ans1 = Max(ans1, tmp); 41 tmp = ++hash2[(LL)num2*a[u]%MOD2], ans2 = Max(ans2, tmp); 42 tmp = ++hash3[(LL)num3*a[u]%MOD3], ans3 = Max(ans3, tmp); 43 for (int i = path[u]; i; i = edge[i].next) 44 if (edge[i].to != fa) dfs(edge[i].to, u, (LL)num1*d%MOD1, (LL)num2*d%MOD2, (LL)num3*d%MOD3); 45 } 46 void work() { 47 scanf("%d", &n); 48 for (int i = 1; i <= n; i++) scanf("%d", &a[i]); 49 for (int i = 1; i < n; i++) { 50 scanf("%d%d", &u, &v); 51 add(u, v), add(v, u); ++degree[u], ++degree[v]; 52 } 53 ++degree[1]; 54 dfs(1, 0, 1, 1, 1); 55 printf("%d\n", n-Min(Min(ans1, ans2), ans3)); 56 } 57 int main() { 58 work(); 59 return 0; 60 }
转载于:https://www.cnblogs.com/NaVi-Awson/p/8185482.html
[HNOI 2014]米特运输相关推荐
- [HNOI 2014] 米特运输
[HNOI 2014] 米特运输 题目描述 题目 题目描述 输入格式 输出格式 样例输入 样例输出 提示 解题过程 思路 代码 感想 题目描述 一道树形dp 题目 题目描述 米特是D星球上一种非常神秘 ...
- HNOI 2014 Day1 米特运输
第 3 题:米特运输(meat),运行时限 2s,内存上限 128M,100 分. [问题描述] 米特是 D 星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的 D 星 上,这种米特能源 ...
- 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星球上一种非常 ...
- BZOJ 3573 米特运输
Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N, ...
- 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 ...
- [HNOI2014]米特运输
Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为 ...
最新文章
- 位置信息网 http://www.LocationInfo.net
- 我的第一个python web开发框架(3)——怎么开始?
- linux获取明文密码,linux下抓取内存中明文密码mimipenguin
- Raspberry Pi 2 Model B Pi4J 示例
- 8个球放入3个盒子方式_颜值与美味并存~分享几款私房盒子蛋糕做法,再也不用排队买了...
- java 正则表达式 Matcher
- DDL/DML/DCL/TCL基本概念
- getresourceasstream 路径_Java 获取资源文件路径
- Assembly初识
- 三维扫描+逆向建模+3D打印复刻工艺品
- 转载《港股基础知识大全》
- 慕课网上socket课程的学习
- uva 10099(最短路径)
- 手把手教你ssm整合 超级详细
- 桌面虚拟化中RDS、VDI、IDV、VOI主流的云桌面技术比较(转载)
- windows7下使用mingw和msys编译JEPG源代码
- linux 文件备份工具,四种时下流行 Linux备份工具比较与操作实例
- JavaWeb学习笔记(5)-B站尚硅谷
- 【Golang】golang实现发送微信服务号模板消息
- 比尔盖茨 1974 年简历曝光