CF Round #551 (Div. 2) D

链接

https://codeforces.com/contest/1153/problem/D

思路

不考虑赋值和贪心,考虑排名。

设\(dp_i\)是子树i中的i是第dp_i大的(相同大小放在后面)。

\(opt=1,dp_u=max(dp[v])(v\in G)\)

\(opt=0,dp_u=\sum\limits _{v\in G}{dp[v]}\)

dp[1]是1到k中第dp[1]大的,就是k-dp[1]+1

然后\(ans=k-dp[1]+1\)

代码

#include <bits/stdc++.h>
using namespace std;
const int N=4e5+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,opt[N],dp[N],js;
vector<int> G[N];
void dfs(int u) {
if(!G[u].size()) return dp[u]=1,++js,void();
if(opt[u]) dp[u]=0x3f3f3f3f;
for(auto v:G[u]) {
dfs(v);
if(opt[u]) dp[u]=min(dp[u],dp[v]);
else dp[u]+=dp[v];
}
}
int main() {
n=read();
for(int i=1;i<=n;++i) opt[i]=read();
for(int i=2,x;i<=n;++i) x=read(),G[x].push_back(i);
dfs(1);
cout<<js-dp[1]+1<<"\n";
return 0;
}

CF Round #551 (Div. 2) D的更多相关文章

  1. 【Codeforces】Codeforces Round #551 (Div. 2)

    Codeforces Round #551 (Div. 2) 算是放弃颓废决定好好打比赛好好刷题的开始吧 A. Serval and Bus 处理每个巴士最早到站且大于t的时间 #include &l ...

  2. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  3. 思维题--code forces round# 551 div.2

    思维题--code forces round# 551 div.2 题目 D. Serval and Rooted Tree time limit per test 2 seconds memory ...

  4. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  5. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  6. cf Round#273 Div.2

    题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一 ...

  7. Codeforces Round #551 (Div. 2) 题解

    CF1153A 直接做啊,分类讨论即可 #include<iostream> #include<string.h> #include<string> #includ ...

  8. 【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)

    终于打了一场CF,不知道为什么我会去打00:05的CF比赛…… 不管怎么样,这次打的很好!拿到了Div. 2选手中的第一名,成功上紫! 以后还要再接再厉! [A]Check the string 题意 ...

  9. CF Round #509 (Div. 2)

    前言:第一次打\(CF\),因为经验不足以及英语水平很烂,即便在机房大佬的带领下也是花了好久才读懂题目..\(A\)题直到\(11\)分钟才\(A\),题目一共才做了\(4\)题,太菜了.. A. H ...

随机推荐

  1. CF451E Devu and Flowers 数论

    正解:容斥+Lucas定理+组合数学 解题报告: 传送门! 先mk个我不会的母函数的做法,,, 首先这个题的母函数是不难想到的,,,就$\left (  1+x_{1}^{1}+x_{1}^{2}+. ...

  2. nginx修改上传文件大小限制

    问题: 项目上线,图片上传报413错误,找了半天,原来是nginx限制了上传大小 在nginx.conf的server的location中加client_max_body_size 10m;

  3. Docker 私有仓库建立(加密和用户验证)

    (一)生成证书1.mkdir /certs2.cd /certs 3.生成自签名证书 sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days ...

  4. ADB——keyevent命令

    基本格式 adb shell input keyevent xxx # xxx为具体操作对应的数字 keycode 官方 KEYCODE 链接:戳这里 0 KEYCODE_UNKNOWN 未知按键 1 ...

  5. 框架及其技术(Android)

    Log框架: Logger: 简单,漂亮,强大的Android日志工具 Hugo:    在调试版本上注解的触发方法进行日志记录 Timber: 一个小的,可扩展的日志工具 响应式编程: RxJava ...

  6. 循环结构 : while .. for

    # ###循环结构 : while .. for ''' while 循环 可以提高代码的效率,减少代码的冗余 while 条件表达式: code1 code2 如果条件表达式成立,返回True , ...

  7. h5样式布局

    在文字的左面加图标  background: url(../images/hi.png) left no-repeat; 如图所示

  8. 基数排序-LSD

    这个最低位优先的基数排序,非常适合移植到硬件设备中,所以,我们提供一个C源码 —————————————————————————————————————— #include <stdio.h&g ...

  9. ehcarts 四川地图

    vue 首先你要傻子地图就引入进来(没得的地图需要你json请求得到(这个json自己去找),然后你要注册这个地图,echarts有的话就不用注册) import "../../node_m ...

  10. 测试12.2.0.1RAC PDB级别的Failover

    关键步骤:手工添加服务名A并启动(已验证默认的服务名测试验证无法实现Failover) [oracle@db90 ~]$ srvctl add service -db orcl -service A ...