首页 > 其他分享 >CF1626E Black and White Tree

CF1626E Black and White Tree

时间:2024-04-13 14:23:03浏览次数:13  
标签:std sz int fa Black White CF1626E dp define

CF1626E Black and White Tree

换根 dp

树上路径行走问题,因其节点的转移不止于其子树有关,一般考虑换根 dp 或寻找新的转移顺序

在这题里,考虑一个以 \(i\) 为点的子树,判断 \(i\) 是否可以走到子树中某个黑点,设 \(f_u\) 表示 \(u\) 能否走到黑点,枚举儿子 \(v\),有三种满足方式:

  1. \(a_u=1\)

  2. \(a_v=1\)

  3. \(f_{v}=1\) 且 \(sum_v>1\)

对于第三种方式,此时 \(u\) 已经求出了以 \(1\) 为根,进入其子树的答案,所以我们只需要考虑是否可以进入 \(v\) 子树中的黑点,那么需要满足 \(v\) 子树中至少有两个黑点才可以。可以套了换根 dp 更好理解。

那么这样的 dp 形式直接用换根 dp 即可。先求出以 \(1\) 为根,所有的 \(f_i\),此时还没考虑全。然后用 \(1\) 节点拓展即可。

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define fi first
#define se second
#define pb push_back

typedef long long i64;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;
const int N = 3e5 + 10;
int n;
std::vector<int> e[N];
int a[N], sz[N], f[N], g[N];
void dfs(int u, int fa) {
	sz[u] = a[u];
	if(a[u]) f[u] = 1;
	for(auto v : e[u]) {
		if(v == fa) continue;
		if(a[v]) f[u] = 1;
		dfs(v, u);
		if(f[v] && sz[v] > 1) f[u] = 1;
		sz[u] += sz[v];
	}
}
void dfs2(int u, int fa) {
	if(f[u] || a[u]) g[u] = 1;
	for(auto v : e[u]) {
		if(v == fa) continue;
		if(a[u]) g[v] = 1;
		if(g[u] && sz[1] - sz[v] > 1) g[v] = 1;
		dfs2(v, u);
	}
}
void Solve() {
	std::cin >> n;
	for(int i = 1; i <= n; i++) std::cin >> a[i];

	for(int i = 1; i < n; i++) {
		int u, v;
		std::cin >> u >> v;
		e[u].pb(v), e[v].pb(u);
	}
	dfs(1, 0);
	dfs2(1, 0);
	for(int i = 1; i <= n; i++) {
		std::cout << g[i] << " \n"[i == n];
	}
}
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
	Solve();

	return 0;
}

标签:std,sz,int,fa,Black,White,CF1626E,dp,define
From: https://www.cnblogs.com/FireRaku/p/18132822

相关文章

  • P5624 [Celeste-A] Black Moonrise 题解
    考虑莫队。记数\(i\)的个数为\(c_i\),套路地用莫比乌斯函数容斥,发现答案为\(\sum_{i=1}^{10^5}\frac{c_i(c_i+1)}2\sum_{d|i}\mu(\fracid)d\)。先预处理出前面的常数和每个数的因子,每次移动端点枚举因子更新答案即可。因为数是随机的,所以时间复杂度\(\mathcalO(n\sqrtn......
  • 关于 NVIDIA 全新 Blackwell AI 超级芯片和架构的了解
    英伟达AI和GPU市场的先锋,最近宣布推出其最新的创新产品BlackwellB200GPU,以及更强大的对应产品GB200超级芯片,以及构成Blackwell。此次发布标志着人工智能处理能力的重大飞跃,巩固了NVIDIA在竞争激烈的行业中的影响力地位。BlackwellB200和GB200的推出恰逢对......
  • 英伟达GTC大会看点:Blackwell芯片、推理微服务NIM、人形机器人
    北京时间3月19日,英伟达创始人兼首席执行官黄仁勋在美国加州圣何塞SAP中心拉开了GTC大会帷幕,这是时隔5年重回线下的会议,现场吸引了11000多名与会者。大会上黄仁勋演讲了长达120分钟的主题分享《见证AI的变革时刻》,并发布了最新技术Blackwell架构、NIM微服务、OmniverseCloudAPI......
  • 【英伟达】GTC 2024|黄仁勋2小时演讲精华版|六大亮点| Blackwell GPU | DGX B200 | NV
    视频地址:https://www.youtube.com/watch?v=zBIddyiMXsU......
  • 英伟达出品:全球最强大芯片Blackwell来了!采用4nm制程,2080 亿个晶体管组,支持10万亿参数
    更多精彩内容在美国加利福尼亚州圣何塞——2024年3月18日 ——NVIDIA于今日宣布推出NVIDIABlackwell平台以赋能计算新时代。该平台可使世界各地的机构都能够在万亿参数的大语言模型(LLM)上构建和运行实时生成式AI,其成本和能耗较上一代产品降低多达25倍。以......
  • NVIDIA公司官宣最新最高性能的GPU芯片及平台 —— Blackwell GPU
    官宣视频:https://www.youtube.com/watch?v=bMIRhOXAjYk相关:https://baijiahao.baidu.com/s?id=1793921686210377001https://www.thepaper.cn/newsDetail_forward_26730622黄仁勋表示,Blackwell将成为世界上最强大的芯片。Blackwell架构的GPU拥有2080亿个晶体管,采用......
  • Pycharm——安装black(代码格式化)
    风格与PEP8编写可读代码的一种简单方式是遵循风格指南,它概述了软件项目应该遵循的一组格式化规则。Python改进提案(PythonEnhancementProposal 简称PEP8)就是由Python核心开发团队编写的这样一种风格指南。PEP8甚至还建议:知道什么时候应该不一致——风格指南的建议并非放之......
  • 中考英语首字母快速突破007-2021上海金山英语二模-A Candlelit Birthday Dinner Durin
    PDF格式公众号回复关键字:ZKSZM007原文​Onmyfather’sbirthday,myparentsandIwentoutfordinner.Therestaurantwasbrightlylitandverynoisy,withlotsofdiners.Waitersmoveb(71)betweenthetables.​Wehadjustorderedourmeal......
  • Android权限警告(not in privapp-permissions whitelist)
    1.现象模块使用了Settings.Global之后,单编模块push到手机里面重启,发现手机卡在开机logo界面,开不了机2.抓取logcat看log打印会发现如下图片中的打印,主要的关键词为Privilegedpermissionsnotinprivapp-permissionswhitelist二.查找源码定位问题(Q的代码)文件路径PermissionM......
  • hdu 5113 Black And White(DFS染色)
    Problem-5113(hdu.edu.cn)hdu没法提交,我以为我账号又崩了...#include<iostream>#include<cstring>usingnamespacestd;intT,n,m,k,kase;intcolor[30],ans[10][10];boolDFS(intx,inty,intcur){if(x>n)returntrue;for(inti=1;i<=k;i++){......