D. Serval and Rooted Tree(思维+树形dp+二分辅助)
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+二分辅助)相关推荐
- 【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 ...
- Codeforces1153D-Serval and Rooted Tree(树形dp)
原题链接:http://codeforces.com/problemset/problem/1153/D 题目原文: D. Serval and Rooted Tree time limit per ...
- 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...
- 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 ...
- 【牛客 - 303K第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Technology Tree(树形dp,tricks)
题干: 在星际争霸(StarCraft)中,有3个种族.对于任意一个种族,他们的建筑建造都是有一个顺序的.这个顺序正好是一个树形结构,我们称之为"科技树"(Technology t ...
- CF1120D Power Tree(树形DP/构造+差分+最小生成树)
解法一:树形DP 个人觉得这个方法是比较可能想到的,但是输出方案很恶心 先转换题意:"无论怎样规定叶子的初始点权,都可以通过操作你选择的点来让所有叶子的点权清空"意味着每个叶子节点 ...
- bzoj4987: Tree(树形dp)
Description 从前有棵树. 找出K个点A1,A2,-,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一行两个正整数n,k,表示数的顶点数和需要 ...
- D. Nastia Plays with a Tree(树形dp)
https://codeforces.com/contest/1521/problem/D 思路: 把树上的单链初始时每个点是一个链.然后类似树形dp递归.递归过程中模拟链的断开,拼凑新的链头链尾. ...
- 【CF1646D】D. Weight the Tree(树形dp、贪心)
加权树 题意: 给定一颗树,让你给树上的点赋予权值.定义一个点的权值等于其所有相邻节点的权重之和时,这个点就是 good. 你需要找到一种赋值方法,使得树中 good 点数最多,同时所有顶点的权重总和 ...
最新文章
- Zabbix-3.0.3实现微信(WeChat)告警
- c++开发工具下载地址
- HTML示例08---CSS3概述
- C#数组和集合专题2(Array)
- 国内外3D视觉优秀的实验室或者团队汇总
- Kali-Linux windows 双系统的安装
- 计算机主机总线,什么是计算机总线,计算机总线包括什么?
- 智芯传感推出高性能低功耗ZXP2绝压压力传感器
- 边缘视频监控平台EVS公测上线!
- dede php 里加nofollow,浅谈在dede当前位置与下一页中如何利用nofollow
- android系统键盘开关
- Hexo+Butterfly主题美化
- 企业简介和公司介绍快闪PPT模板
- JavaWeb+MySql+Tomcat一键部署方案
- 中超各主场巡礼(国安观赛指南)
- Android12之fatal error: ‘processinfo/ProcessInfoService.h‘ file not found
- 2015暑假集训总结
- npm ERR! code EJSONPARSE
- check the manual that corresponds to your MySQL server version for the right syntax to use near (0)
- 2017年高教社杯全国大学生数学建模竞赛题目 B题 “拍照赚钱”的任务定价