【bzoj3573】 Hnoi2014—米特运输
http://www.lydsy.com/JudgeOnline/problem.php?id=3573 (题目链接)
题意
题意是这道题最大的难点→_→
Solution
沙茶树形dp,考虑一定会存在一个节点的权值没有改变,枚举这个点,然后算算根节点的权值要变成多少,对于两个不同的节点,如果它们所对应的根节点的权值相同,那么这两个节点可以不改。可能根节点的权值会很大,我们取对数,hash统计答案。
代码
// bzoj3573
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define HAS 1000007
#define inf (1ll<<60)
#define eps 1e-7
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=500010;
LL r[maxn],a[maxn];
int head[maxn],h[HAS],n,ans,cnt;
struct edge {int to,next;}e[maxn];
struct hash {double w;int cnt,next;}has[maxn]; bool equal(double a,double b) {
return fabs(a-b)<eps;
}
int push(LL id,double w) {
for (int i=h[id];i;i=has[i].next)
if (equal(has[i].w,w)) return ++has[i].cnt;
has[++cnt]=(hash){w,1,h[id]};h[id]=cnt;
return 1;
}
void link(int u,int v) {
e[++cnt]=(edge){v,head[u]};head[u]=cnt;
}
void dfs(int x,double w,LL c) {
ans=max(ans,push(c*a[x]%HAS,w+log(a[x])));
for (int i=head[x];i;i=e[i].next)
dfs(e[i].to,w+log(r[x]),c*r[x]%HAS);
}
int main() {
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%lld",&a[i]);
for (int u,v,i=1;i<n;i++) {
scanf("%d%d",&u,&v);
link(u,v);r[u]++;
}
cnt=0;dfs(1,0,1);
printf("%d",n-ans);
return 0;
}
【bzoj3573】 Hnoi2014—米特运输的更多相关文章
- BZOJ3573:[HNOI2014]米特运输(树形DP)
Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市 ...
- BZOJ3573: [Hnoi2014]米特运输(树上乱搞)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1669 Solved: 1031[Submit][Status][Discuss] Descript ...
- BZOJ3573 HNOI2014米特运输
显然确定一个点的权值后整棵树权值确定.只要算出根节点的权值就能知道两种改法是否等价. 乘的话显然会炸,取log即可.map似乎会出一些问题,sort即可. #include<iostream&g ...
- BZOJ3573 [Hnoi2014]米特运输 【贪心】
题目链接 BZOJ3573 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 ...
- bzoj3573[Hnoi2014]米特运输
http://www.lydsy.com/JudgeOnline/problem.php?id=3573 好吧,虽然这是day1最后一题,但却是最水的一题....(前提:看懂题目) 仔细看题! 仔细看 ...
- 【BZOJ-3573】米特运输 树形DP
3573: [Hnoi2014]米特运输 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1023 Solved: 604[Submit][Statu ...
- BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash 题意: 给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等. 分析: 首先我们 ...
- 洛谷 P3237 [HNOI2014]米特运输 解题报告
P3237 [HNOI2014]米特运输 题目描述 米特是\(D\)星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. \(D\)星上有 ...
- bzoj 3573: [Hnoi2014]米特运输
3573: [Hnoi2014]米特运输 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星 ...
- 【bzoj3573】[HNOI2014]米特运输
题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城 ...
随机推荐
- canvas反向裁剪技巧
我们都知道在canvas 可以通过clip来实现剪裁功能,其步骤一般是先设置要裁剪的区域(路径),然后通过ctx.clip()的实现裁剪,裁剪之后,后续的绘制只能在裁剪的区域显示效果,比如如下一段代码 ...
- Next Generation MSP 和传统MSP的区别
1. 速度 -- 基础架构代码化快速部署 由于物理硬件已经在云上启动并运行,因此配置服务器要快得多.配置完成后,只有当MSP采用DevOps并将环境“基础设施作为代码”时,配置才能快速.云MSP可以轻 ...
- Plasma Cash 合约解读
作者介绍 虫洞社区·签约作者 steven bai Plasma Cash 合约解读 Plasma Cash 合约解读 1. 合约代码 2. 合约文件简单介绍 3. Plasma Cash 的基础数据 ...
- [zabbix] zabbix数据采集频率、数据连续多次异常触发、告警次数、告警频率
数据采集频率:1分钟采集一次 数据连续多次异常触发:连续三次异常才触发告警 告警次数:告警三次 告警频率:每隔10分钟告警一次 默认模板“Template App Zabbix Agent”监控项“A ...
- kafka handler
1.配置kafka 参数文件 在ogg主目录下有示例文件: [root@WH0PRDBRP00AP0013 ogg]# cd AdapterExamples/big-data/kafka/ [root ...
- 利用cocoapods创建基于git的私有库Spec Repo
上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...
- JS特效@缓动框架封装及应用
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.变量CSS样式属性获取/赋值方法 给属性赋值:(既能获取又能赋值) 1)div.style.width 单个赋值:点语法,这个方法比较固定 ...
- web06-PanduanLogin
电影网站:www.aikan66.com 项目网站:www.aikan66.com 游戏网站:www.aikan66.com 图片网站:www.aikan66.com 书籍网站:www.aikan66 ...
- 数据库,总结,新技能get
上来先粘代码吧,这篇本来就不是用来让你们看的,我就是单纯的记录下,嗯~对,总结!!! 首先:first //绑定年份 YearSearch.Items.Clear(); for (int i = Da ...
- 我现在对Git的认识
由于时间关系,我还没能真正的了解什么是Git,只是大致的了解了一下,并且在网上查阅了资料,做了一些总结,以便进一步研读. Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项 ...