[C++] P3372 【模板】线段树 1
如题,已知一个数列 {ai},你需要进行下面两种操作:
- 将某区间每一个数加上 k。
- 求出某区间每一个数的和。
农夫约翰有 N 头奶牛正在过乱头发节。
每一头牛都站在同一排面朝右,它们被从左到右依次编号为 1, 2, ⋯, N。编号为 i 的牛身高为 hi。第 N 头牛在最前面,而第 1 头牛在最后面。
对于第 i 头牛前面的第 j 头牛,如果 hi > hi + 1, hi > hi + 2, ⋯, hi > hj,那么认为第 i 头牛可以看到第 i + 1 到第 j 头牛。
定义 Ci 为第 i 头牛所能看到的牛的数量。请帮助农夫约翰求出 C1 + C2 + ⋯ + CN。
给出一个长度为 n 的序列 ai,求出下列式子的值:
$$\sum_{i=1}^{n} \sum_{j=i}^{n} (\max_{i\le k\le j} a_k-\min_{i\le k\le j} a_k)$$
即定义一个子序列的权值为序列内最大值与最小值的差。求出所有连续子序列的权值和。
设 T = (V, E, W)
是一个无圈且连通的无向图(也称为无根树),每条边都有正整数的权,我们称
T
为树网(treenetwork
),其中 V,E 分别表示结点与边的集合,W 表示各边长度的集合,并设 T 有 n 个结点。
路径:树网中任何两结点 a,b 都存在唯一的一条简单路径,用 d(a, b) 表示以 a, b 为端点的路径的长度,它是该路径上各边长度之和。我们称 d(a, b) 为 a, b 两结点间的距离。
D(v, P) = min {d(v, u)}, u 为路径 P 上的结点。
树网的直径:树网中最长的路径称为树网的直径。对于给定的树网 T,直径不一定是唯一的,但可以证明:各直径的中点(不一定恰好是某个结点,可能在某条边的内部)是唯一的,我们称该点为树网的中心。
偏心距 ECC(F):树网 T 中距路径 F 最远的结点到路径 F 的距离,即
ECC(F) = max {D(v, F), v ∈ V}
任务:对于给定的树网 T = (V, E, W)
和非负整数 s,求一个路径 F,他是某直径上的一段路径(该路径两端均为树网中的结点),其长度不超过
s(可以等于 s),使偏心距 ECC(F) 最小。我们称这个路径为树网
T = (V, E, W)
的核(Core
)。必要时,F
可以退化为某个结点。一般来说,在上述定义下,核不一定只有一个,但最小偏心距是唯一的。
下面的图给出了树网的一个实例。图中,A − B 与 A − C 是两条直径,长度均为
20。点 W 是树网的中心,EF 边的长度为 5。如果指定 s = 11,则树网的核为路径DEFG
(也可以取为路径DEF
),偏心距为
8。如果指定 s = 0(或 s = 1、s = 2),则树网的核为结点 F,偏心距为 12。
21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在世界上传播。为了彻底消灭这种病,atm 决定前往海底,消灭这条恶龙。历经千辛万苦,atm 终于来到了 drd 所在的地方,准备与其展开艰苦卓绝的战斗。drd 有着十分特殊的技能,他的防御战线能够使用一定的运算来改变他受到的伤害。具体说来,drd 的防御战线由 n 扇防御门组成。每扇防御门包括一个运算 op 和一个参数 t,其中运算一定是 OR, XOR, AND 中的一种,参数则一定为非负整数。如果还未通过防御门时攻击力为 x,则其通过这扇防御门后攻击力将变为 x op t。最终 drd 受到的伤害为对方初始攻击力 x 依次经过所有 n 扇防御门后转变得到的攻击力。
由于 atm 水平有限,他的初始攻击力只能为 0 到 m 之间的一个整数(即他的初始攻击力只能在 0, 1, …, m 中任选,但在通过防御门之后的攻击力不受 m 的限制)。为了节省体力,他希望通过选择合适的初始攻击力使得他的攻击能让 drd 受到最大的伤害,请你帮他计算一下,他的一次攻击最多能使 drd 受到多少伤害。
让 AI 写了个多线程计算 π 的程序,非常适合跑分(((
小杨有一棵包含 n 个节点的树,其中节点的编号从 1 到 n。节点 i 的权值为 ai。
小杨可以选择一个初始节点引燃,每个燃烧的节点会将其相邻节点中权值严格小于自身权值的在节点间扩散直到不会有新的节点被引燃。
小杨想知道在合理选择初始节点的情况下,最多可以燃烧多少个节点。
小杨的班级里共有 N 名同学,学号从 0 至 N − 1。
某节课上,老师安排全班同学进行一次握手游戏,具体规则如下:老师安排了一个顺序,让全班 N 名同学依次进入教室。每位同学进入教室时,需要和 已经在教室内 且 学号小于自己 的同学握手。
现在,小杨想知道,整个班级总共会进行多少次握手。
提示:可以考虑使用归并排序进行降序排序,并在此过程中求解。
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出
orz
。