BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
题意:
给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等。
分析:
首先我们发现在树中如果确定一个点的权值,那么整颗树的方案就能够确定
问题转化成求哪个方案包含的点最多
如何求包含这个点的是哪个方案?
可以给每个点分配一个新的权值
不妨假设1号点的权值不变
1号点的儿子的权值为原来的权值乘上1号点儿子的个数.......以此类推。
发现权值相同的点在一个方案里
由于权值可能很大,我们随缘取模哈希一下就行
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define LL long long
#define N 500050
int head[N],to[N<<1],nxt[N<<1],val[N],cnt;
int n,son[N],dep[N];
LL now[N];
int h[1930010],p=1910009;
int ans,key[1930010];
inline void add(int u,int v)
{
to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;
}
void insert(LL x)
{
int k=(x%p+p)%p;
while(h[k]&&key[k]!=x)
{
k++;
}
h[k]++;key[k]=x;
ans=max(ans,h[k]);
}
void dfs(int x,int y)
{
int i;
for(i=head[x];i;i=nxt[i])
{
if(to[i]!=y)
{
son[x]++;
}
}
for(i=head[x];i;i=nxt[i])
{
if(to[i]!=y)
{
now[to[i]]=now[x]*son[x]%p;
insert(val[to[i]]*now[to[i]]%p);
dfs(to[i],x);
}
}
}
int main()
{
scanf("%d",&n);
int i,x,y;
for(i=1;i<=n;i++)
{
scanf("%d",&val[i]);
}
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
}
insert(val[1]);
now[1]=1;
dfs(1,0);
printf("%d\n",n-ans);
}
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash的更多相关文章
- 洛谷P3237 [HNOI2014]米特运输(树形dp)
解题报告 题干 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都. ...
- bzoj 3573: [Hnoi2014]米特运输【树形dp+瞎搞】
阅读理解题,题意是以1为根的有根树,每个点有点权,求修改最少点权能使每个点的权值等于其所有子节点权值之和并且每个点的所有子节点权值相等的个数 然后就比较简单了,就是有个技巧是数太大,需要对所有操作都取 ...
- BZOJ_1864_[Zjoi2006]三色二叉树_树形DP
BZOJ_1864_[Zjoi2006]三色二叉树_树形DP 题意: 分析:递归建树,然后DP,从子节点转移. 注意到红色和蓝色没有区别,因为我们可以将红蓝互换而方案是相同的.这样的话我们只需要知道当 ...
- B20J_4027_[HEOI2015]兔子与樱花_树形DP
B20J_4027_[HEOI2015]兔子与樱花_树形DP 题意: 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编 ...
- BZOJ_1040_[ZJOI2008]骑士_树形DP
BZOJ_1040_[ZJOI2008]骑士_树形DP 题意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪 ...
- BZOJ_1060_时态同步_树形DP
BZOJ_1060_时态同步_树形DP 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1060 分析:水水的树形DP. 用儿子的最大值更新父亲, ...
- BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP
BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP 题意:Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...
- BZOJ_4726_[POI2017]Sabota?_树形DP
BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...
- 洛谷 P3237 [HNOI2014]米特运输 解题报告
P3237 [HNOI2014]米特运输 题目描述 米特是\(D\)星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. \(D\)星上有 ...
随机推荐
- 二维码js生成库
jr-qrcode 把字符串生成二维码,并以Base64 URL形式输出. 支持白色二维码,即反色二维码. 兼容性 插件使用了H5的canvas特性进行二维码绘制,最后输出base64 url,因此本 ...
- 深入浅出Java concurrent
看 :http://www.blogjava.net/xylz/archive/2010/07/08/325587.html
- eclipse中英文(等各国语言)版本转换发放
eclipse界面语言的切换方法 1.该方法只支持安装过中文包的eclipse(其实中文包中几乎包含了全世界所有的语言,只是调用了其中的中文简体而已) 2.在桌面的快捷方式中目标的地址后面加上参数-n ...
- VMware虚拟化培训手册
一.VMware虚拟化架构概述 1.1VMware虚拟化架构图 如上图所示,虚拟化由物理主机(即ESXI主机).虚拟化管理程序(vCenter Server).虚拟机(操作系统).存储等基本组成. 1 ...
- j2EE经典面试题
1. hibernate中离线查询去除重复项怎么加条件? dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 2. http协议及端口,sm ...
- java web--DOM
Dom总结dom:文档对象模型的简称.dom的解析:与XML一样遵循同样的规范 将标记型文档解析成一棵DOM树,并将树中的内容都封装成节点对象. 如果html文档过大,同样会造成解析过慢,怎么使用sa ...
- Angular HttpClient upload file with FormData
从sof上找到一个example:https://stackoverflow.com/questions/46206643/asp-net-core-2-0-and-angular-4-3-file- ...
- CentOS, FreeBSD, Ubuntu LTS 维护风格的简单比较
https://jackqq.wordpress.com/2014/06/24/centos-vs-freebsd-vs-ubuntu-lts/ 看到周围的人好多在用或者学 CentOS,忍不住也想看 ...
- Android layout_margin 无效的解决办法
http://www.aichengxu.com/view/31025 1.如果LinearLayout中使用Android:layout_marginRight不起作用,通过测试原来在android ...
- vfd with stm8
2018-01-14 22:50:26 之前写了pt6311的驱动,要做时钟考虑使用stm8做主控,于是乎将之前的驱动移植到stm8上. 顺带熟悉了stm8的操作2333. 上源码: #ifndef ...