GYM 101673F(树计数)】的更多相关文章

树上每个割点计算一下各个size的组合相乘再相加为第一问答案,取最大的:再把本答案中最大的两个size相乘减掉,为第二问答案. const int maxn = 1e4 + 5; int n, size[maxn], ans, b; vector<int> adj[maxn]; void dfs(int cur, int fa) { size[cur] = 1; vector<int> v; for (auto i : adj[cur]) { if (i == fa) contin…
题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序. 题解:建立26棵线段树,类似计数排序思想. #include <bits/stdc++.h> using namespace std; ; struct SegTree { ], sum[], l, r; }T[N << ]; ][N]; void pushup(int p, int c) { T[p…
计数排序的原理,只要知道了有几个数比i小,就可以知道i的位置 这道题只有26个字母,搞26颗线段树,然后区间更新 #include <cstdio> #include <cstring> #include <algorithm> //using namespace std; ; int N,Q; char line[maxn]; #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r #defi…
题目链接: http://codeforces.com/problemset/problem/558/E E. A Simple Task time limit per test5 secondsmemory limit per test512 megabytes 问题描述 This task is very simple. Given a string S of length n and q queries each query is on the format i j k which mea…
原题传送门 题意:给定一颗n+1(n≤10000)个结点的树(当然有n条边辣),定义一个结点为critical,当且仅当除去这个点及与其相连的边后,所有不相连的结点对数量最多.现在保证有且仅有一个结点是critical的,要求输出对应的不相连的结点对数,以及连上一条边后,能剩余的最少结点对数(即等价于(n+1-最佳情况下能减少的不相连点对个数)). 分析:明眼人一下就能看出,第二问比第一问简单多了,只要求出critical,然后O(n)跑一遍邻边统计最大的两个分支乘起来就是"最佳情况下能减少的不…
题意 一棵树 多次修改,每次修改一个点到根的所有边的颜色,并询问现在有哪些颜色染了恰好$m$条边 题解: 稍加思考可以知道,从某个点到根节点的颜色数,均摊复杂度很低,因此,可以考虑珂朵莉树维护重链剖分 这里也记录一下珂朵莉树的代码 代码: #include<bits/stdc++.h> #define endl '\n' #define ll long long #define ull unsigned long long #define fi first #define se second…
大意: 给定树, 多组询问, 每个询问给出一个点集$S$, 给定$m, r$, 求根为$r$时, $S$的划分数, 满足 每个划分大小不超过$m$ 每个划分内不存在一个点是另一个点的祖先 设点$x$的祖先包括x的个数为$f[x]$ (不属于集合S的点不计算), 按$f$排序后, 有转移 $$dp[i][j]=dp[i-1][j-1]+(j-f[i]+1)dp[i-1][j]$$ dp[i][j]为前i个, 划分为j组的方案数 所以讨论一下$r$与$1$的位置关系求出f就行了 #include <…
题目大意 求$n$个点的无标号左偏树个数 既然你都点进来了,那么估计也是奔着题解来的.... 废话少说.... 首先,左偏树有这么一些性质 设最右链长度为$r[p]$ 1.左偏树的子树仍然是左偏树 2. $r[p] = r[rs[p]] + 1$ 3. $r[p] \leqslant \log_2 (p + 1)$ 因此,考虑设状态$dp[i][j]$表示$i$个点构成右链长度为$j$的方案数 由于右儿子的右链长度一定为$j - 1$ 只要枚举左儿子右链长度和左儿子子树大小就能转移 但是这样子复…
1603 限高二叉排列树 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题   作为游戏魔方的编写者和管理员,Bob在很多主存模块中检测游戏魔方,并且Bob从未被用户打败,同时他也经常和游戏魔方作战. 然而,不愉快的事情发生了,游戏<失落的洛杉矶>崩溃了,由于出现了一个非常可恶的病毒——“十六进制”,它非常奇怪,并且非常喜欢玩,因此,Bob必须先和它玩,才能和别人玩. 此次“十六进制”发明了以下游戏:Bob必须通过一些有n个节…
题目: 题意: 从节点 0 出发,把每一个节点都经过一遍,然后从一个节点回到学校. 由于有 n+1个节点,n条边,而且保证两两互相到达,那么这就是一个棵树. 于是,可以发现,如果从一个点出发,然后回到原来的点,路程是所有边的2倍,这样,就可以枚举从哪个点回学校就行了. 然后一个坑点就是,那个最后枚举的时候ans初始化要注意很大,因为每条边的权值都是10的9次方大小. #include <iostream> #include <cstdio> #include <vector&…