Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree(dp)

银河麒麟服务器操作系统V10SP2实战:基于vsftpd构建多角色精细化权限FTP服务 本文详细介绍了在银河麒麟服务器操作系统V10SP2上基于vsftpd构建多角色精细化权限FTP服务的实战指南。从环境准备、核心配置到多角色用户权限管理,全面解析了FTP服务的部署与优化技巧,特别针对企业级应用场景提供了安全加固和故障排查方案。 阅读详情

D. Serval and Rooted Tree
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Now Serval is a junior high school student in Japari Middle School, and he is still thrilled on math as before.

As a talented boy in mathematics, he likes to play with numbers. This time, he wants to play with numbers on a rooted tree.

A tree is a connected graph without cycles. A rooted tree has a special vertex called the root. A parent of a node v is the last different from v vertex on the path from the root to the vertex v. Children of vertex v are all nodes for which v is the parent. A vertex is a leaf if it has no children.

The rooted tree Serval owns has n nodes, node 1 is the root. Serval will write some numbers into all nodes of the tree. However, there are some restrictions. Each of the nodes except leaves has an operation max or min written in it, indicating that the number in this node should be equal to the maximum or minimum of all the numbers in its sons, respectively.

Assume that there are k leaves in the tree. Serval wants to put integers 1,2,…,k to the k leaves (each number should be used exactly once). He loves large numbers, so he wants to maximize the number in the root. As his best friend, can you help him?

Input
The first line contains an integer n (2≤n≤3⋅105), the size of the tree.

The second line contains n integers, the i-th of them represents the operation in the node i. 0 represents min and 1 represents max. If the node is a leaf, there is still a number of 0 or 1, but you can ignore it.

The third line contains n−1 integers f2,f3,…,fn (1≤fi≤i−1), where fi represents the parent of the node i.

Output
Output one integer — the maximum possible number in the root of the tree.

Examples
inputCopy
6
1 0 1 1 0 1
1 2 2 2 2
outputCopy
1
inputCopy
5
1 0 1 0 1
1 1 1 1
outputCopy
4
inputCopy
8
1 0 0 1 0 1 1 0
1 1 2 2 3 3 3
outputCopy
4
inputCopy
9
1 1 0 0 1 0 1 0 1
1 1 2 2 3 3 4 4
outputCopy
5
Note
Pictures below explain the examples. The numbers written in the middle of the nodes are their indices, and the numbers written on the top are the numbers written in the nodes.

In the first example, no matter how you arrange the numbers, the answer is 1.

In the second example, no matter how you arrange the numbers, the answer is 4.

In the third example, one of the best solution to achieve 4 is to arrange 4 and 5 to nodes 4 and 5.

In the fourth example, the best solution is to arrange 5 to node 5.

解析

dp[i]表示这个节点的值在其子节点的所有值的排序

如果一个树结构是确定的话
为了使根节点的值最大,dp就是确定的

两种更新方式
如果是节点类型min,那么这个节点的值就是最小的
就让根节点的值等于子节点的dp值加起来即可
如果节点类型是max,那么这个节点的值就是最大的
这时候dp的最小值即可(因为dp[i]表示这个节点的值在其子节点的所有值的排序 )

code

#include <bits/stdc++.h>

using namespace std;
const int N=3e5+10;
int ar[N];
int dp[N];//表示这个节点的值在其子节点的所有值的排序
vector<int>G[N];
int num=0;
void dfs(int x ){
    if(G[x].size()==0){
        dp[x]=1;
        num++;
        return ;
    }
    for(int i=0;i<G[x].size();i++){
        int y=G[x][i];
        dfs(y);
        if(ar[x]){
            if(dp[x]==0)
                dp[x]=dp[y];
            else
                dp[x]=min(dp[x],dp[y]);

        }
        else {
            dp[x]+=dp[y];
        }
    }
}
int main()
{
    ios::sync_with_stdio(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>ar[i];
    }
    for(int i=2;i<=n;i++){
        int a ;
        cin>>a;
        G[a].push_back(i);
    }
    dfs(1);
    cout<<num+1-dp[1]<<endl;
    return 0;
}

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本) 本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。 阅读详情

相关推荐

机器学习篇-KNN算法实现鸢尾花模型和手写数字识别模型

一个样本最相似的k个样本中的大多数属于某一个类别, 则该样本也属于这个类别类似于: 近朱者赤近墨者黑回归机器建模流程:数据获取数据基本处理(空值和非法值)特征工程(特征提取, 特征预处理(归一化, 标准化), 特征降维, 特征选择, 特征组合)模型训练模型预测模型评估# 1. 定义函数 dm01_load_iris(), 用于加载 鸢尾花数据集, 并简单查看下数据集的各部分.# 1. 加载数据集.​# 2. 打印iris_data, 发现其实是1个: 字典.​。

m0_60916732的博客 2403

Codeforces Round #551 (Div. 2)

D. Serval and Rooted Tree solution:给定一棵树(无环),除叶子节点外,给定每个节点的一个操作为max或min,表示该节点的值等于其所有子节点的值的最大或最小值。现要你给树的k个叶子节点赋予1~k的值(每个数字用一次),是的根节点1的值最大。1<=n<=3e^5 solution:DP思想,dfs实现DP。用dp[i]表示节点i的值是它所有子叶子节点...

wangqianqianya的博客 177

Silvaco TCAD | 从极化效应到高频开关:GaN HEMT仿真设计与性能验证

本文深入探讨了使用Silvaco TCAD进行GaN HEMT仿真设计与性能验证的关键技术。从极化效应到高频开关特性,详细解析了2DEG形成机制、器件结构设计优化及高频特性仿真技巧,帮助工程师提升GaN HEMT的性能与可靠性。通过实战案例展示了如何通过仿真优化击穿电压和导通电阻,实现开关品质因数的显著提升。

weixin_30872337的博客 484

Educational Codeforces Round 46 (Rated for Div. 2)

A. Codehorses T-shirts 题意:找出两份名单中不同衣服大小的个总件数 解法:map模拟一下就行 #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; typedef long long LL; map&amp;lt;string,int&amp;gt;mp,mp2; int main() { int n; cin&amp;gt;...

blue_kid的博客 498

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7520

大数据实时+离线项目架构----智慧物流大数据平台(超流行框架!)

智慧物流大数据平台 文章目录智慧物流大数据平台一、项目背景二、逻辑架构三、解决方案技术亮点:数据流转四、项目的技术选型4.1流式处理平台4.2 分布式计算平台4.3 海量数据存储框架软件版本总结 一、项目背景 本项目基于一家大型物流公司研发的智慧物流大数据平台。该物流公司是国内综合性快递、物流服务商,并在全国各地都有覆盖的网点。经过多年的积累、经营以及布局,拥有大规模的客户群,日订单达上千万。如此规模的业务数据量,传统的数据处理技术已经不能满足企业的经营分析需求。公司需要基于大数据技术构建数据中心,从而挖

weixin_48143996的博客 6430

Codeforces Round #530 (Div. 2) F. Cookies(树形DP+线段树)

题目链接 题意 给你一棵树有n鸽节点,节点编号1-n,每个节点上有xi鸽饼干,每个节点上吃饼干吃一块需要pi时间 再给你每个节点的父亲,和经过这条边所花费时间 刚开始你在起点,两个人轮流进行以下步骤,你先手 你:移动到子节点,或者结束游戏并移动到根节点,选择性吃沿途饼干 对手:删一条你所在节点到儿子的边,或者什么都不做 你现在有T的时间求最多能吃多少饼干。 思路 从根节点开始深搜,对当前点求 当...

←_← 610

ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示

ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真目录一、Gazebo环境搭建前的准备1、将搭建模型下载到我们的gazebo环境下2、升级我们的gazebo版本二、创建配置launch文件参数的world文件1、进入工程包mbot_gazebo2、创建文件夹worlds3、进入该文件夹4、创建playground.world文件5、创建room.world文件三...

qq_42451251的博客 3607

Codeforces Round #551 (Div. 2) 题解

BG 周六超多比赛,为了上分还是只打了cf。。本来想上橙的。。甚至第一次赛前打好了各种模板。。。 被hack到心态崩了 A 很显然我们记r[x]表示时刻x的任意一个bus,跑一个2e5*n的暴力就可以了 挂了是因为只跑了1e5,怀疑人生 Code #include <stdio.h> #include <string.h> #include <math.h&gt...

olahiuj的博客 471

EndNote X9 参考文献附录列表 格式调整

EndNote X9 插入参考文献常见问题总结

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2569

k230 +canMV+ LVGL控件 仿手表表盘触摸屏滚动、选中后弹窗效果完整示例程序

现在智能手表用的越来越多,其交互方式比较有特点,现在k230开发板上,基于LVGL(Light and Versatile Graphics Library)编写一个嵌入式GUI应用程序,使用LVGL配合触摸屏实现模仿智能手表的表盘滚动效果,实际效果如下:程序使用LVGL图形库和MediaManager程序,创建带有触摸屏交互的GUI应用。程序主要功能包括显示初始化、LVGL初始化、创建GUI界面(包含一个可滚动的按钮列表,每个按钮点击会弹出消息框),以及处理触摸屏输入。

weixin_47446386的博客 1175

Codeforces Round #469 (Div. 2) F. Curfew (贪心)

传送门:http://codeforces.com/contest/950/problem/F题目大意:  n个寝室,2个老师查寝,一个按1、2、3……的顺序,另一个按n、n-1、n-2……的顺序。若n为偶数则2个老师每人检查一半;为奇数则中间的寝室第一个老师检查。老师只检查人数,而不管到底是谁,当检查完一个寝室后,老师会把这个寝室的门锁了。  每个寝室应该有b个人,一开始这n*b个人分布在不同的...

__喵喵喵的博客 266

YOLO26优化:注意力魔改 | SKAttention注意力,自适应地调整其感受野大小,效果优于SENet

SKAttention输入自适应地调整其感受野大小的能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 250

【Codeforces Round #551 (Div. 2) D.Serval and Rooted Tree】树形DP

链接 Codeforces Round #551 (Div. 2) D.Serval and Rooted Tree 题意 给你一棵树,每个点上有一个flag,如果flag=0,表示这个点的权值是所有子节点权值中的最小值。如果flag=1,表示这个点的权值是所有子节点权值中的最大值。如果一共有k个子节点,我们可以给每一个子节点安排一个1-k中的权值,但是每个权值只能使用一次,现在想知道根节点权值...

lajiyuan的博客 364

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【 Codeforces Round #551 (Div. 2) D】Serval and Rooted Tree【树形DP】

题意: 给定一棵nnn个节点的树,每个点有一个标志fff,f=1f = 1f=1表示该节点权值等于子节点中权值最大值,f=0f=0f=0表示该节点权值等于子节点权值中权值最小值。假如这棵树中有kkk个叶子节点,则可以对这kkk个叶子节点进行赋值,分别为1−k1-k1−k,不得重复。问根节点权值的最大值为多少。 思路: 这貌似是一个典型的树形DP问题,但是比赛的时候我还是没做出来,菜哭… 本题最直...

lucius-liu.cn 367

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Codeforces Round #551 (Div. 2)-D. Serval and Rooted Tree-树上dp-逆思维

Codeforces Round #551 (Div. 2)-D. Serval and Rooted Tree-树上dp-逆思维 【Description】 Now Serval is a junior high school student in Japari Middle School, and he is still thrilled on math as before. As a t...

Simon的博客,已转移至 https://www.cnblogs.com/--Simon/ 386

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)

https://codeforces.com/contest/1153/problem/D 思路: 用dp[i]表示,结点i最少要有dp[i]个最大的结点肯定被忽略掉(因为题目要求最大化,因此我们希望被忽略掉的最大点尽可能少,所以dp表示的是“最少”的个数)。那么对于整个树,根节点的dp[1]即为整颗树最少要丢弃的结点个数,因此最终答案为k-dp[1]+1(因为我们要选中一个答案,所以少丢弃一个...

Eason的博客 465

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree 树形dp

D. Serval and Rooted Tree 题意:含有nnn个节点,并且以111为根节点的树的每个节点都有一个操作,用010101表示,如果为111,那么就取这个节点的孩子中的最大值,否则取孩子的最小值。问,如何安排可以使得根节点111的值最大。注意如果叶节点有kkk个,那么取值必须是1→k1\rightarrow k1→k。 题解:如果去枚举叶子节点的取值肯定是不可以的了,复杂度过于高,...

Eternally831143的博客 340

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)

题目链接 题意:给你一个有根树,假设有k个叶子节点,你可以给每个叶子节点编个号,要求编号不重复且在1-k以内。然后根据节点的max,minmax,minmax,min信息更新节点的值,要求根节点的值最大。 解法:考虑树形dp,若当前节点是nownownow,我们可以假设编号最大的一些数分布在当前节点的子节点中,显然,若当前节点为叶子节点,那么这个这个编号就是最大的。然后往上回溯,假设当前节点取得是...

pubgoso的博客 193

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (思维 + dp)

传送门:https://codeforces.com/contest/1153/problem/D D. Serval and Rooted Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Now ...

Amo丶 330

Codeforces Round #551 (Div. 2)D D. Serval and Rooted Tree(树形DP+贪心)*

题目链接:http://codeforces.com/problemset/problem/1153/D 题目大意 给定一颗树结构,每个节点上设置了 max和min标志,意味着该节点的值取其son的最大/最小值, 而叶节点上的数取值为1到叶节点总个数并且各不相同. 要求根节点值最大是多少. 题目分析 思考dp值,那么毫无疑问dp转移关系核心在min和max 函数之间,考虑到...

满月照亮的路 198

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)

题目:http://codeforces.com/contest/1153/problem/D 题意:给你一棵树,每个节点有一个操作,0代表取子节点中最小的那个值,1代表取子节点中最大的值,叶子节点的话就是自己置一个值,有k个子节点,那么每个子节点的值范围 就是1-k,1-k只能用一次 思路:贪心不好取,我肯定是要排列完才知道当前的值是哪个,但是我可以知道当前节点应该是取子节点中排名第几的那...

weixin_30748995的博客 129

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree(树形dp)

题目 给定一棵n(n<=3e5)的节点的有根树, 每个节点上有一个op值, op=0代表该点的值取子树中的min值, op=1代表该点的值取子树中的max值, 不妨设树有k个叶子,可以将1到k共k个不重复的值填到叶子中, 使得最后根节点的值最大,输出最大值 思路来源 https://www.cnblogs.com/FrankChen831X/p/10706038.html ...

小衣同学的博客 274

Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree(树形dp)

题目链接:http://codeforces.com/contest/1153/problem/D 题目思路: 对于一个结点,计算他的子树(包含他),他最少排第几名。 怎么转移呢?? 对于叶子节点在他的子树中肯定排名第一,所以dp【叶子】 = 1 ;对于上边的x结点,如果是max标记,那么我要取他儿子中排名最小的那个,他可以选择排在最前边...

qq_41645482的博客 153

Codeforces Round #551 (Div. 2)D. Serval and Rooted Tree (树形dp 思维)

题目链接 题意: 给你一颗以 1 为根的树,树的形状确定,每个节点有一个类型 0 或 1,0 代表该点的权值取其儿子中权值最小的那一个,1 则反之。所有的叶子节点权值为 1 - m(m为叶子节点数量),但是并不知道每个叶子节点的具体权值。最后要求出根(即节点1)的权值最大可能是多少。 题解: 由于叶子节点的权值是不确定的,所以按照普通的递推是行不通的,那么我们可以按照 该节点最大可以排第几...

ttoobne 261

Codeforces Round #551 (Div. 2) :D Serval and Rooted Tree(贪心 + 树形dp)

题目大意:给出一棵树,1号结点为根节点,设该树有k个叶子结点,叶子结点的值可以任意赋值,但必须用[1,k]范围内的数,且每个数只能用一次,除此之外每个结点还有一个权值,权值1代表该结点的值为儿子结点中权值最大的一个值,权值0表示该点的值为儿子结点中最小的值。现在问根节点的最大值是多少? 解法:问题可以转变为,至少要设置多少个叶子结点的值才能使得根节点有值?(看到这句话是否恍然大悟?)若放x个叶子结...

qq_41997978的博客 203
上一篇: 图像的离散余弦变换
下一篇: Codeforces Round #550 (Div. 3) F. Graph Without Long Directed Paths(dfs)
ffgcc
博客等级 码龄9年 32粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值