Codeforces
「CF232D」Fence-后缀数组+主席树
· ☕ 2 min read

给定长度为 $n$ 的整数序列 $h[n]$ ,有 $Q$ 个询问,每次给出 $l_1,r_1$ ,​询问有多少对 $l_2,r_2$ ,满足以下条件:

  1. $r_2 – l_2 = r_1 – l_1$
  2. 区间 $[l_1, r_1]$ 与区间 $[l_2, r_2]$ 没有交集
  3. 对于任意 $i \in [0,r_1 – l_1]$ ,满足 $h[l_1 + i] + h[l_2 + i] = h[l_1] + h[l_2]$

「CF103E」Buying Sets-霍尔定理-网络流-最小权闭合子图
· ☕ 2 min read

我们有 $n$ 个集合,第 $i$ 个集合有 $m_i$ 个数($1$ 到 $n$ 中的整数),权值为 $w_i$ 。

现在请你从中选出 $k$ ($k$ 为任意 $0$ 到 $n$ 中的整数)个集合,满足这 $k$ 个集合的并集的大小为 $k$ ,询问这 $k$ 个集合的权值和最小值。

保证从这 $n$ 选出任意 $x$ 个集合,他们的并集大小不小于 $k$ 。


「CF813D」Two Melodies-简单dp
· ☕ 2 min read

给定一个长度为 $n$ 的数组,我们要从中找出两个不相交(不含邮相同元素的)的子序列,要求每个子序列的任意两个相邻元素的差的绝对值为 $1$ 或 在模 $7$ 意义下相同。请你求出这两个子序列长度和的最大值。


「CF68D」Half-decay tree-期望瞎搞题
· ☕ 2 min read

定义一个完全二叉树树高为根节点到叶子节点经过的边数。

给定一个树高为 $h(1 \le h \le 30)$ 的完全二叉树,其中第 $x$ 个节点的左儿子为第 $2x$ 个节点,右儿子为第 $2x+1$ 个节点。

现在有 $q(1 \le q \le 10^{5})$ 个,分为两种操作:

  1. add v e ( $1 \le v \le 2^{h+1}-1,1 \le e \le 10^4$ )表示给第 $v$ 个节点的权值加 $e$ 。
  2. decay 操作。我们在这个二叉树里面以等概率选择一个叶子节点,将这个叶子节点到根的路径上所有的边都删去。在删除后,树会形成若干个联通块,我们定义某个联通块的的权值为这个联通块内所有节点的权值之和。我们定义删除后的树的权值为形成的所有联通块的权值的最大值。请你求出这个值的期望。每次删除后会恢复所有删除的边。

「CF86C」Genetic engineering-AC自动机+dp
· ☕ 2 min read

我们定义一个 DNA 序列为仅有 ATCG 四个字母的字符串。

给出 $m(1 \le m \le 10)$ 个 DNA 序列模式串 $s_i$,每个长度均不超过 $10$ ,我们定义一个 DNA 序列 $w$ 是好的,当且仅当对于 $w$ 的每一个位置 $i$ ,都存在至少一个模式串 $s_j$ , 使得 $w[l...r] = s_j$( $w[l...r]$ 表示一个原字符串的一个子串) , 其中 $1 \le l \le i \le r \le |w|$( $|w|$ 为 DNA序列 $w$ 的长度) 。

请你计算出所有长度为 $n(1 \le n \le 1000)$ 的好的 DNA 序列的个数。


「CF83D」Numbers-容斥原理
· ☕ 2 min read

给出三个整数 $l,r,k (1 \le l \leq r \le 2\cdot10^9, 2 \le k \le 2 \cdot 10^9)$ 。

求在区间 $[l,r]$ 内满足 $k \mid i$ , 且对于任意 $j \in [2,k-1]$ 都不满足 $k \mid i$ 的数 $i$ 的个数。


「CF540E」Infinite Inversions-动态开点线段树
· ☕ 2 min read

现在有一个由所有正整数组成的无限递增序列: $p = {1,2,3,...}$ 。

对这个序列执行 $n$ 次交换操作。每次一个操作,给出两个整数 $a,b$,交换位置 $a$ 和 $b$ 处的元素。

你的任务是在所有操作结束后,输出最终序列的逆序对个数,即满足 $i < j$ 且 $p_i > p_j$ 的有序数对 $(i,j)$ 的数量。


「CF486E」LIS of Sequence-简单数据结构
· ☕ 3 min read

给你一个长度为 $n$ 的序列 $a_1,a_2,...,a_n$ ,你需要把这 $n$ 个元素分成三类:$1,2,3$,每类的条件如下:

  1. 所有的最长上升子序列都不包含这个元素

  2. 有但非所有的最长上升子序列包含这个元素

  3. 所有的最长上升子序列都包含这个元素


「CF452E」Three strings-后缀数组
· ☕ 2 min read

给出三个仅由小写字母构成的串 $A, B, C$ ,对于每个 $L \in [1, \min(len_A,len_B,len_C)]$ ,求满足$A[a,a+L-1] = B[b,b+L-1] = C[c,c+L-1]$ 的三元组 $(a,b,c)$ 的数量。

答案对 $1000000007 (10 ^ 9 + 7)$ 取模,字符总数小于 $3 \times 10^5$。


「CF400E」Inna and Binary Logic-简单数据结构
· ☕ 2 min read

Inna 有一个一个长度为 $n$ 的数列 $a_1 [1],a_1 [2],\dots,a_1 [n]$。

她会进行如下操作,分为 $n$ 个阶段:
在第一阶段,Inna 从数组 $a_1$中写出所有数字,在第 $i$ 个 $(i \ge 2)$ 阶段 Inna 会写出数组的所有元素 $a_i$ ,由 $n - i + 1$ 个整数组成; 数组 $a_i$ 的第 $k$ 个数定义如下:$a _ {i} [k] = a _ {i-1} [k]\ \mathrm{AND}\ a _ {i-1} [k + 1]$ 。 这里 $\mathrm{AND}$ 是二进制的逐位与运算。

Dima 决定检验 Inna 的技能。 他要求 Inna 改变阵列,进行练习并说出她在当前练习中写出的所有元素的总和,即:

$$ \sum _ {i=1}^n \sum _ {j=1}^{n-i+1} a_i[j] $$

请帮助 Inna 回答问题!