D. Bandit in a City(DFS + 叶子节点数目)

news2024/11/15 18:36:40

Problem - 1436D - Codeforces

 

输出标准输出
城市里出现了强盗! 他们中的一个正试图尽可能多地抓捕市民。

这个城市由n个广场组成,由n-1条道路连接,从任何其他广场都可以到达任何广场。1号广场是主广场。

星期天散步后,所有的道路都改为单行道,这样就有可能从主广场到达任何一个广场。

当强盗出现在主广场的时候,第i个广场上有ai个公民。现在,以下过程将开始。首先,每个目前在有一些出城单行道的广场上的公民选择其中一条道路,并沿着它移动到另一个广场。然后,强盗选择一条从他所在的广场发出的单行道,并沿着它移动。这个过程重复进行,直到强盗位于一个没有出城道路的广场。匪徒抓住了该广场上的所有公民。

匪徒想抓尽可能多的市民;市民则想尽量减少被抓的人数。匪徒和公民在任何时候都知道所有公民的位置,公民可以合作。如果双方都采取最佳行动,将有多少公民被抓?

输入
第一行包含一个整数n--城市中的方块数(2≤n≤2⋅105)。

第二行包含n-1个整数p2,p3...pn,意味着从广场pi到广场i有一条单行道(1≤pi<i)。

第三行包含n个整数a1,a2,...,an--最初每个广场上的公民数量(0≤ai≤109)。

输出
打印一个整数--如果双方都采取最佳行动,强盗将捕获的公民数量。

例子
输入
3
1 1
3 1 2
输出
3
输入
3
1 1
3 1 3
输出
4
注意
在第一个例子中,1号方格的公民可以分成2+1两组,因此2号和3号方格将各有3名公民。

在第二个例子中,无论公民如何行动,强盗至少可以抓到4个公民。

题解:
根据题意我们可以发现,强盗只能从一棵子树的根部,不断往下遍历,不可往回走,同样,公民也无法往回走,但是公民可以向他所在的子树分配公民,使强盗抓到的人最少,要想抓到的人最少,肯定会不断平均往下分配公民,导致最终的结果就是,一个子树的sum[i]/子树叶子节点数量son[i]

分配公民时存在两种情况

1.如果存在一个儿子v,使得就算不给v分配一个居民,最后还是v子树内的叶子节点居民最大,那么就把问题规模缩小成以v为根的子树了(其他儿子就没用了)

2.如果不存在这种儿子v ,就存在一种分配方式使得所有叶子节点尽量平均

最终所有的情况一最后都变成了情况二

由于强盗也同样聪明,最后肯定会找遍历途中最大的

#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
#include<stack>
using namespace std;
long long s[200050];
long long son[200050];
long long a[200050];
vector<int> p[200050];
void dfs(int u)
{
	int f = 0;
	s[u] = a[u];
	for(int i = 0;i < p[u].size();i++)
	{
		int j = p[u][i];
		dfs(j);
		f = 1;
		son[u] += son[j];
		s[u] += s[j]; 
	}
	if(!f)
	son[u] = 1;
}
void solve()
{
	int n;
	cin >> n;
	for(int i = 2;i <= n;i++)
	{
		int x;
		cin >> x;
		p[x].push_back(i);
	}
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	dfs(1);
	long long ans = 0;
	for(int i = 1;i <= n;i++)
	{
		ans = max(ans,s[i]/son[i]+(s[i]%son[i]!=0));
	}
	cout<<ans;
}
int main()
{
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve();
	}
}
//
//abcdef
//babcdef
//1110011

//


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app —— 小程序登录功能的相关实现

文章目录 前言一、示例图二、静态页面的搭建 1.登录页面的静态页面css样式设置2.我的页面的静态页面css样式设置三、登录页面的实现逻辑 1.进行表单验证的组件2.验证登录成功的思路3.具体代码实现一、示例图 二、静态页面的搭建 实现思路&#xff1a; 主要需要实现的功能点&am…

企业为什么做不好生产计划?

生产计划是企业对生产任务作出统筹安排&#xff0c;具体拟定生产产品的品种、数量、质量和进度的计划。是企业经营计划的重要组成部分&#xff0c;是企业进行生产管理的重要依据。既是实现企业经营目标的重要手段&#xff0c;也是组织和指导企业生产活动有计划进行的依据。企业…

【微服务】SpringCloud微服务注册源码解析

目录 一、前言 1、简述 2、SpringCloudCommons 项目 二、客户端服务注册 1、流程图 2、入口 2.1、客户端注册引入依赖 3、EurekaServiceRegistry服务注册机 3.1、EurekaServiceRegistry注册逻辑 4、ApplicationInfoManager 4.1、setInstanceStatus(InstanceStatus s…

【区块链技术与应用】(七)

资料来源 https://pkg.go.dev/github.com/hyperledger/fabric-sdk-go#section-readme https://github.com/hyperledger/fabric-sdk-go https://wiki.hyperledger.org/display/fabric https://github.com/hyperledger/fabric-samples 书接上回&#xff0c;补充getway链码分析 上…

maven assembly打包生成Java应用启动脚本bat和sh

1. maven插件介绍 springboot应用通过maven插件appassembler-maven-plugi生成启动脚本bat和sh。根据官网介绍&#xff0c;这个插件主要用于生成启动 java应用程序的脚本&#xff0c;能将项目依赖jar能够打包目录中&#xff0c;并且它们加入启动脚本类路径中。 主要命令 appas…

springboot瑞吉外卖

创建数据库,项目初始化静态资源不在static目录下&#xff0c;如何映射结果类登录过滤器拦截路径全局异常处理器分页查询消息转换器修改禁用分页编辑公共字段自动填充使用ThreadLocal新增用户绑定的数据不可删除上传下载前端传递的数据&#xff0c;不在同一张表时&#xff0c;DT…

java设计模式之策略模式

一&#xff1a;策略模式 1.什么是策略模式? 模板方法模式是一种行为设计模式&#xff0c; 它在超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 策略模式的基本介绍 1.策略模式&#xff08;Strategy Pattern&#xff09;中&#x…

【MQ基本概念 MQ的工作原理】

一、MQ基本概念 1、MQ概述 MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存 消息的容器。多用于分布式系统之间进 行通信。 小结 MQ&#xff0c;消息 队列&#xff0c;存储消息的中间件 分布式系统通信两种方式&#xff1a;直接远程…

2022年数维杯D题 极端天气问题思路指导

D题损失评估与应对策略的研究三重拉尼娜事件下的极端气候灾害 很明显D题是一个数据收集➕数据处理类型题目&#xff0c;这与美赛中的E题题型相似。该题所涉及的极端天气与2021年小美赛极端天气题目高度相似。因此&#xff0c;我们首先对大家整理了去年小美赛极端天气的相关论文…

Kubeadm搭建kubernetes集群

Kubeadm搭建kubernetes集群 环境说明 | 角色 | ip | 操作系统 |组件 | | – | – | – | | master | 192.168.226.10 |centos8 | docker&#xff0c;kubectl&#xff0c;kubeadm&#xff0c;kubelet | | node1 | 192.168.226.20 |centos8 |docker&#xff0c;kubectl&#xff…

登陆拦截案例

登陆拦截案例 登陆拦截器小案例&#xff0c;判断登陆的用户名及密码是否正确&#xff1b;&#xff1a; 1.创建一个maven项目&#xff0c;导入相关的坐标&#xff1a; <dependencies><dependency><groupId>org.springframework</groupId><artifact…

【Hack The Box】windows练习-- Blackfield

HTB 学习笔记 【Hack The Box】windows练习-- Blackfield &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &…

[Games 101] Lecture 10 Geometry 1 (Introduction)

Geometry 1 (Introduction) Ways to Represent Geometry 隐式 (Implicit) 几何 只告诉点满足某种约束或关系&#xff0c;并不给出实际的点&#xff0c;也就是说&#xff0c;定义 f(x,y,z)0f(x,y,z) 0 f(x,y,z)0 例如&#xff0c;定义三维空间中的点&#xff0c;满足&#…

上海亚商投顾:信创概念掀涨停潮

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪指数早盘低开低走&#xff0c;沪指一度跌超1%&#xff0c;失守3100点关口&#xff0c;创业板指盘中跌逾2%&#xff…

软件工程毕业设计 SSM计算机毕设项目合集【源码+论文】

文章目录前言 题目1 : 基于SSM的网上租车系统 <br /> 题目2 : 基于SSM的药品管理系统 <br /> 题目3 : 基于SSM的药源药品商城保健品购物网站 <br /> 题目4 : 基于SSM的疫情防控物业管理系统 <br /> 题目5 : 基于SSM的音乐网站 <br />前言 &…

如何通过更好的文档管理减轻小型企业的压力

如何通过更好的文档管理减轻小型企业的压力 企业如何处理企业文档在很大程度上体现了企业以目前的形式茁壮成长的能力以及在当今的市场中成长为成熟的、有竞争力的实体的能力。 具体来说&#xff0c;在小型企业中&#xff0c;许多员工都需要承担多种职责&#xff0c;每一分钟…

代码随想录58——单调栈:739每日温度、 496下一个更大元素I

文章目录1.739每日温度1.1.题目1.2.解答1.2.1.单调栈使用情况1.2.2.本题解答2. 496下一个更大元素I2.1.题目2.2.解答1.739每日温度 参考&#xff1a;代码随想录&#xff0c;739每日温度&#xff1b;力扣题目链接 1.1.题目 1.2.解答 1.2.1.单调栈使用情况 首先想到的当然是暴…

通过STM32Cube配置完成基于I2C协议的AHT20温湿度传感器的数据采集

文章目录前言一、I2C协议1、应用2、组成3、软件I2C和硬件I2C3.1软件I2C3.2硬件I2C二、通过硬件I2C协议采集AHT20的数据1、配置项目2、配置代码三、效果四、总结五、参考资料前言 硬件&#xff1a;stm32f103c8t6 核心板软件&#xff1a;STM32CubeMX 6.4.0软件&#xff1a;keil5…

java常见集合框架的区别

1.说说有哪些常见集合&#xff1f; 集合相关类和接口都在java.util中&#xff0c;主要分为3种&#xff1a;List&#xff08;列表&#xff09;、Map&#xff08;映射&#xff09;、Set(集)。 Java集合主要关系 其中Collection是集合List、Set的父接口&#xff0c;它主要有两个子…

澳大利亚博士后招聘|国立大学—太阳能电池方向

【国外博士后招聘-知识人网】澳大利亚国立大学博士后—太阳能电池方向 澳大利亚国立大学&#xff08;The Australian National University&#xff09;&#xff0c;简称ANU&#xff0c;始建于1946年&#xff0c;坐落于澳大利亚首都堪培拉&#xff0c;是公立研究型综合类大学&am…