题意

有两棵节点数均为 n 的有根树,你需要构造一个序列 \(X_1,X_2,...,X_n\)。使得对于每一棵树的每一个节点, 若令它所有的后代(包括它本身)为 \(a_1,a_2,...,a_k\),则都有 \(abs(X_{a_1} + X_{a_2} +···+ X_{a_k}) = 1\)。 判断是否可行,若可行输出一种可行方案。

做法

\(-1\equiv 1(mod~2)\),这启示我们将\(a_i\)赋为\(\{-1,0,1\}\)
根据儿子的数量可确定一个点的奇偶性

显然得两树各点的奇偶性均相同才有可能行
有个更强的结论是:奇偶性相同一定能构造出可行方案

这样构造:将所有奇点在两棵树上对应位置连边,建立一个虚点连向两棵树根节点,保留原来的边;跑欧拉回路,对于一条路径,我们设立方向(本身一条路径是没有方向的);若存在某奇点第一棵树跑向第二棵树,设为\(-1\),否则设为\(1\),所以偶点设为\(0\)

定义横叉边为两棵树间的边
将欧拉回路拆成若干个有向环。
1类环表示从当前节点向儿子走,然后又从儿子走回当前点
2类环表示从当前节点向儿子走,从父亲边走回当前点(反向也是一样的)
3类环表示从当前节点向父亲边或横叉边走,又从这两个中另一个走回来
4类环表示从当前节点向儿子走,从横叉边走回当前点(反向也是一样的)
这样拆分的好处是可以发现一个环上各点和为\(0\),然后分奇偶点简单讨论一下就可以了。这里不详细展开,可以看这里

AGC018F - Two Trees的更多相关文章

  1. @atcoder - AGC018F@ Two Trees

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定两棵树 A, B.现你需要构造一组值 (X1, X2, .. ...

  2. 【AGC018F】Two Trees 构造 黑白染色

    题目描述 有两棵有根树,顶点的编号都是\(1\)~\(n\). 你要给每个点一个权值\(a_i\),使得对于两棵树的所有顶点\(x\),满足\(|x\)的子树的权值和\(|=1\) \(n\leq 1 ...

  3. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  4. hdu2848 Visible Trees (容斥原理)

    题意: 给n*m个点(1 ≤ m, n ≤ 1e5),左下角的点为(1,1),右上角的点(n,m),一个人站在(0,0)看这些点.在一条直线上,只能看到最前面的一个点,后面的被档住看不到,求这个人能看 ...

  5. [LeetCode] Minimum Height Trees 最小高度树

    For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...

  6. [LeetCode] Unique Binary Search Trees 独一无二的二叉搜索树

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  7. [LeetCode] Unique Binary Search Trees II 独一无二的二叉搜索树之二

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  8. 2 Unique Binary Search Trees II_Leetcode

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  9. Finger Trees: A Simple General-purpose Data Structure

    http://staff.city.ac.uk/~ross/papers/FingerTree.html Summary We present 2-3 finger trees, a function ...

随机推荐

  1. Docker底层架构之容器格式

    最初,Docker 采用了 LXC 中的容器格式.自 1.20 版本开始,Docker 也开始支持新的 libcontainer 格式,并作为默认选项.

  2. Jutil 单元测试

    eclipse 自身集成了jtuil,右击项目,点击bulidpath,addjar,如下所示添加jutil 新建一个Junit的测试类用来测试上面的测试方法,新增Junit的测试类方法如下: // ...

  3. 深入SpringMVC注解

    原文链接:https://blog.csdn.net/chenpeng19910926/article/details/70837756 @Controller 在SpringMVC 中提供了一个非常 ...

  4. 使用PyCharm创建并运行一个Python项目

    (1)首先,在欢迎界面点击“Create New Project”: (2)在“New Project“左侧面板点击”Pure Python“,右侧Location选择自己要创建项目的路径(一般情况, ...

  5. css-box-shadowing

    box-shadow: h-shadow v-shadow blur spread color inset; 注释:box-shadow 向框添加一个或多个阴影.该属性是由逗号分隔的阴影列表,每个阴影 ...

  6. 最大连续和(dp复习)

    最大连续和:给出一段序列,选出其中连续且非空的一段使得这段和最大. stdin: 7 2 -4 3 -1 2 -4 3 stdout: 4 状态转移方程:dp[i]=max(dp[i-1]+a[i], ...

  7. 工业狗转行AI的心路历程

    2020年2月16日,晴 昨晚下了一场雪,大概是晚上八九点的样子,细碎的雪花在无风的夜里直嗖嗖的往下掉,门前的轿车顶上覆了薄薄的一层.路灯下的小巷格外的寂静,裹着我的睡衣在昏黄的灯光下站了许久,冠状病 ...

  8. rc.local 启动内容不生效

    系统版本  CentOS Linux release 7.2.1511 问题 :/etc/rc.local  中的内容 启动机器后不生效 经过检查 /etc/rc.local 是 /etc/rc.d/ ...

  9. php oci 和 pdo_oci 安装

    安装非常复杂,必须记录 CentOS服务器上已有相关环境:apache.php5 需要安装:1.oracle客户端.2.oci8扩展.3.pdo_oci扩展. 一. 准备文件 1) oracle客户端 ...

  10. 无线网络WPA加密算法基础

    2013-11-13 23:08 (分类:网络安全) 对无线没什么认识,总听说有人蹭网,还有卖蹭网器的,于是补充一下知识. 无线加密有两类:WEP WAP,目前采用WEP加密的非常少了,WEP应该只是 ...