题意

有两棵节点数均为 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. 《ASP.NET Core 高性能系列》ASP.NET Core的启动过程(1)

    一.一切从头开始 简述:知道事情的真相就应该从头 开始,下面我们代码先行 public class Program { public static void Main(string[] args) { ...

  2. Leetcode 题目整理-7 Remove Element & Implement strStr()

    27. Remove Element Given an array and a value, remove all instances of that value in place and retur ...

  3. 安装jrebel并激活

    1.File-Settings-Plugins搜索jrebel,找到JRebel for IntelliJ ,点击install(我这里已经安装过了,所以显示的是更新) 2.重启idea 3.激活步骤 ...

  4. OGG主从表结构不同步,出现OGG-01296错误

    一.Cause ogg的err日志出现以下报错 2019-09-10 16:36:55 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, ...

  5. Cobaltstrike指令/beacon命令大全

    browserpivot 注入受害者浏览器进程bypassuac 绕过UACcancel 取消正在进行的下载cd 切换目录checkin 强制让被控端回连一次clear 清除beacon内部的任务队列 ...

  6. 自己动手开发手机APP控制西门子200smart 教程(原创干货)

    自己动手开发手机APP控制西门子200smart 教程(原创干货)   自己动手开发手机APP控制西门子200smart 教程(原创干货) 2020-02-09 19:06:45 自己动手开发手机AP ...

  7. Python中heapq与优先队列【详细】

    本文始发于个人公众号:TechFlow, 原创不易,求个关注 今天的文章来介绍Python当中一个蛮有用的库--heapq. heapq的全写是heap queue,是堆队列的意思.这里的堆和队列都是 ...

  8. 好机会,我要帮女同事解决Maven冲突问题

    任何一个故事起因最重要 任何一个职业,女生都有绝对的优势.更别提IT行业了,在部门中要是有女程序猿那肯定是香饽饽,备受呵护呀. 之前有一次,一位刚来的妹子遇到问题了,画风顿时就变成上面的图片了,群起而 ...

  9. 通过域名直接访问Linux服务器中的项目

    参考:https://blog.csdn.net/m0_37802616/article/details/87623077 https://blog.csdn.net/u013176571/artic ...

  10. 【C/C++】概念: VC虚函数布局引发的问题

    在网上看到一个非常热的帖子,里面是这样的一个问题: 在打印的时候发现pFun的地址和 &(Base::f)的地址竟然不一样太奇怪了?经过一番深入研究,终于把这个问题弄明白了.下面就来一步步进行 ...