国庆集训Day4报告

A. 油箱

这道题我用了一个很神奇的操做完成了。优化

首先,这道题咱们使用二分。判断有无解。链接全部边权小于等于\(mid\)的边,判断全部点是否互相可达。spa

实际上若是全部点都能到达\(1\),而且\(1\)能到达全部点,则说明全部点互相可达。队列


B. 求和

这道题我使用树上倍增。class

固然,咱们首先先考虑维护\(suma[u]\)\(sumb[u]\)表明从该点到根节点的全部权值和。发现咱们还能够维护\(prob_a[u]\)\(prob_b[u]\)用以计算从该点\(u\)到根节点的全部\(a_i*b_j\)。而后分别维护。数据

对于\(u,v\),答案即为:di

\[prob_a[u]+prob_b[v]-prob_a[lca]-prob_b[lca]-(suma[u]-sum[lca])*sumb[fa[lca]]-(sumb[v]-sumb[lca])*suma[fa[lca]]+(suma[u]-sum[lca])*(sumb[v]-sumb[lca]) \]

这道题启发我能够利用维护序列上的操做维护树上较难处理的操做。思维

最后,别忘开long long!display


C. 染色

题意中有一句话:一个长度不超过k的区间染成相同的颜色,指的是一个(考场期间我就觉得是多个)。数字

首先\(k=1\),互不相同。DP带走;math

其次,咱们能够枚举每个长度不超过\(k\)的子串,分别计算。

接着刚才的想法,咱们能够不妨优化一下:预处理DP,接着单调队列。


D. 数字

题目好评,思惟难题。

一看数据规模,再看好数的定义,第一想法就是旅行商问题。

转移过程当中花费貌似挺难想的。咱们把每个\(k\)位数看做一个节点,花费即为节点距离。跑最短路。

举个例子:\(1234\)能够向\(2341\)\(2342\)\(2343\)\(2344\)(这四个数若是都不是不知足题意的数据)连边。