洛谷题面传送门 nb tea 一道! 首先考虑怎样入手分析这个看似非常不可做的问题.首先题目涉及高度无穷的树,根本枚举不了.不过我们冷静一下就会发现,如果我们记 \(mx=\max\limits_{i=1}^{n}\text{dep}(T_i)\),那么由于初始树的集合中不存在深度 \(>mx\) 的树,因此所有可以生成的深度 \(>mx\) 的树都经过了生长操作,也是说: Observation \(1\). 对于某个深度 \(d>mx\),存在深度为 \(d\) 的树不能通过生长得到…
\(\mathcal{Description}\)   Link.   对于非空二叉树 \(T\),定义 \(\operatorname{grow}(T)\) 为所有能通过若干次"替换 \(T\) 的某个叶子为任意非空二叉树"的操作得到的二叉树集合:对于非空二叉树集合 \(\mathscr T\),定义 \(\operatorname{grow}(\mathscr T)=\bigcup_{T\in{\mathscr T}}\operatorname{grow}(T)\).多次询问,每次…
「洛谷P1043」数字游戏 日后再写 代码 /*#!/bin/sh dir=$GEDIT_CURRENT_DOCUMENT_DIR name=$GEDIT_CURRENT_DOCUMENT_NAME pre=${name%.*} g++ -O2 $dir/$name -o $pre -g -Wall -std=c++11 if test $? -eq 0; then gnome-terminal -x bash -c "time $dir/$pre;echo;read;" fi*/ #…
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:…
[BZOJ2830/洛谷3830]随机树(动态规划) 题面 洛谷 题解 先考虑第一问. 第一问的答案显然就是所有情况下所有点的深度的平均数. 考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度为原先叶子\(+1\)的点. 那么新加入的叶子的深度的期望是未加入之前的期望+1,假设\(f_i\)为\(i\)个点的期望. 那么\(f_i=(f_{i-1}*({i-1})-f_{i-1}+2*(f_{i-1}+1))/i=f_{i-1}+2/i\) 含义就是平均的深度乘上点的个数等于深度总和,减…
\(\mathscr{Description}\)   Link.   给定字符串 \(S\),求 \(S\) 的每个前缀的最小表示法起始下标(若有多个,取最小的).   \(|S|\le3\times10^6\). \(\mathscr{Solution}\)   注意到一个显然的事实,对于某个前缀 \(S[:i]\) 以及两个起始下标 \(p,q\),若已有 \(S[p:i]<S[q:i]\),那么在所有的 \(j>i\) 中,都有 \(S[p:j]<S[q:j]\).换言之,最终…
\(\mathcal{Description}\)   OurOJ & 洛谷 P4372(几乎一致)   设计一个排序算法,设现在对 \(\{a_n\}\) 中 \([l,r]\) 内的元素排序,则重复冒泡排序零次或多次,直到存在某个位置 \(p\in[l,r)\),满足 \(\max_{i=l}^p\{a_i\}<\min_{i=p+1}^r\{a_i\}\),则递归入 \([l,p]\) 和 \((p,r]\),直到区间长度为 \(1\) 时停止.求所有冒泡排序所操作的区间长度之和.  …
\(\mathcal{Description}\)   Link.(洛谷上这翻译真的一言难尽呐.   给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 \(u\) 到 \(v\) 的代价为 \(a\),\(v\) 到 \(u\) 的代价为 \(b\).求从结点 \(1\) 开始的,经过每个点至少一次,每条边恰好一次,最后回到结点 \(1\) 的路径,使得每条边代价的最大值最小.   \(n,a,b\le10^3\),\(m\le2\times10^…
\(\mathcal{Description}\)   Link & 双倍经验.   给定 \(n\) 个区间 \([a_i,b_i)\)(注意原题是闭区间,这里只为方便后文描述),求 \(\{c_n\}\) 的个数,使得: \(\forall i~~~~c_i=0\lor c_i\in[a_i,b_i)\). \(\forall i<j~~~~c_i\not=0\land c_j\not=0\Rightarrow c_i<c_j\).   对 \(10^9+7\) 取模.   \(n…
\(\mathcal{Description}\)   Link.   给定一个 \(n\) 个点 \(m\) 条边的无向连通图,\(q\) 次询问,每次给出一个点集 \(s\),求至少在原图中删去多少个点,使得 \(s\) 中存在两点不连通.多组数据.   每组数据 \(n,q\le10^5\),\(m,\sum|s|\le2\times10^5\). \(\mathcal{Solution}\)   看到 \(\sum|s|\) 的限制,不难联想到虚树或者其它与 DFN 相关的算法.   所…