bzoj 3573: [Hnoi2014]米特运输

题目好难懂。。

简述题意:给出一棵树,要求满足两个要求:

1.每个节点的子节点权值相等。

2.每个节点的权值和是这个节点的权值。

然后就出最小修改点的数量来满足这个要求。

那么显而易见只要确定一个节点就可以确定群图节点权值。这样枚举是O(n^{2})的。

通过这个结论我们发现只要确定1就可以确定全图,所以可以通过让每一个节点权值不动,然后判断有多少个1最后的值相同,

就是最多有多少个不用动的,因为1选这个值可以同理出这些点不动。用总和减去这个值就是答案。

所以我们可以优化一下,dfs遍历这棵树,每到一个节点的时候就乘上这个点子节点的个数,代表如果这个点被作为不动的值

因为这个节点是子节点的和,所以到这个点不动,就是这层都是这个值,就是它父节点的子节点个数的值,向上推同理。

所以可以从根推下来,到每一个位置只要乘上自己的权值就是这个点不动的时候1的权值。

然后因为值太大了,可以通过两种方式优化,一种是取log,把乘法变成加法。

另一种是找一个模数,把大数拆成这个模数的倍数加余数。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
struct node
{
	int to,nxt;
}edge[1000005];
double cmp(double x,double y)
{
	return x<y;
}
int head[500005],cnt=1,son[500005],val[500005],ans=1,tot;
double f[500005];
void init()
{
	memset(head,-1,sizeof(head));
}
void add(int from,int to)
{
	edge[cnt].to=to;
	edge[cnt].nxt=head[from];
	head[from]=cnt++;
}
void dfs(int u,int fa,double v)
{
	f[u]=v+(double)log((double)val[u]);
	for(int i=head[u];i!=-1;i=edge[i].nxt)
	{
		int to=edge[i].to;
		if(to==fa)continue;
		dfs(to,u,v+(double)log(double(son[u])));
	}
}
int main()
{
	scanf("%d",&n);
	init();
	for(int i=1;i<=n;i++)scanf("%d",&val[i]);
	for(int i=1;i<=n-1;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		add(a,b);add(b,a);
		son[a]++;son[b]++;
	}
	for(int i=2;i<=n;i++)son[i]--;
	dfs(1,1,(double)log(1.0));
	sort(f+1,f+1+n,cmp);
	for(int i=1;i<n;i++)
	{
		if(f[i+1]-f[i]<=1e-9)ans++,tot=max(tot,ans);
		else ans=1;
	}
	printf("%d",n-tot);
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统的研发具有重大的意义,在安全性方面,用户使用浏览器访问网站时,采用注册和密码等相关的保护措施,提高系统的可靠性,维护用户的个人信息和财产的安全。在方便性方面,促进了校园失物招领网站的信息化建设,极大的方便了相关的工作人员对校园失物招领网站信息进行管理。 本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布寻物启事等功能。 管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限。管理员可以通过选择失物招领管理,管理相关的失物招领信息记录,比如进行查看失物招领信息标题,修改失物招领信息来源等操作。管理员可以通过选择公告管理,管理相关的公告信息记录,比如进行查看公告详情,删除错误的公告信息,发布公告等操作。管理员可以通过选择公告类型管理,管理相关的公告类型信息,比如查看所有公告类型,删除无用公告类型,修改公告类型,添加公告类型等操作。寻物启事管理页面,此页面提供给管理员的功能有:新增寻物启事,修改寻物启事,删除寻物启事。物品类型管理页面,此页面提供给管理员的功能有:新增物品类型,修改物品类型,删除物品类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值