A-LCT
题意
给定一棵有根树,每次询问前$i$条边组成的森林中,第$c_i$个点为根的树的深度。
数据范围
- $2\leq n\leq 10^6$
- $1\leq a_i,b_i,c_i\leq n,a_i\neq b_i$
思路
带权并查集,维护每个节点在当前所属树的层数,维护所有以该节点为根节点的树的深度。
代码
|
|
C-Sort4
题意
给出一个排列,每次选择四个位置交换其中的元素,求将该排列排序成上升序列的最小操作次数。
给定一棵有根树,每次询问前$i$条边组成的森林中,第$c_i$个点为根的树的深度。
带权并查集,维护每个节点在当前所属树的层数,维护所有以该节点为根节点的树的深度。
|
|
给出一个排列,每次选择四个位置交换其中的元素,求将该排列排序成上升序列的最小操作次数。
在河岸的一侧有$n$个人,每个人有一个体力值$h_i$,有一艘船可以将人从一侧载到另一侧,每次航行需要至少$L$个人掌舵,每次掌舵会花费每个掌舵人的一点体力,当体力不足一点时,这个人不能再掌舵,船的容量最大是$R$,提问是否能够将这些人都运送到对岸。
贪心的运输,从左岸运输的最小次数是$k=\lceil \frac{n-R}{R-L} \rceil$,计算每个人最多的来回次数$a_i$,假如满足$\sum_{i-1}^{n} min(k,a_i)\geq k\times L$,则可以将所有人都运输到对岸。
$(709/3775)$
将字符串$S=S_0+S_1+S_2+…+S_{n-1}$循环位移$k$次后得到$S(k)=S_{k\bmod n }+…+S_{n-1}+S+0+…+S_{(k-1)\bmod n}$。
定义$[A]={A(k),k\in N}$。给出$T$组串$A,B$,询问$B$有多少个子串在$[A]$中。
记字符串$A$的长度是$n$,将字符串$A$转变为首尾相连的样子($A=A+A.substr(1,n-1)$),并计算其中每个长度为$n$的哈希值,用map存值,再对字符串$B$进行哈希,同样也对长度为$n$的子串计算哈希值,若有符合的则计数。
|
|
$(991/1659)$
存在如下A型
、B型
两种砖:
现用这两种砖拼成$N\times M$的矩形,提问是否有恰好存在$K$条曲线的平铺方式,曲线如下:
边缘一圈的点所在的线一定不是一个环,所以最少的线数相当于都是A型
或B型
时的线数,也就是$N\times M$个,若要比$N\times M$个多,则多的部分只能是图形中环的数目,贪心的让所有的环最小,则能构造出最多的环,最小的环如例图中一样,当平铺的方式是
$$
AB\\BA
$$
时,形成的环是最小的。