Atcoders [AGC014D] Black and White Tree 题解
AT_agc014_d [AGC014D] Black and White Tree
我们充分发扬人类智慧。
不难发现如果树根确定的情况下,先手会从叶子的父亲开始填,如果填到某两棵子树的白点中刚好是同一个节点,我们就可以直接填这个节点,这样两个儿子中至少有一个被完全白点阻隔,先手获胜。
考虑到树根是不确定的,我们枚举树根,每次暴力判定。注意到枚举度数为 \(1\) 的点是不优的,于是取度数大于 \(1\) 的前 \(100\) 个点枚举就过了。
如果之后被卡了就该位随机选度数大于 \(1\) 的点,应该还是能够过的。
#include <bits/stdc++.h>
using namespace std;
struct edge
{
long long v,nxt;
}e[300000];
long long n,u,v,h[300000],ind[300000],flag=0,cnt=0;
void add_edge(long long u,long long v)
{
e[++cnt].nxt=h[u];
e[cnt].v=v;
h[u]=cnt;
ind[u]++;
}
long long dfs(long long x,long long fa)
{
long long ans=0;
for(int i=h[x];i;i=e[i].nxt)
if(e[i].v!=fa)ans+=dfs(e[i].v,x);
if(ans>1)flag=1;
return (ans!=1);
}
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n-1;i++)scanf("%lld%lld",&u,&v),add_edge(u,v),add_edge(v,u);
long long num=0;
for(int i=1;i<=n;i++)
if(ind[i]>1)
{
num++,dfs(i,0);
if(num>100)break;
}
if(flag)printf("First\n");
else printf("Second\n");
return 0;
}
Atcoders [AGC014D] Black and White Tree 题解的更多相关文章
- 2017国家集训队作业[agc014d]Black and White Tree
2017国家集训队作业[agc014d]Black and White Tree 题意: 有一颗n个点的树,刚开始每个点都没有颜色.Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,B ...
- [agc014d] Black and White Tree(玄学树D)
Description 有一颗n个点的树,刚开始每个点都没有颜色. Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,Bob涂黑,Alice先手. 若最后存在一个白点,使得这个白点所有相邻 ...
- [agc014d] Black and White Tree
Description 有一颗n个点的树,刚开始每个点都没有颜色. Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,Bob涂黑,Alice先手. 若最后存在一个白点,使得这个 ...
- AtCoder 2376 Black and White Tree
D - Black and White Tree Time limit : 2sec / Memory limit : 256MB Score : 900 points Problem Stateme ...
- Codeforces 260D - Black and White Tree
260D - Black and White Tree 思路:把两种颜色先按值sort一下,最小值肯定是叶子,然后把这个叶子和另外一中颜色的一个最小值的节点连接起来,再把这个节点变成叶子,把值减掉就可 ...
- HDU 5905 Black White Tree(树型DP)
题目链接 Black White Tree 树型DP,设$f[i][j]$为以$i$为根的子树中大小为$j$的连通块中可以包含的最小黑点数目. $g[i][j]$为以$i$为根的子树中大小为$j$的 ...
- 【agc014d】Black and White Tree
又是被虐的一天呢~(AC是不可能的,这辈子不可能AC的.做题又不会做,就是打打暴力,才能维持骗骗分这样子.在机房里的感觉比回家的感觉好多了!里面个个都是大佬,个个都是死宅,我超喜欢在里面的!) (↑以 ...
- Codeforces Round #530 (Div. 2):D. Sum in the tree (题解)
D. Sum in the tree 题目链接:https://codeforces.com/contest/1099/problem/D 题意: 给出一棵树,以及每个点的si,这里的si代表从i号结 ...
- POJ 1308 Is It A Tree?--题解报告
Is It A Tree? Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31092 Accepted: 10549 D ...
- C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...
随机推荐
- 关于CH182LED配置的说明
CH182的LED配置有两种模式: 传统LED功能 该功能可通过页7寄存器19控制bit 3-5控制 使用时可将页7寄存器19 bit3 置0 通过bit4-5实现不同模式,默认情况下bit3为0,b ...
- Spring解决创建单例bean,而存在线程不安全问题,的解决方案
一.线程安全问题都是由全局变量.静态变量和类的成员变量引起的.若每个线程中对全局变量.静态变量和类的成员变量只有读操作,而无写 操作,一般来说,这个全局变量是线程安全的,反之线程存在问题 二.因为Sp ...
- vue-element-admin整合服务端代理api
1. 找到vue.config.js,在devServer中编辑如下 devServer: { port: port, open: true, overlay: { warnings: false, ...
- Ubuntu v22.0安装zabbix --1
检查Nginx状态 sudo systemctl status nginx 检查Zabbix Server状态 sudo systemctl status zabbix-server Nginx配置: ...
- MySQL 中的事务隔离级别有哪些?
MySQL 中的事务隔离级别有哪些? 在 MySQL 中,事务隔离级别用于定义一个事务能看到其他事务未提交的数据的程度.MySQL 支持以下四种事务隔离级别,每种级别对并发操作的支持程度和一致性要求不 ...
- 20241107,LeetCode 每日一题,使用 Go 计算两数相加
思路 模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法.每两个节点的值相加,并记录进位. 逐节点相加: 创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值 ...
- ESP32C3语音AI对话代码分析
ESP32C3语音AI对话代码分析 代码:基于立创实战派C3例程删改(LCD屏幕显示,触摸和LVGL)和分析 硬件:立创实战派C3 立创官方例程教程链接:第16章 桌面天气助手 | 立创开发板技术文档 ...
- 为什么重写equals一定也要重写hashCode方法?
简要回答 这个是针对set和map这类使用hash值的对象来说的 只重写equals方法,不重写hashCode方法: 有这样一个场景有两个Person对象,可是如果没有重写hashCode方法只重写 ...
- 鸿蒙 NEXT(二):API12 带来的变革与创新
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- .NET 原生驾驭 AI 新基建实战系列(七):Weaviate ── 语义搜索的智能引擎创新者
引言 随着人工智能和机器学习技术的迅猛发展,向量数据在推荐系统.自然语言处理.图像搜索等领域的应用日益广泛.传统的数据库在处理高维向量数据时往往面临性能瓶颈,而向量数据库的出现为这一问题提供了高效的解 ...