[loj3504]支配】的更多相关文章

令$S_{x}$表示$x$支配的节点集合,可以暴力枚举$x$并求出$S_{x}$(删去$x$后从1开始dfs,复杂度为$o(nm)$),进而反过来即可求出受支配集$D_{x}$ 结论1:若$z\in S_{x}\cap S_{y}$,则有$x\in S_{y}$或$y\in S_{x}$ 由于$x$和$y$都支配$z$,那么考虑任意一条从1到$z$的简单路径,必然经过$x$和$y$(且恰好经过一次) 考虑两者经过的先后顺序,不妨假设先经过$x$,那么若$x$不支配$y$,即存在从1到$y$且经过…
题目链接:http://poj.org/problem?id=3398 这题可以用两种上述讲的两种算法解:http://www.cnblogs.com/whatbeg/p/3776612.html 第一种,贪心算法: 贪心算法直接套一个最小支配集模板就可以了,我不能证明这样是正确的,但是能AC 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #incl…
题目求一棵树的最小支配数. 支配集,即把图的点分成两个集合,所有非支配集内的点都和支配集内的某一点相邻. 听说即使是二分图,最小支配集的求解也是还没多项式算法的.而树上求最小支配集树型DP就OK了. 树上的每个结点作为其子树的根可以有三个状态: 不属于支配集且还没被支配 不属于支配集但被其孩子支配 属于支配集 那么就是用dp[u][1\2\3]来作为动归的状态,表示结点u为根子树的且u状态为1.2.3的最小支配数. 123转移该怎么转移就怎么转移..最后的结果就是min(dp[root][2],…
/* Rank assignment routine */ # include <stdio.h> # include <stdlib.h> # include <math.h> # include "global.h" # include "rand.h" /* Function to assign rank and crowding distance to a population of size pop_size*/ voi…
本篇口胡写给我自己这样的老是证错东西的口胡选手 以及那些想学支配树,又不想啃论文原文的人- 大概会讲的东西是求支配树时需要用到的一些性质,以及构造支配树的算法实现- 最后讲一下把只有路径压缩的并查集卡到$O(m \log n)$上界的办法作为小彩蛋- 1.基本介绍 支配树 DominatorTree 对于一个流程图(单源有向图)上的每个点$w$,都存在点$d$满足去掉&d&之后起点无法到达$w$,我们称作$d$支配$w$,$d$是$w$的一个支配点. 支配$w$的点可以有多个,但是至少会有…
POJ 3398 Perfect Service(树型动态规划,最小支配集) Description A network is composed of N computers connected by N − 1 communication links such that any two computers can be communicated via a unique route. Two computers are said to be adjacent if there is a com…
POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to set up cell phone tow…
支配树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define ll long long inline int read() { int x;char c; '); +c-'; return x; } #define MN 50000 #define MM 100000 struct ZPS { +MN+]; ],rh[MN+],v[MN+],en,fa[…
Description P2597 [ZJOI2012]灾难 - 洛谷 | 计算机科学教育新生态 Solution 根据题意建图, 新建一个 \(S\) 点, 连向每个没有入边的点. 定义每个点 \(P\) 的支配点为从 \(S\) 到 \(P\) 的任意路径必经的点. 那么题意便为对于每一个点, 求有多少个点以它作为支配点. 考虑建立一棵支配树, 其中除了 \(S\) 之外的点 \(P\) 的父亲 \(\text{fa} (P)\) 表示距离 \(P\) 最近的支配点. 显然 \(\text{…
HDU \(Description\) 给定一张简单有向图,起点为\(n\).对每个点求其支配点的编号和. \(n\leq 50000\). \(Solution\) 支配树. 还是有点小懵逼. 不管了,说不定会讲,反正以后再说. https://blog.csdn.net/litble/article/details/83019578 有图的:https://blog.csdn.net/VioletSu/article/details/81041954 有题的:https://blog.csd…
我也想要皮卡丘 跑一遍dijkstra,可以建出一个最短路DAG(从S到任意点的路径都是最短路),然后可以在上面建支配树 并不会支配树,只能简单口胡一下在DAG上的做法 建出来的支配树中,某点的祖先集就是从S到该点的必经点集,也就是说,炸掉某点,这个子树都会变得angryunhappy 大概就是按拓扑序来建这个树,每条边(u,v)是要把fa[v]=lca(u,fa[v]),等到v的入度为零时,再用最终的fa[v]连到v上,然后给v做以后求lca时倍增的预处理 最后dfs算出来除S点的最大的子树大…
NSGAII(带精英策略的非支配排序的遗传算法),是基于遗传算法的多目标优化算法,是基于pareto最优解讨论的多目标优化,下面介绍pareto(帕累托)最优解的相关概念. Paerot支配关系 Pareto最优解定义 多目标优化问题与单目标优化问题有很大差异.当只有一个目标函数时,人们寻找最好的解,这个解优于其他所有解,通常是全局最大或最小,即全局最优解.而当存在多个目标时,由于目标之间存在冲突无法比较,所以很难找到一个解使得所有的目标函数同时最优,也就是说,一个解可能对于某个目标函数是最好的…
/* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include <math.h> # include "global.h" # include "rand.h" /* Routine for usual non-domination checking It will return the following values 1…
题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的表演时间为第 i 个单位时间,表演的舞台为 Ai ,注意可能有多个节目使用同一个舞台.作为 Tom 的忠实粉丝之一的 Alice,当然要来逛一下啦,顺便看一下能不能要到 Tom 的签名. Alice 一开始会先在 A1 看完节目1再去闲逛. Alice 可以在舞台之间随便乱走.但是假如 Alice…
支配树目前只见到这一个应用,那就不独分一类,直接作为拓扑排序题好了. 每个点向所有食物连边,定义fa[x]为x的支配点,即离x最近的点,满足若fa[x]灭绝,则x也要灭绝. 这样,将fa[x]向x连边,则建出的新图是一棵树,这就是支配树(不是严谨的支配树,被出题人称为灭绝树) 建树流程是,将拓扑序反向,对于一个点x,求它的出点在新图(树)中的LCA,然后将这个LCA作为fa[x]即可. #include<cstdio> #include<cstring> #include<i…
Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7127   Accepted: 2549 Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires hi…
给定一个无向图G =(V,E),其中V表示图中顶点集合,E表示边的集合.G的最小控制顶点集合为V的一个子集S∈V:假设集合R表示V排除集合S后剩余顶点集合,即R∩S=∅,R∪S=V:则最小控制顶点集合S满足约束条件:R中任意一个顶点至少与S的一个顶点直接相连.给定一个图,求出最小控制集. 控制集定义: 控制集又称支配集(Minimun Dominating Set),支配集是图G中的顶点集合S ⊆ V,满足对于任何顶点v∈V,要么v∈S,要么v与集合S中至少一个顶点相邻. 最小控制集: 对于支配…
link 我永远喜欢洛天依 给定一张图世末积雨云,你需要维护其支配树: 单点修改,子树修改,树链修改 子树求和,树链求和,多条树链的并集求和 撤销之前的操作 可以先用 Lengauer-Tarjan 算法 求出图的支配树,然后把它树剖,开一个线段树维护 至于多条树链的并集求和(有点像虚树的那种操作),现将所有点按照 dfn 排序,然后按照 dfn 的顺序依次加点 枚举节点a[i],每次假装a[1..i]的答案中除了a[i]到根的路径没有求值之外其它的都求值了,那么转移的时候需要加上当前点到lca…
Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6781   Accepted: 2429 Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires hi…
一:最小支配集 考虑最小支配集,每个点有两种状态,即属于支配集合或者不属于支配集合,其中不属于支配集合时此点还需要被覆盖,被覆盖也有两种状态,即被子节点覆盖或者被父节点覆盖.总结起来就是三种状态,现对这三种状态定义如下: 1):dp[i][0],表示点 i 属于支配集合,并且以点 i 为根的子树都被覆盖了的情况下支配集中所包含最少点的个数. 2):dp[i][1],表示点 i 不属于支配集合,且以 i 为根的子树都被覆盖,且 i 被其中不少于一个子节点覆盖的情况下支配集所包含最少点的个数. 3)…
题意:有以个 有 N 个节点的树形地图,问在这些顶点上最少建多少个电话杆,可以使得所有顶点被覆盖到,一个节点如果建立了电话杆,那么和它直接相连的顶点也会被覆盖到. 分析:用最少的点覆盖所有的点,即为求最少支配集.  可以用树形DP. ①  dp[r][0] += min(dp[i][0],dp[i][1],dp[i][2])    dp[r][0]表示在自 r 顶点自身建, 以 r 为根节点的树所需要的最少覆盖数.       ②  dp[r][1] += min(dp[i][0],dp[i][…
先跑spfa求出最短路构成的DAG,然后在DAG上跑出支配树dfs出size取max即可 关于支配树,因为是DAG,支配点就是入点在支配树上的lca,所以一边拓扑一边预处理倍增,然后用倍增求lca #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<vector> using namespace std; const int N=400005…
求出支配树输出到father的和即可 支配树见:https://blog.csdn.net/a710128/article/details/49913553 #include<iostream> #include<cstdio> #include<vector> #include<cstring> using namespace std; const int N=300005; int n,m,h[N],cnt,se[N],id[N],rl[N],fa[N]…
最小支配集: 从V中选取尽量少的点组成一个集合,让V中剩余的点都与取出来的点有边相连. (点) 最小点覆盖: 从V中选取尽量少的点组成一个集合V1,让所有边(u,v)中要么u属于V1,要么v属于V1 (边) 最大独立集: 从V中选取尽量多的点组成一个集合,让这些点中间没有边项链,也就是说对于任何一条边,u,v不能同时属于集合V1. 1.贪心算法 首先选取一个点为根节点,求出所有节点对应的DFS序列,按照所得序列反向进行贪心,这样保证对于每个点来说,当子树都被处理过之后才会处理该节点 int p[…
这个题乱七八糟的,和之前的灭绝树有点像,但是不一样.那个是DAG,这个是有向图.简单步骤就是先求出来dfs序,然后求出半支配点(?),然后通过这个求支配点. 算法不是很理解,先放在这. 题干: 题目背景 模板题,无背景 题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己) 输入输出格式 输入格式: 第一行两个正整数n,mn,mn,m,表示点数和边数 接下来mmm行,每行输入两个整数u,vu,vu,v,表示有一条uuu到vvv的有向边 输出格式: 一行输出nnn个整数,表示…
树的定义:连通无回路的无向图是一棵树. 有关树的问题: 1.最小生成树. 2.次小生成树. 3.有向图的最小树形图. 4.LCA(树上两点的最近公共祖先). 5.树的最小支配集.最小点覆盖.最大独立集. 一.最小生成树 解决的问题是:求无向图中边权值之和最小的生成树. 算法有Kruskal和Prim. Kruskal使用前向星和并查集实现,可以存储重边(平行边),时间复杂度是O(m log m  +  m),m是边的数量. Prim使用邻接矩阵建图,不可以存储重边(平行边),如果出现重边,存储的…
目录 Cell Phone Networ (树形dp-最小支配集) 题意 思路 题解 Cell Phone Networ (树形dp-最小支配集) Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to set up cell phone towers on his N (…
CF757F Team Rocket Rises Again 全体起立,全体起立,这是我A的第一道黑题(虽然是CF的): 来一波番茄攻击: 不扯淡了,这道题也是学习支配树(之前)应该做的题: 和灾难不同的是,那个是直接给你有向图,这里给的是无向图: 我们要求的是删除一个点会造成多少点的最短路发生变化,那么我们可以根据最短路再建一个有向图,这样就和灾难一样了: 很不幸,我建了四个图: 因为一开始写挂了所以图的编号是乱的:(这并不影响我AC)add是无向图,add2是有向图,add4是反图,add3…
Cell Phone Network Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to set up cell phone towers on his N (1 ≤ N ≤ 10,000) pastures (conveniently numbered 1..N) s…
题目传送门(内部题55) 输入格式 第一行,包含两个整数:$n,m,q$,表示敌军城市数.路数和情报数.接下来$m$行,每行包含两个整数:$u,v$,表示从$u$到$v$包含一条单向道路.接下来$q$行,每行包含一些整数:$k\ u_1\ u_2...u_k$,表示敌军会向$u_1...u_k$这$k$个城市派遣大军. 输出格式 对于每个询问,输出一行包含一个整数表示必经的城市数. 样例 样例输入1: 4 3 21 22 32 42 3 42 2 4 样例输出1: 22 样例输入2: 4 4 1…