题意

有两棵节点数均为 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. ATL窗口

    标准的Windows应用程序框架: /*------------------------------------------------------------ HELLOWIN.C -- Displ ...

  2. 通过欧拉计划学Rust编程(第54题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...

  3. 用Go语言在Linux下调用新中新DKQ-A16D读卡器,读二代证数据

    1.背景 前几天用Python在Linux下成功的获取了二代证数据,最近正在学Go语言,这两天想着用Go语言也实现一下试看看. 2.开搞C++ 这次就比较简单了,直接把CppDemo里面的SynRea ...

  4. CCF_ 201403-4_无线网络

    分散点的bfs,先建立一个互相是否可达的二维数组,vis[i][j]代表到第i个点,走了j步的状态,注意判断新增路由器数量是否超过K. #include<cstdio> #include& ...

  5. OpenCV3入门(八)图像边缘检测

    1.边缘检测基础 图像的边缘是图像的基本特征,边缘点是灰度阶跃变化的像素点,即灰度值的导数较大或极大的地方,边缘检测是图像识别的第一步.用图像的一阶微分和二阶微分来增强图像的灰度跳变,而边缘也就是灰度 ...

  6. Mysql索引优化简单介绍

    一.关于MySQL联合索引 总结记录一下关于在MySQL中使用联合索引的注意事项. 如:索引包含表中每一行的last_name.first_name和dob列,即key(last_name, firs ...

  7. 《Head first设计模式》学习笔记

    1. 单例模式 2. 工厂模式 3. 抽象工厂 4. 策略模式 5. 观察者模式 6. 装饰者模式 7. 命令模式 8. 适配器模式 9. 外观模式 10. 模版方法模式 11. 迭代器模式 设计模式 ...

  8. pytorch之 Variable

    import torch from torch.autograd import Variable # Variable in torch is to build a computational gra ...

  9. OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol

    gitlab版本为社区版: gitlab-ce_11.5.4-ce.0_amd64.deb 目录:/var/cache/apt/archives 配置邮箱的主要参数: user['git_user_e ...

  10. [CentOS7]Yum 使用代理

    公司服务器只允许YUM出公网 # vi /etc/yum.conf # 添加下面一行 proxy=http://10.1.1.1:55555 # proxy ip:端口 END