尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Atcoder [ARC161C] Dyed by Majority (Odd Tree) 题解 [ 绿 ] [ 树的遍历 ] [ 构造 ] [ 贪心 ]

Atcoder [ARC161C] Dyed by Majority (Odd Tree) 题解 [ 绿 ] [ 树的遍历 ] [ 构造 ] [ 贪心 ]
📅 发布时间:2026/6/20 20:42:30

Dyed by Majority (Odd Tree)

想起来无聊,写起来恶心。

首先手模一下,发现叶子节点可以确定它父亲的颜色。这启示我们自底向上确定颜色。

因此考虑在已确定所有儿子的颜色时,确定自己的颜色,此时有两种情况:

  • 儿子中两种颜色出现次数相等:此时自己被染成什么颜色取决于父节点是什么颜色。因此可以直接求出父节点被涂成的颜色。
  • 儿子中两种颜色出现次数不相等:此时自己父亲的颜色不会影响自己的颜色。而为了尽可能满足父节点的要求,因此可以将自己的颜色染为父节点的颜色。

最后判断构造是否合法即可。时间复杂度 \(O(n)\)。

#include <bits/stdc++.h>
#define fi first
#define se second
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi = pair<int, int>;
const int N = 200005;
int n;
bitset<N> col;
int dp[N], tot[N][2], ans[N];
vector<int> g[N];
bool ilg = 0;
void dfs(int u, int fa)
{for(auto v : g[u]){if(v == fa) continue;dfs(v, u);}if(dp[u])tot[fa][ans[u]]++;else{ans[u] = col[fa];tot[fa][ans[u]]++;}if(tot[u][0] == tot[u][1]){int res = col[u];if(dp[fa] && ans[fa] != res) ilg = 1;dp[fa] = 1;ans[fa] = res;}else{if(col[u] == 0 && tot[u][0] < tot[u][1]) ilg = 1;if(col[u] == 1 && tot[u][0] > tot[u][1]) ilg = 1;}
}
void solve() 
{cin >> n;for(int i = 0; i <= n; i++){g[i].clear();dp[i] = tot[i][0] = tot[i][1] = 0;}for(int i = 1; i < n; i++){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}for(int i = 1; i <= n; i++){char c;cin >> c;col[i] = (c == 'B');}ilg = 0;dfs(1, 0);if(ilg || dp[0]){cout << "-1\n";return;}for(int i = 1; i <= n; i++){if(ans[i]) cout << 'B';else cout << 'W';}cout << "\n";
}
int main()
{//freopen("sample.in", "r", stdin);//freopen("sample.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--) solve();return 0;
}

相关新闻

  • 做题笔记22
  • 2025.11.4
  • 25.11.4 动态规划dp

最新新闻

  • Switch大气层破解系统:3步解决配置难题与性能优化方案
  • 跨平台游戏串流方案选择与配置实战:打造你的专属游戏云
  • Fate/Grand Automata完整实战指南:高效配置F/GO安卓自动化战斗工具
  • Gemini 3.1 Pro国内合规落地:API直连+本地编排实战指南
  • 2026年抗抑菌剂/消毒产品检测机构推荐:广州市微生物研究所集团专业服务 - 品牌推荐官
  • 2025年厨房家居用品实力厂家推荐:青岛乐博智家密封罐/果盘/冷萃壶全系供应 - 品牌推荐官

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号