题目

对于每个叶结点u,定义c[u]为从u到根结点的简单路径上第一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。


分析

这道题可以用树形dp,f[x][0/1]f[x][0/1]f[x][0/1]表示x点不着色/着色的最小着色结点个数,
容易得到f[x][0]=∑min(f[son][0]−1,f[son][1])f[x][0]=\sum min(f[son][0]-1,f[son][1])f[x][0]=∑min(f[son][0]−1,f[son][1])
f[x][1]=∑min(f[son][0],f[son][1]−1)f[x][1]=\sum min(f[son][0],f[son][1]-1)f[x][1]=∑min(f[son][0],f[son][1]−1)
初始化时,对于每个叶子节点着色为1,不着色inf,而根节点初始化都是1。


代码

#include <cstdio>
#include <cctype>
#define min(a,b) (a<b)?a:b
using namespace std;
struct node{int y,next;}e[200001];
int n,m,ques[100001],ls[100001],f[200001][2];
int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans;
}
void dp(int x,int fa){if (x<=n) f[x][ques[x]]=1,f[x][ques[x]^1]=1<<23; else f[x][0]=f[x][1]=1;for (int i=ls[x];i;i=e[i].next){if (e[i].y==fa) continue;dp(e[i].y,x);f[x][0]+=min(f[e[i].y][0]-1,f[e[i].y][1]);f[x][1]+=min(f[e[i].y][0],f[e[i].y][1]-1);}
}
int main(){m=in(); n=in();for (int i=1;i<=n;i++) ques[i]=in();for (int i=1,x,y;i<m;i++){x=in(); y=in();e[i]=(node){y,ls[x]}; ls[x]=i;e[i+m]=(node){x,ls[y]}; ls[y]=i+m;}dp(m,0); return !printf("%d",min(f[m][0],f[m][1]));
}

#树形dp#jzoj 1010 洛谷 3155 叶子的颜色相关推荐

  1. 洛谷 P1162填图颜色

    洛谷 P1162填图颜色 题目链接 #include <bits/stdc++.h> using namespace std; int xx[] = {0, -1, 0, 1}; int ...

  2. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  3. 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵

    洛谷 P5020货币系统 https://www.luogu.com.cn/problem/P5020 思路是把货币从小到大排序,然后按顺序依次完全背包dp,每次dp检查i-1种面值的货币能不能凑出第 ...

  4. P1164 小A点菜(DP动态规划,洛谷,java)

    洛谷链接:https://www.luogu.org/problem/P1164 i写成了j,改了nnnnn久!!!! import java.util.Scanner; class Main{pub ...

  5. 【蓝桥杯专题】 DP(C++ | 洛谷 | acwing | 蓝桥)

    菜狗现在才开始备战蓝桥杯QAQ 文章目录 编程实现动态规划的状态转移方程时, 务必分清楚阶段. 状态与决策, 三者应该按照由外向内的顺序依次循环!! ----蓝书 背包问题 01背包 AcWing 3 ...

  6. [树形dp] Jzoj P1046 寻宝之旅

    Description 探险队长凯因意外的弄到了一份黑暗森林的藏宝图,于是,探险队一行人便踏上了寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在黑暗森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一 ...

  7. [树形dp] Jzoj P3914 人品问题

    Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...

  8. P1002 过河卒(dp动态规划,洛谷,java)

    洛谷链接:https://www.luogu.com.cn/problem/P1002 import java.util.Scanner;public class Main { public stat ...

  9. [概率][lca][dfs][树形dp] Jzoj P4225 宝藏

    Description Input Output Sample Input 231 01 221 0 12 0 2 140 12 03 013 0 1 0 1 Sample Output 1.0000 ...

最新文章

  1. dede php 循环,织梦怎么循环调用多级子栏目如二级栏目下三级栏目
  2. 关于服务器的入门知识整理
  3. linux系统迁移的重要配置文件,mylinuxbackup
  4. FreeBSD长模式不兼容
  5. discuz常用变量
  6. overflow 属性
  7. PDF转Word的时候需要输入密码怎么办?
  8. php 每七天执行代码,十天学会PHP之第七天
  9. 华硕 小布 类似机器人_盘点足球赛事背后的高科技 华硕机器人小布化身观赛助理...
  10. Java获取今天是星期几
  11. 【安全牛学习笔记】Kali Linux基本工具
  12. [转]多普达818、828+升级中文WM6.1及必装软件全过程讲解
  13. win10进入bios步骤
  14. UI 设计图 图片 测量工具 马克鳗(破解版)
  15. 从普通程序员到估值上亿的公司老板,他只用了1年!
  16. 浏览器(V8)的垃圾回收机制
  17. Python-pandas:从万德(wind)获取DataFrame形式的宏观经济数据
  18. stm32流水灯c语言程序,stm32流水灯程序源码
  19. 逆袭!Xbox One销量超PS4成英国游戏主机销售冠军
  20. 管理小结(一)明确团队的职责

热门文章

  1. 初级mysql面试题汇总
  2. 飞桨助力动车3C车载智能识别,为动车组运行保驾护航
  3. 嵌入式 iptables防火墙实际使用案例解析
  4. Intel S5500BC
  5. 基于Java毕业设计中小型酒店客房预订系统源码+系统+mysql+lw文档+部署软件
  6. 嵌入式linux录像机,【16路NRV 硬盘录像机 16路嵌入式NVR Linux系统】 - 太平洋安防网...
  7. 什么是站内SEO优化(应该怎么做)
  8. 别小看“Spring过滤器”,这些知识点你必须得掌握
  9. MestReNova for Mac中文版(核磁数据处理软件) v14.2.3有哪些改进?
  10. 小米氮化镓可以给拯救者Y7000充电吗?