Codeforces 1324F Maximum White Subtree DFS】的更多相关文章

题意 给你无根一颗树,每个节点是黑色或白色.对于每一个节点,问包含该节点的权值最大的子树. 子树的权值等于子树中白点的个数减去黑点的个数. 注意,这里的子树指的是树的联通子图. 解题思路 这场就这题卡的比较久. 首先,如果是有根树的话,只需要dfs一遍就能得出根的答案. 设根为1,将无根树转为有根树.对于每一个节点定义\(ans\)和\(val\). 其中,\(val_u=\sum_{val_v>0且v是u的儿子}{val_v}\) 然后,再一次dfs就可以获得所有节点的答案. 对于节点\(u\…
CF1324 --- Maximum White Subtree 题干 You are given a tree consisting of \(n\) vertices. A tree is a connected undirected graph with \(n−1\) edges. Each vertex \(v\) of this tree has a color assigned to it (\(a_v\)=1 if the vertex \(v\) is white and \(…
题意: n 个点 n - 1 条边的树,问每个点所在所有子树中白黑点数目的最大差. 思路: 白点先由下至上汇集,后由上至下分并. #include <bits/stdc++.h> using namespace std; const int M=220000; vector<vector<int>> e(M); int n,a[M]; void dfs1(int u,int pre){ for(int v:e[u]){ if(v!=pre){ dfs1(v,u); a[…
原题链接 简要题意: 给定一棵树,每个点有黑白两种颜色:对每个节点,求出包含当前节点的连通图,使得白点数与黑点数差最小.输出这些值. F题也这么简单,咳咳,要是我也熬夜打上那么一场...可惜没时间打啊 美国佬怎么想的,不能让比赛设置成美国的上午,那我们就是下午了:非要设置成下午,那我们就是半夜... 首先,这题一看就是 \(\texttt{dp}\),树形 \(\texttt{dp}\),换根 \(\texttt{dp}\). 下文中,用 \(\texttt{Subtree(i)}\) 表示 \…
换根dp,一般用来解决在无根树上,需要以每个节点为根跑一边dfs的dp问题 我们做两遍dfs 先钦定任意一个点为根 第一遍,算出\(f_i\)表示\(i\)的子树产生的答案,这里,子树指的是以我们钦定的那个点为根的有根树上的子树 这是从下向上的转移,也是一般树上dp的常规操作 第二遍,我们要算出真正的答案 这次是对于无根树中的子树,在第一遍dfs中,\(f_i\)已经包含了\(i\)所有"向下"的子树的贡献,那剩下的一棵子树是以它为根并向上连向它父亲的 设\(i\)的父亲是\(fa\)…
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然后枚举k,每次用二分找到小于k∗aj而且最大的ai,维护答案,过程中加了一些剪枝. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn =…
题目链接: codeforces 615 B. Longtail Hedgehog (DFS + 剪枝) 题目描述: 给定n个点m条无向边的图,设一条节点递增的链末尾节点为u,链上点的个数为P,则该链的beauty值 = P*degree[u].问你所有链中最大的beauty值. 解题思路: 因为只需要找到以每个节点为终点的最长递增链即可,所以建图的时候可以建成从编号小的节点到编号大的节点的有向图,然后用DFS搜索,但是直接暴搜会TLE,然后就开始了我的TLE之路,TLE24, TLE42,TL…
题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a sequence a consisting of n integers. Find the maximum possible value of (integer remainder of *a**i* divi…
传送门:http://codeforces.com/contest/1092/problem/F F. Tree with Maximum Cost time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a tree consisting exactly of nn vertices. Tree is a…
题意: t组输入,每组数据中n个节点构成一棵树,然后给你n-1条边.给你一个m,然后给你m个k的素数因子,你需要给这n-1条边都赋一个权值,这n-1条边的权值之积应该等于k.如果k的素数因子数量小于n-1,那可以使用1来填充 然后我们定义F(x,y)为节点x到节点y的路径上所有边的和 我们要求出来所有任意两点之间的F(x,y),然后把所有F(x,y)加起来输出,求最大结果是多少,结果取余1e9+7 题解: 因为我们要使 这个尽可能大,所以肯定要按那一条边使用次数最多,我们就把最大那个素数因子给这…