给定无向图,要求对每条边定向,得到 $\text{DAG}$,同时最小化最长路。
易知可以当拓扑序确定时每条边方向是确定的,考虑枚举所有拓扑序的全排列然后计算最长路。
显然这样会 $\text{TLE}$,于是考虑随机化乱搞,居然过了。
考虑对无向图进行染色,使得同色点之间没有连边,最小化颜色种数。颜色代表数值高的点向颜色代表数值低的点连边,此时答案为染色数 $-1$。
考虑 $O(n2^n)$ 标记所有独立子集,然后 $O(3^n)$ 子集枚举计算染色数。
给定一棵边权树和 $k$ 个关键点,问从第 $i(1\le i\le n)$ 点出发经过所有关键点的最短路程。
不难发现答案为第 $i$ 个点与所有关键点构成的生成树的边权和的两倍 $-$ 第 $i$ 个点到最远关键点的距离。
换根 $\text{dp}$ 维护每个结点的生成树边权和,每个结点子树方向的最远关键结点、次远关键结点以及根节点方向的最远关键结点即可。
时间复杂度 $O(n)$。
给定长度为 $n$ 的序列 $a_i$,给定以下函数
$$ g(l,r)=\max_{i,j\in [1,l)\cup (r,n],i\le j}\text{gcd}(i,j) $$
若满足上述条件的 $(i,j)$ 不存在,则 $g(l,r)=0$。求 $\sum_{i=1}^n\sum_{j=i}^ng(i,j)$。
$$ \sum_{i=1}^n\sum_{j=i}^ng(i,j)=\sum_{k=1}^\text{V}k\sum_{i=1}^n\sum_{j=i}^n[g(i,j)==k]=\sum_{k=1}^\text{V}k\sum_{i=1}^n\sum_{j=i}^n([g(i,j)\ge k+1]-[g(i,j)\ge k]) $$
问题转化为如何计算 $\sum_{i=1}^n\sum_{j=i}^n[g(i,j)\ge k](k=1\sim V)$。
设 $f(l,k)=\max\{r|g(l,r)\ge k\}$,于是有
$$ \sum_{i=1}^n\sum_{j=i}^n[g(i,j)\ge k](k=1\sim V)=\sum_{i=1}^n (f(i,k)-i+1)=\sum_{i=1}^n f(i,k)-\frac {n(n-1)}2 $$
问题转化为维护 $f(1\sim n,k)$,考虑 $f(i,k+1)\to f(i,k)$ 的状态转移。
枚举 $k$ 的倍数,假定 $a_i\mid k$ 的所有位置从小到大依次为 $p_1,p_2\cdots p_{m-1},p_m$。
若 $m\lt 2$,则有 $f(i,k)=f(i,k+1)$,否则有如下转移:
\begin{equation}\begin{split} &1\le i\le p_1\to f(i,k)=\max\left(f(i,k+1),p_{m-1}-1\right)\\ &p_1+1\le i\le p_2\to f(i,k)=\max\left(f(i,k+1),p_m-1\right)\\ &p_2+1\le i\le n\to f(i,k)=\max\left(f(i,k+1),n\right) \end{split}\end{equation}
吉司机线段树维护区间最值操作和区间和查询即可,$f(i,k)$ 初始值为 $i-1$,时间复杂度 $V\log V$。