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


思路:参考issue

https://issue-is-vegetable.blog.csdn.net/article/details/107760491?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.control

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=3e5+1000;
typedef int LL;
inline LL read(){LL x=0,f=1;char ch=getchar();   while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL dp[maxn],c[maxn],out[maxn];///dp[i]:到当前i这个节点要花费的最小的>=mid的个数
vector<LL>g[maxn];
void dfs(LL u,LL mid){dp[u]=0;///初始化if(g[u].size()==0){dp[u]=1;return;}LL minv=1e9;for(LL i=0;i<g[u].size();i++){LL v=g[u][i];dfs(v,mid);if(c[u]==1){minv=min(minv,dp[v]);}else if(c[u]==0){dp[u]+=dp[v];}}if(c[u]) dp[u]=minv;
}
int main(void){cin.tie(0);std::ios::sync_with_stdio(false);LL n;cin>>n;for(LL i=1;i<=n;i++) cin>>c[i];for(LL i=2;i<=n;i++){LL fa;cin>>fa;g[fa].push_back(i);out[fa]++;}LL k=0;for(LL i=1;i<=n;i++) if(out[i]==0) k++;LL l=1;LL r=n;while(l<r){LL mid=(l+r+1)>>1;///memset(dp,0x3f,sizeof(dp));这样会在c[u]=0的时候dp[u]+=dp[v]有问题dfs(1,mid);if(k-mid+1>=dp[1]) l=mid;else r=mid-1;}cout<<l<<"\n";return 0;
}

D. Serval and Rooted Tree(思维+树形dp+二分辅助)相关推荐

  1. 【CodeForces - 1153D】Serval and Rooted Tree(树形dp)

    题干: Now Serval is a junior high school student in Japari Middle School, and he is still thrilled on ...

  2. Codeforces1153D-Serval and Rooted Tree(树形dp)

    原题链接:http://codeforces.com/problemset/problem/1153/D 题目原文: D. Serval and Rooted Tree time limit per ...

  3. 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...

  4. Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)

    题目链接 D. Appleman and Tree time limit per test :2 seconds memory limit per test: 256 megabytes input ...

  5. 【牛客 - 303K第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Technology Tree(树形dp,tricks)

    题干: 在星际争霸(StarCraft)中,有3个种族.对于任意一个种族,他们的建筑建造都是有一个顺序的.这个顺序正好是一个树形结构,我们称之为"科技树"(Technology t ...

  6. CF1120D Power Tree(树形DP/构造+差分+最小生成树)

    解法一:树形DP 个人觉得这个方法是比较可能想到的,但是输出方案很恶心 先转换题意:"无论怎样规定叶子的初始点权,都可以通过操作你选择的点来让所有叶子的点权清空"意味着每个叶子节点 ...

  7. bzoj4987: Tree(树形dp)

    Description 从前有棵树. 找出K个点A1,A2,-,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一行两个正整数n,k,表示数的顶点数和需要 ...

  8. D. Nastia Plays with a Tree(树形dp)

    https://codeforces.com/contest/1521/problem/D 思路: 把树上的单链初始时每个点是一个链.然后类似树形dp递归.递归过程中模拟链的断开,拼凑新的链头链尾. ...

  9. 【CF1646D】D. Weight the Tree(树形dp、贪心)

    加权树 题意: 给定一颗树,让你给树上的点赋予权值.定义一个点的权值等于其所有相邻节点的权重之和时,这个点就是 good. 你需要找到一种赋值方法,使得树中 good 点数最多,同时所有顶点的权重总和 ...

最新文章

  1. Zabbix-3.0.3实现微信(WeChat)告警
  2. c++开发工具下载地址
  3. HTML示例08---CSS3概述
  4. C#数组和集合专题2(Array)
  5. 国内外3D视觉优秀的实验室或者团队汇总
  6. Kali-Linux windows 双系统的安装
  7. 计算机主机总线,什么是计算机总线,计算机总线包括什么?
  8. 智芯传感推出高性能低功耗ZXP2绝压压力传感器
  9. 边缘视频监控平台EVS公测上线!
  10. dede php 里加nofollow,浅谈在dede当前位置与下一页中如何利用nofollow
  11. android系统键盘开关
  12. Hexo+Butterfly主题美化
  13. 企业简介和公司介绍快闪PPT模板
  14. JavaWeb+MySql+Tomcat一键部署方案
  15. 中超各主场巡礼(国安观赛指南)
  16. Android12之fatal error: ‘processinfo/ProcessInfoService.h‘ file not found
  17. 2015暑假集训总结
  18. npm ERR! code EJSONPARSE
  19. check the manual that corresponds to your MySQL server version for the right syntax to use near (0)
  20. 2017年高教社杯全国大学生数学建模竞赛题目 B题 “拍照赚钱”的任务定价

热门文章

  1. java如何连接与断开SQL server2008数据库
  2. 使用经验-深度学习云服务器mist GPU
  3. 第一章 初识JVAV
  4. 关于LVGL下物理按键的使用
  5. scikit-learn安装步骤
  6. 4K工业级高清4进1出HDMI自动USB KVM多电脑切换器(MT-HK401)
  7. wpf如何实现按钮的回车事件_c# – 在WPF中模拟Enter键
  8. 农业统计分析系列2-试验设计
  9. 我的世界 服务器文件ess,我的世界指令大全 ess指令用法介绍
  10. 大数据BI可视化应用介绍