51Nod1253 Kundu and Tree 容斥原理】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1253.html 题目传送门 - 51Nod1253 题意 树包含 N 个点和 N-1 条边.树的边有 2 中颜色红色 ('r') 和黑色 ('b') .给出这 N-1 条边的颜色,求有多少节点的三元组 (a,b,c) 满足:节点 a 到节点 b .节点 b 到节点 c .节点 c 到节点 a 的路径上,每条路径都至少有一条边是红色的.注意 (a,b,c) , (b,a,c) 以及所有其他排列被认为…
[传送门:51nod-1253] 简要题意: 给出一棵n个点的树,树上的边要么为黑,要么为红 求出所有的三元组(a,b,c)的数量,满足a到b,b到c,c到a三条路径上分别有至少一条红边 题解: 显然黑边是没用的,那么我们将只有黑边相连的点分成若干的连通块 那么答案就很显然了,容斥一手 就是(所有三元组的数量)-(三个点都在一个连通块的数量)-(两个点在一个连通块,另一个不在的数量) 参考代码: #include<cstdio> #include<cstring> #include…
树包含N个点和N-1条边.树的边有2中颜色红色('r')和黑色('b').给出这N-1条边的颜色,求有多少节点的三元组(a,b,c)满足:节点a到节点b.节点b到节点c.节点c到节点a的路径上,每条路径都至少有一条边是红色的. 注意(a,b,c), (b,a,c)以及所有其他排列被认为是相同的三元组.输出结果对1000000007取余的结果.     Input 第1行:1个数N(1 <= N <= 50000) 第2 - N行:每行2个数加一个颜色,表示边的起始点和结束的以及颜色. Outp…
点此看题面 大致题意: 给你一棵树,每条边为黑色或红色, 求有多少个三元组\((x,y,z)\),使得路径\((x,y),(x,z),(y,z)\)上都存在至少一条红色边. 容斥 我们可以借助容斥思想,用总方案数减去不合法方案数,就可以得到合法方案数. 一个不合法方案,就要使得路径\((x,y),(x,z),(y,z)\)中,至少存在一条路径是全黑的. 如果我们删去树上的红色边,只留下黑色的边.则可以发现,一个不合法方案,满足至少存在两个点在同一个连通块内. 计算答案 考虑用并查集,统计每一个连…
Learnt from here: http://www.cnblogs.com/lautsie/p/3798165.html Idea is: we union all pure black edges so we get 1+ pure black edge groups. Then we can simply pick only 1 vertex from each pure-black group to form a triangle. Then it will be all combi…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1253 全为红边的情况下,ans=C(n,3).假设被黑边相连的点形成一个特殊的连通块,在一个大小为x的连通块形成的过程中,ans减去cal(x)=C(x,3)+(n-x)*C(x,2) 代码如下 #include<bits/stdc++.h> using namespace std; typedef long long LL; ; ; int fa[N];…
题目链接 https://atcoder.jp/contests/arc101/tasks/arc101_c 题解 直接容斥.题目要求每一条边都被覆盖,那么我们就容斥至少有几条边没有被覆盖. 那么没有被覆盖的几条边一个可以把整棵树划分成很多连通块,每一块的贡献就是 \((siz-1)!!\).(\(x!!=x(x-2)(x-4)\cdots\)) 然后就可以 dp 了. 令 \(dp[x][i][j]\) 表示以 \(x\) 为根的子树内,\(x\) 位于一个大小为 \(i\) 的联通块,子树内…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1253 所有的三元组的可能情况数有ans0=C(n,3).然后减去不符合条件的情况数. 假设被黑边相连的点形成一个特殊的连通块,在一个大小为x的连通块形成的过程中,ans减去cal(x)=C(x,3)+(n-x)*C(x,2) 代码如下 #include<bits/stdc++.h> using namespace std; typedef long lon…
推荐YCB的总结 推荐你谷ysn等巨佬的详细题解 大致流程-- dfs求出当前树的重心 对当前树内经过重心的路径统计答案(一条路径由两条由重心到其它点的子路径合并而成) 容斥减去不合法情况(两条子路径在重心的子树内就已经相交) 删除重心(打上永久标记),对子树继续处理,转1 求重心是板子,算答案的方法要依题而定,一般都要容斥. 模板题洛谷传送门 calc函数中,头尾两个指针扫的计数方法也是一种套路 因为要sort,所以复杂度\(O(n\log^2n)\),不过蒟蒻实测你谷数据\(k\)不超过\(…
题意:求树中点对距离<=k的无序点对个数. 解题关键:树上点分治,这个分治并没有传统分治的合并过程,只是分成各个小问题,并将各个小问题的答案相加即可,也就是每层的复杂度并不在合并的过程,是在每层的处理过程. 此题维护的是树上路径,考虑点分治. 点分治的模板题,首先设点x到当前子树跟root的距离为,则满足${d_x} + {d_y} \le k$可以加进答案,但是注意如果x,y在同一棵子树中,就要删去对答案的贡献,因为x,y会在其所在的子树中在计算一次.同一棵子树中不必考虑是否在其同一棵子树中的…
题意: 给n*m个点(1 ≤ m, n ≤ 1e5),左下角的点为(1,1),右上角的点(n,m),一个人站在(0,0)看这些点.在一条直线上,只能看到最前面的一个点,后面的被档住看不到,求这个人能看到多少个点. 知识点: 容斥原理:(容许) 先不考虑重叠的情况,把包含于某条件中的所有对象的数目先计算出来,(排斥)然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复. 公式:          奇加偶减 一般求互质个数若用欧拉函数不好解决,则从反面考虑,用容斥. 模板: void…
H - Visible Trees Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2841 Description There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) poi…
CF916E Jamie and Tree 题意翻译 有一棵\(n\)个节点的有根树,标号为\(1-n\),你需要维护一下三种操作 1.给定一个点\(v\),将整颗树的根变为\(v\) 2.给定两个点\(u, v\),将\(lca(u, v)\)所在的子树都加上\(x\) 3.给定一个点\(v\),你需要回答以\(v\)所在的子树的权值和 输入输出格式 输入格式: The first line of input contains two space-separated integers \(n\…
Puzzled Elena Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1162    Accepted Submission(s): 339 Problem Description Since both Stefan and Damon fell in love with Elena, and it was really dif…
Visible Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2577    Accepted Submission(s): 1102 Problem Description There are many trees forming a m * n grid, the grid starts from (1,1). Farm…
\(\rm thx\):@\(\rm UntilMadow\) ! \(\color{Green}{\rm Pupil}\) :只会一点点 \(\color{blue}{\text{Expert}}\) :已经掌握了,基本可以用了 \(\color{orange}{\text{Master}}\) :已经很熟练了 \(\rm\color{Black}L\color{Red}{egendary\ Grandmaster}\) :已经在全世界数一数二的了 算法基础 枚举 \(\qquad\color…
题意:给一个n个点的图和一个n个点的树,求图和树上的点一一对应的方案数.(N<=17) 解法:1.在树的结构上进行tree DP,f[i][j]表示树上点 i 对应图上点 j 时,这个点所在子树的方案数.O(n^3). 2.我们可以发现如果按这个定义进行DP,"一 一对应"的关系挺难保证.若枚举出全排列得到对应关系,这样就C(n,n)=n! 只能拿到暴力分:那么我们就不限制"一 一对应"而改为"一对多"的关系进行tree DP,利用容斥原理…
二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现.由于篇幅有限,此处仅作一般介绍(如果想要完全了解二叉树以及其衍生出的各种算法,恐怕要写8~10篇). 1)二叉树(Binary Tree) 顾名思义,就是一个节点分出两个节点,称其为左右子节点:每个子节点又可以分出两个子节点,这样递归分叉,其形状很像一颗倒着的树.二叉树限制了每个节点最多有两个子节…
树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view)那种专门的树视图类型.我们可以认为树视图是表视图的一种特例.因此,没有可以用于创建树视图的向导,需要按以下特定的步骤手动改造已存在的视图. 首先,这个看起来挺难的,但是随着实践次数的增多,你会很容易理解它.在本文,我将创建一个如下模样的树视图. 如你所见,它有两级结构.第一级展示LEAD ID,下一…
无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以下都是自己捣鼓的结果,非标准.谁有更好的设计望不吝啬赐教. 说来其实也简单,就是一个ID和父ID的关系. 以此类推,Id需要是唯一的,ParenId需要是Id列里面存在即可.这样我们就实现无限分级了,如果再加一列Sort排序就更完美了. jstree插件 官方地址:https://www.jstre…
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.Follow他的博客也有一段日子了,很希望能够分享给大家. 本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解.本系列我希望自…
题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more tha…
题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. Tags: Depth-first Search 分析 很基本的一道深度优…
题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straight forward. Could you devise a constan…
题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right…
题目链接:Symmetric Tree | LeetCode OJ Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree is symmetric: 1 / \ 2 2 / \ / \ 3 4 4 3 But the following is not: 1 / \ 2 2 \ \ 3 3 Note: B…
指定节点变色 指定节点隐藏 单击节点 未选中则选中该节点 已选中则取消该节点 前台: 1.HTML <ul id="listDept" name="listDept"  data-options="region:'center',border: true"></ul> 2.JS var deptTree = null; $(function() { deptTree = $('#listDept');  initTree(…
构造一棵easyui前台框架的一个树形列表为例后台框架是spring MVC+JPA. 先看一下数据库是怎么建的,怎么存放的数据 下面是实体类 /** * 部门类 用户所属部门(这里的部门是一个相对抽象的词) * 使用前缀编码,每级增加三个数字,如:第一级 001,第二级001001,第三级001001001 * @author Administrator * */ @Entity public class Department { private String id; //部门id priva…
使用cmder确实是方便了很多,想看命令帮助信息: $ help tree 以图形显示驱动器或路径的文件夹结构. TREE [drive:][path] [/F] [/A] /F 显示每个文件夹中文件的名称. /A 使用 ASCII 字符,而不使用扩展字符. 看看区别 扩展字符显示 $ tree work /f 卷 软件 的文件夹 PATH 列表 卷序列号为 000E-E536 D:\APACHE TOMCAT9_X64\WORK └─Catalina ├─boystyle.cn │ ├─doc…
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html —————————————————————————————————————————————————————— 很多人问,明明有git gui 和 github可以直接图形化操作的吗?全部指令干啥??? 呃(⊙o⊙)…呃(⊙o⊙)… ===> 装逼~ O(∩_∩)O~,开玩笑的,其实就是为了通用和熟悉git,linux里面照样这样用,多熟悉点基础指令很有用的, 如果觉得顿时不开心…