luogu P3237 [HNOI2014]米特运输
谢特运输
先要搞懂题目是什么意思,简化版题意就是一棵有根树,要使得每个点都满足任意一个儿子的权值等于这个点权值除以儿子数量,问最少要修改多少个点的点权
就可以一边dfs求出每个点权值是点1的多少倍,显然一个方案至少要有一个点的权值没有被改,所以一个暴力是枚举某个点权值没有被改,然后算出其他点正确的权值,比较一下就可以得到答案
下面记点\(x\)权值为\(a_x\),正确权值是点1权值的\(b_x\)倍
进一步分析,可以发现一个点\(x\)不改权值,然后另一个点\(y\)也可以不改权值,当且仅当\(\frac{a_x}{b_x}=\frac{a_y}{b_y}\),就只要求出所有\(\frac{a_x}{b_x}\),问题就变成一个集合某个数最多出现了多少次,随便搞即可
然后恭喜您收获了金色传说\(\color{#FFD700}{WA}\),这精度损失大的无法想象
考虑优化精度,首先把\(b_x\)的定义改为一个点权值应该为点1权值的\(\frac{1}{b_x}\),然后推的时候只要乘法了,比较也只要\(a_xb_x=a_yb_y\)
其实还是不行,随便构造他能给你整出\(b_x=2^{100000}\),所以可以取对数,因为\(log(MN)=logM+logN\),然后上文所有乘法就可以改成加法,就能偷税的通过此题
#include<bits/stdc++.h>
#define LL long long
#define ldb long double
#define il inline
#define re register
using namespace std;
const int N=5e5+10;
il int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int to[N<<1],nt[N<<1],hd[N],dg[N],tot=1;
il void add(int x,int y)
{
++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot;
++tot,to[tot]=x,nt[tot]=hd[y],hd[y]=tot;
++dg[x],++dg[y];
}
ldb a[N],b[N];
int n,ans;
void dfs(int x,int ffa)
{
a[x]=a[x]+b[x];
for(int i=hd[x];i;i=nt[i])
{
int y=to[i];
if(y==ffa) continue;
b[y]=b[x]+log(dg[x]-(x>1)),dfs(y,x);
}
}
int main()
{
n=rd();
for(int i=1;i<=n;++i) a[i]=log((ldb)rd());
for(int i=1;i<n;++i) add(rd(),rd());
b[1]=0,dfs(1,0);
sort(a+1,a+n+1);
for(int i=1,j=1;i<=n;++j,i=j)
{
while(j<n&&fabs(a[j+1]-a[j])<1e-5) ++j;
ans=max(ans,j-i+1);
}
printf("%d\n",n-ans);
return 0;
}
luogu P3237 [HNOI2014]米特运输的更多相关文章
- 洛谷 P3237 [HNOI2014]米特运输 解题报告
P3237 [HNOI2014]米特运输 题目描述 米特是\(D\)星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. \(D\)星上有 ...
- 洛谷P3237 [HNOI2014]米特运输(树形dp)
解题报告 题干 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都. ...
- 洛谷P3237 [HNOI2014]米特运输
题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个 ...
- 洛谷 P3237 [HNOI2014]米特运输
题面链接 get到新技能当然要来记录一下辣 题意:给一棵树,每个点有一个权值,要求同一个父亲的儿子的权值全部相同,父亲的取值必须是所有儿子的权值和,求最少的修改数量 sol:自己瞎鸡巴yy一下可以发现 ...
- Luogu 3237 [HNOI2014]米特运输
BZOJ 3573 发现当一个点的权值确定了,整棵树的权值也会随之确定,这个确定关系表现在根结点的总权值上,如果一个点$x$的权值为$v$,那么一步步向上跳后,到根节点的权值就会变成$x*$每一个点的 ...
- BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash 题意: 给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等. 分析: 首先我们 ...
- bzoj 3573: [Hnoi2014]米特运输
3573: [Hnoi2014]米特运输 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星 ...
- 【bzoj3573】[HNOI2014]米特运输
题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城 ...
- 3573: [Hnoi2014]米特运输 - BZOJ
Description米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号 ...
随机推荐
- 洛谷P2762 太空飞行计划问题
这题套路好深......没想渠. 题意:给你若干个设备,若干个任务. 每个任务需要若干设备,设备可重复利用. 完成任务有钱,买设备要钱. 问最大总收益(可以什么任务都不做). 解:最大权闭合子图. 对 ...
- C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码
本文介绍在 C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码.网上文章大多只是简单介绍内置参数的设置,根据我的使用目的,增加了自定义目标二维码图片尺寸和白边 ...
- win32: 静态控件(Static) - SS_NOTIFY - 响应事件
SS_NOTIFY 在缺省情况下,静态控件是不响应鼠标事件的.只有在设置该风格后,当用户单击静态 控件时,静态控件才向父窗口发送STN_CLICKED通知 -> WM_COMMAND. 2014 ...
- 第八节、图片分割之GrabCut算法、分水岭算法
所谓图像分割指的是根据灰度.颜色.纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性.我们先对目前主要的图像分割方法做个概述,后面再 ...
- java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...
- Unity 着色过程
图形API包括:OpenGL.Metal.Vulkan.Director3D. 渲染管线(图形管线)通用结构: 1.数据收集(图形的网格.纹理.材质)--------2.顶点着色器(获取图形的2D坐标 ...
- 关于JAVA-JS-JSP之间传值的各种方法
https://blog.csdn.net/murex_dustyone/article/details/52945552 这篇博文写的非常好,保存下来,一起学习
- (栈)leetcode856 Score of Parentheses
Given a balanced parentheses string S, compute the score of the string based on the following rule: ...
- SQL语法基础之INSEART语句
SQL语法基础之INSEART语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.查看INSERT方法的帮助信息 mysql> ? INSERT ...
- script ajax / XHR / XMLHttpRequest
s 利用XHR 调试发送form data表单数据,F5键刷新form表单URL ,http请求地址,获取token,提交. 如:http://pcp.cns*****.com/spcp-web/vm ...