Description

给定一个 \(n\) 个点 \(m\) 条边的无向图,找到两个点 \(s,t\),使得 \(s\)\(t\) 必须经过的边最多。

Solution

边双内的边显然都不是关键边,否则必是,于是缩点后求直径即可

[CF1006F] Xor-Paths

Description

给出一个 n × m 的网格,每个格子上有权值 \(a[i][j]\),要从 (1,1) 走到 (n,m),每次只能向右或向下走,沿路计算异或和,求异或和等于 k 的路径数。

Solution

双向 BFS,由于要走的总步数为 \(steps=n+m-2\),正着走 \(steps/2\),反着走 \((steps+1)/2\),然后合起来用 map 算答案即可

Description

我们将一个无向图称作互质图,当且仅当对于其中每一条边 \((v, u)\)\(v\)\(u\) 互质(也即 \(GCD(v,u)=1\))。当两个顶点之间没有边时不需要考虑。顶点从 \(1\) 开始标号。
现在给你 \(n\) 个顶点和 \(m\) 条边,要求你建立一个无重边和自环并且连通的互质图,或者判定无法构造。

Solution

设将每条边描述为 \((u,v)\),满足 \(u<v\),那么我们从小到大枚举 \(u\),再从小到大枚举 \(v\),能连就连
复杂度与 \(\varphi\) 函数的前缀和有关,不妨将其视作 \(O(n \log n)\)

给你一个 \(n \times m\) 的矩形,一开始有 \(q\) 个格子上被标记。对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记。问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记。

Solution

行和列分别对应二分图的左部右部,格子对应边,那么我们只需要手动使得二分图连通,通过自动标记的操作就可以得到完全二分图
于是答案为连通块数量 \(-1\)

Description

已知一个 \(n×m\) 的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出"NO",否则输出"YES"和矩阵。

$ n,m \leq 100 $

Solution

将前 \((n-1)(m-1)\) 设为 \(0\),只通过最后一个 \(L\) 型来构造

Description

给你一个长度为 \(n\) 的数列,初始全部为 \(0\) ,你可以任意(任选区间)进行 \(q\) 次操作,第 \(i\) 次操作使 \([l_i,r_i]\) 内的数全部变为 \(i\) ,你必须进行全部 \(q\) 次操作,且每个操作区间都不能为空,所有操作区间的并必须为 \([1,n]\)。现在给你一个数列,其中 \(0\) 代表这个位置可以是任何数,问你能否通过上述的 \(q\) 次操作得到这个数列。输出方案。

Solution

以下 \(m\) 即为题面中的 \(q\)

无解的判定

如果两个数之间存在比它们小的数,则无解
如果序列中不存在值为 \(m\) 的数,则无解

解的构造

考虑为 \(0\) 的位置需要怎样处理

如果数列中没有 \(m\),则优先填 \(m\)

如果某个位置的左侧右侧同时存在 \(x\),则该位置 \(\ge x\),换言之我们在这个位置需要取它左边右边都有的数中的最大值

否则填 \(1\)

如何维护

考虑维护一个 std::set,在某个数第一次出现时 insert(x),最后一次出现时 erase(x)
那么我们每次取 *s.rbegin() 即可

[CF1025D] Recovering BST - 区间dp

Description

给定一棵二叉搜索\(n \le 700\) 的所有点权,构造二叉树满足任意两个直接相邻的点的权值的 GCD 不是 1

Solution

这种关于二叉搜索树中序遍历的 DP 问题,设状态时忽略根而考虑区间,因为这个区间作为一个子树,它的父亲一定是区间左端点的左边的点或者区间右端点的右边的点
\(f[i][j]\) 表示以 \([i,j-1]\) 作为 j 的左孩子是否合法
\(g[i][j]\) 表示以 \([i+1,j]\) 作为 i 的右孩子是否合法
转移时,考虑一个区间 \([l,r]\),枚举它的根 \(k\),需要满足 \(f[i][k]\) 并且 \(g[k][j]\)
如果此时 \(k\)\(l-1\) 相连是合法的,那么就可以转移到 \([l-1,r]\)
如果此时 \(k\)\(r+1\) 相连是合法的,那么就可以转移到 \([l,r+1]\)
总之,设状态时设的是“半棵子树”的合法性,转移时首先考虑一个区间可能有哪些根,然后分别考虑这些点为根时,向外的转移情况

Description

给定两个集合 \(A,B\),要求在任意时刻 \(A\) 中元素小于 \(B\) 中元素。每次操作可以添加一个元素 \(x\) 到任意一个集合(由程序来选择)或者删除一个元素 \(x\),保证添加的元素互不相同,删除的元素一定存在,并要求删除的元素必须是 \(A\) 的最大值或者 \(B\) 的最小值。求方案数。

Solution

每次删除操作会对前面所有的添加操作产生某种限制。
假设本次删除 \(x\),那么前面所有小于 \(x\) 的元素都必须被加入 \(A\),大于 \(x\) 的元素都必须被加入 \(B\),等于 \(x\) 的元素,如果 \(x\) 小于 \(A\) 的最大值则必须被加入 \(A\),大于 \(B\) 的最小值则必须被加入 \(B\),否则可以任意选择,总方案数 \(\times 2\)
但最后一次删除后还可能有若干添加操作,对于这些添加操作,我们在删除其中小于 \(A\) 的最大值、大于 \(B\) 的最小值者后,剩余的元素可以任取分割界,左侧加入 \(A\) 右侧加入 \(B\)。假设元素一共有 \(c\) 个,则答案 \(\times (c+1)\)

Description

给出一个在二维平面直角坐标系第一象限内的,单位长度为 \(1\) 的无限大网格,每条直线都代表道路。又给你一条直线 \(ax+by+c=0\),也代表一条道路。

现在给你两个格点 \(A,B\) 坐标 \((x1,y1)\)\((x2,y2)\),让你求该两点间最短的道路距离。

Solution

求矩形交点后再求距离
(又把 fabs 写成 abs
(以及关错了流同步被迫害

Description

给你 \(n\) 个数,去掉尽量少的数使得剩下数的最大公约数比原来的大。无解输出 \(-1\)

Solution

首先将所有数除以最大公约数
\(M=\max a_i\),维护一个桶 \(b[]\),对每个 \(i\),在 \(b[a[i]]\)\(+1\)
枚举 \([1,M]\) 中的所有质数 \(p\),考虑让最大公约数乘以 \(p\),代价就是我们需要删去所有的 \(a_i\) 满足 \(p|a_i\),于是我们枚举所有 \(p\) 的整数倍 \(q\),统计所有 \(b[q]\) 的和,就是 \(p\) 的答案
最后对所有 \(p\) 的答案取最小值即可
复杂度是 \(\sum_{p \leq M} M/i\),由于收敛较快,可以接受

判断能否整除即可

CF 题解汇总 如果自己是回文串可以做中心 如果一个串和另一个串的转置相等则可以凑一对 优先配对

Description

定义一个数字是好数,当且仅当它的十进制表示下有不超过 $ 3 $ 个数字 $ 1 \sim 9 $。给定 $ [l,r] $,问有多少个 $ x $ 使得 $ l \le x \le r $,且 $ x $ 是好数。$ 1 \le l_i \le r_i \le 10^{18} $

Solution

常规的数位 dp,设 \(f[i][j]\) 表示前 \(i\) 个数位,有 \(j\) 个非零数位时,有多少个数满足条件

Description

给你一个长度为 \(n\) 的整数序列,你可以对其做两种操作:

  • \(i!=j\),将 \(a_j\) 替换为 \(a_i\cdot a_j\),删除 \(a_i\)
  • 选一个未被删除的 \(a_i\),将其删除。该操作在任意时刻均可执行,最多执行一次

你需要操作 \(n-1\) 次,剩下一个数,使其最大。由于剩下的数可能会很大,你需要输出任意一种得到它的操作序列。

Solution

分类讨论

  • 如果负数的个数是偶数

  • 如果没有 \(0\),取绝对值处理即可

  • 如果有 \(0\),将所有 \(0\) 乘在一起,消去,剩下的取绝对值处理即可

  • 如果负数的个数是奇数

  • 如果没有 \(0\),消去一个绝对值最小的负数,剩下的取绝对值处理即可

  • 如果有 \(0\),先将所有 \(0\) 乘在一起,再将绝对值最小的负数乘到 \(0\) 上,消去这个 \(0\),剩下的取绝对值处理即可

Description

\(N\) 个点,求与 \(y=0\) 相切的,包含这 \(N\) 个点的最小圆的半径。

Solution

考虑二分半径,现在要检验 \(r\) 是否可行,显然对于每个 \((x_i,y_i)\) 我们可以计算出 \(d=\sqrt {r^2 - (y_i-r)^2}\),则区间 \([x_i-d, x_i+d]\) 是可行的,我们只需要验证所有区间是否有交即可。

Description

现在有 $ N $ 个人,每一个人都不想周围的人坐得离他很近,所以在他的左边要放 $ L_i $ 张椅子,右边要放 $ R_i $ 张椅子,现在他们要坐成若干个圈,请问最少要放多少张椅子。

Solution

左右手数目分别排序后,答案即为 \(n+\sum \max(l_i,r_i)\)

给定一个 \(n \times m\) 地图,每个格子为空地或墙,你从一个位置开始,四连通移动,向上向下次数不限,向左最多 \(x\) 次,向右最多 \(y\) 次,问能到达多少个格子

Solution

如果只有一个方向有代价,那么简单 BFS 即可
然而这里两个方向都有代价,但是点 \((r,c) \to (i,j)\) 的横坐标差是确定的,换言之,如果设向左走了 \(a\) 步,那么向右走的步数就是 \(i-r+a\)
于是我们只对向左的边设代价即可,最终在考虑 \((r,c) \to (i,j)\) 的过程时,同时要求 $a \leq x $ 和 $ j-c+a \leq y$ 即可

CF1070A Find a Number

Description

给定两个数 \(d \le 500\)\(s \le 5000\),求最小的 \(n\) 使得 \(d|n\) 并且 \(n\) 的各位数字之和为 \(s\)

Solution

\(f[i][j]\) 表示生成一个和为 \(i\)\(\bmod d=j\) 的数字的最小 \(n\) 的末位数字
用 BFS 实现即可

Description

在平面直角坐标系中,一个机器人处于 $ (0,0) $ 点。它能进行以下的移动操作。$ U~~ $ 从 $ (x,y) $ 移动到 $ (x,y+1) \(;\) D~~ $ 从 $ (x,y) $ 移动到 $ (x,y-1) \(;\) L~~ $ 从 $ (x,y) $ 移动到 $ (x-1,y) \(;\) R~~ $ 从 $ (x,y) $ 移动到 $ (x+1,y) $。现在有一个长度为 $ n $ 的操作序列。Vasya想修改这个序列使机器人最终移动到 $ (x,y) $。其修改的花费为 $ maxID-minID+1 \(。\) maxID $ 是修改的操作的下标的最大值,$ minID $ 是修改的操作的下标的最小值。如果没有修改,则花费为 $ 0 $。

Solution

考虑到对于一个区间,如果它可行,那么一个包含它的区间一定可行
故尺取法即可

给定无向带权连通图,保留至多 \(k\) 条边,最大化到 \(1\) 号节点最短路长度不变的点的数量。

Solution

一个显然的做法是,构建原图的一棵最短路径树,任意选择一个大小为 \(k\) 的包含根的连通块就是答案
另一方面,我们回归到 Dijkstra 算法的原理,不难发现,我们只需要在算法加了 \(k\) 条边以后停止,当前选择的边集就是答案

Description

有 $ n $ 个问题,问题的主题分别是 $ a_1,a_2,\cdots,a_n $,需要组织一些专题比赛,同时要满足以下条件:一场专题比赛中的所有题目的主题相同;组织的所有专题比赛中主题互异;从第二场比赛开始,比赛中的题目数必须是前一场比赛题目数量的 $ 2 $ 倍,第一场比赛的题目数量可以是任意的。求所有比赛使用的题目数量之和的最大值。

Solution

把每个类型的问题压在一起,枚举每一个开始问题数目,检验答案时,维护一个当前位置 \(pos\),每次在 \(pos\) 后的段中二分,找到第一个可以容纳的题目类型,复杂度 \(O(n \log^2 n)\)

给定 \(n\) 个点 \(m\) 条边的无向图,图中 \(k\) 个特殊顶点,你选定一个边集,使得 \(k\) 个点通过这些边能够连通,求选定边集中最长边的最小值。

Solution

显然在求最小生成树的时候维护一下就行了,关键是如何判定当前 \(k\) 个点已经连通
维护一个 \(cnt\),如果本次合并涉及到的两个集合中都有特殊点,则 \(cnt+1\)

Description

点有正权,边有负权。在这样的无根树中找到一条权重最大的链并输出权重。

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

重要结论:如果一条路径正向反向不同时合法,则它一定存在一条子路径比它更优(想到了就很显然)
于是我们就可以当做无向链处理了
\(f[i]\) 表示到 \(i\) 结尾的一条直链的最大值
递推 \(f[]\) 时,选取最大儿子即可
更新答案时,选取最大儿子和次大儿子即可

[CF1092D1] Great Vova Wall - 栈,贪心

Description

给定一个序列 \(a=\{a_1,a_2,\dots,a_n\}\),有以下两种操作:若 \(a_i=a_{i+1}\),则可将 \(a_i\)\(a_{i+1}\) 同时加 \(1\);将 \(a_i\)\(2\)。求问是否可经过多此操作后使得所有 \(a_i\) 相等。

Solution

相当于按奇偶性做匹配,不难想到用栈维护,碰到奇偶性相同的就消去,如果最后栈内剩余元素数量不超过 1 则 YES

Description

\(n\) 个节点的树,每个节点有一点权 \(a_i\)。定义 \(\textrm{dist}(x,y)\)\(x\)\(y\) 的边数。选取一点 \(v\),使 $ \sum_{i=1}^{n}a_i \cdot \textrm{dist}(i ,v)$ 最大

Solution

典型换根 dp,设 \(1\) 号点为根,设 \(s[i]\) 表示点 \(i\) 子树中的权值和,\(f[i]\) 表示 \(v=i\) 时的答案,首先我们可以通过一次 DFS 算出 \(f[1]\),同时有转移方程

\[f[q]=f[p]-s[q]+s[1]-s[q]=f[p]+s[1]-2s[q] \]

Description

给定一个长度为 $ n $ 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列。即在任意一个位置前缀左括号的个数不少于前缀右括号的个数,同时整个序列左右括号个数相同 $ 1 \leq n \leq 10^6 $

Solution

将左括号记为 \(1\),右括号记为 \(-1\),这个数字序列记为 \(a[]\),它的前缀和记为 \(s[]\),同时记录每一个后缀 \(a[i..n]\) 的最小前缀 \(f[i]\)
计算 \(f[]\) 时,只需要倒序递推即可(类似最大子段和的处理)
如果一个位置 \(i\),满足所有 \(i\) 之前的前缀都合法,且 \(s[n]-2a[i]=0\),并且 \(s[i-1]-a[i]+f[i+1] \ge 0\),则这个位置是满足条件的

给定 \(n\) 个点,每个点有点权,连结两个点花费的代价为两点的点权和。另外有 \(m\) 条特殊边,参数为 \(x,y,z\)。意为如果你选择这条边,就可以花费 \(z\) 的代价将点 \(x\) 和点 \(y\) 连结起来,当然你也可以不选择这条边。求使整个图联通的最小代价

Solution

模拟 Kruskal 过程,同时维护每个集合的最小点权,每次比较当前最小特殊边的边权和最小点权的两个集合的和,走比较小的那一个
std::set 维护即可

Description

有一颗树,每个点有一个点权,边权都是 \(1\),问路径上的所有点的 gcd 不是 \(1\) 的最长路径是多少?

Solution

分治到每个点时,考虑当前分治范围内经过该点的路径。
对于每个子树,记录一个映射,表示每个数能到达的最深的深度,边搜索边更新即可。
维护当前分治主树的映射,枚举完一个子树后,用子树映射和主树映射中的值更新答案,并将子树映射并入主树映射中。

Description

给定一个回文字符串,\(n \le 5000\),如今想将这个字符串用 \(k\) 刀切成 \(k+1\) 个部分,然后对这 \(k+1\) 个子串重新排列(不能改变子串内部的字符顺序)使得得到的新串也为回文串且不与原串一样。求出这个最小的数 \(k\)。如果做不到,则输出 Impossible

Solution

无解的充要条件是原串对称轴一侧的所有字母均相同,如果有解则解不超过 \(2\)
\(O(n^2)\) 的时间检验答案是否可以为 \(1\)
如果答案为 \(2\),则一定是剪下两个长度为 \(len\) 的分别是前后缀的子串,相互交换,也可以花 \(O(n^2)\) 的时间检验
(结论也太神仙了……)

[CF1110D] Jongmah

Description

你手上有 \(n\) 个麻将,每个麻将上有一个在 \(1\)\(m\) 范围内的整数 \(a_i\)。为了赢得游戏,你需要将这些麻将排列成一些三元组,每个三元组中的元素是相同的或者连续的。请求出你最多可以形成多少个三元组。

Solution

连续三元组的数目在少于三个时才是必要的,大于等于三个时可以直接用相同三元组代替
因此设 \(f[i][j][k]\) 表示考虑完了 \([1,i]\) 的牌并且也可能使用过 \(i+1,i+2\) 的牌,\((i-1,i,i+1)\) 的组合有 \(j\) 个,\((i,i+1,i+2)\) 的组合有 \(k\) 个,此时的最大三元组数是多少
这一次做完以后,i 就彻底不能用了,因此我们要在这里判断 i 是否够用,如果不够用则这种状态直接非法,如果够用就转移
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

给定两个数列 \(c,t\),每次操作可以选择一个 \(i\),令 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\),问进行若干次操作后,是否能使得数列 \(c\)\(t\) 相等。

Solution

分析差分序列,将 \(c_{i-1},c_i,c_{i+1}\) 变为 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 后,差分序列从 \(c_i-c_{i-1},c_{i+1}-c_i\) 变为 \(c_{i+1}-c_i,c_{i}-c_{i-1}\),即差分序列的相邻两项交换了。
因此每次操作的实质就是交换差分序列的相邻两项。
于是,若原序列满足 \(c_1=t_1,c_n=t_n\),我们只需要比较差分序列的元素多重集是否相等即可。

Description

$ n $ 个方块排成一排,第 $ i $ 个颜色为 $ c_i $。定义一个颜色联通块 $ [l,r] $ 当且仅当 $ l $ 和 $ r $ 之间所有方块的颜色相同。现在你可以选定一个起始位置 $ p $,每次将 $ p $ 所在颜色联通块的所有方块颜色改成另一种。这个操作可能将多个颜色联通块合并成一个。问最少要多少步,能让 $ [1,n] $ 变成一个颜色联通块。

$ 1\le n,c_i\le 5000 $

Solution

先把序列 unique 一下,使得相邻两个位置颜色总不同,然后区间 DP
考察 \(c[i]\)\(c[j]\) 是否相等,如果相等则 \(f[i][j]\) 的转移来源为 \(f[i+1][j-1]\),否则转移来源在 \(f[i+1][j],f[i][j-1]\) 中选取

Description

坐标系上有一只小船,现在想从 $ (x_1,y_1) $ 去 $ (x_2,y_2) $。每时刻都有风,会把船往对应的风向吹一个单位(比如北风会把船往南吹),风是循环的,吹完 $ s_1 \sim s_n $ 就又会从 $ s_1 $ 开始。船在每一时刻都可以向指定方向移动一个单位。求船到目的地的最少时间,如果不能到达输出 -1。

Solution

容易证明关于总时间满足可二分性
判断时,加上 \([mid/n]\) 个周期偏移,加上 \(mid \bmod n\) 的单偏移后,检查曼哈顿距离是否不大于 \(mid\) 即可

[CF1117D] Magic Gems - 矩阵乘法优化dp

Description

一颗魔法宝石可以分解为 m 颗普通宝石,魔法宝石和普通宝石都占据 1 体积的空间。现在有一大堆带编号的魔法宝石,可以选出一部分宝石,然后指定一种一部分魔法宝石分解,求有多少种选出体积为 n 的集合的方案。\(n \le 10^{18}, m \le 100\)

Solution

\(f[i]\) 表示用了 \(i\) 个单位空间时的方案数,考虑最后一个选出的魔法宝石是否分解,于是有 \(f[i]=f[i-1]+f[i-m]\),由于 \(m\) 很小,矩阵快速幂即可

Description

给定 \(n\) 种木棍,第 \(i+1\) 种有 \(a_i\) 个,长度为 \(2^i\),求用这些木棍可以同时拼出多少个三角形(不可重复使用同一根)

Solution

容易发现三角形一定要满足 \(ABB(A\le B)\) 的结构,于是我们从大到小考虑所有依次打包成 \(BB\),如果有多余的就可以当做 \(A\) 与一个已有的 \(BB\) 匹配,答案 \(+1\);最后如果有没有匹配完的 \(BB\),则自己拆掉一些 \(BB\) 来匹配,设个数为 \(c\),则答案 \(+[2c/3]\)

Description

给定一个长度为 \(n (n \le 5000)\) 的字符串,要求将其划分为若干段。每一段要么长度为 \(1\),要么是本段之前部分的子串。前者代价为 \(a\),后者代价为 \(b\),求最小总代价。

Solution

\(f[i]\) 表示划分完 \(s[1..i]\) 的最小总代价,则有

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

考虑到 \(f[]\) 具有单调性,因此在第二种转移中,\(j\) 一定要尽可能大,设 \(LCS(i,j)\) 表示 \(s[1..i]\)\(s[1..j]\) 的最长公共后缀,则有

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

\(LCS(i,j)\) 可以很轻易地用 SA 求出,事实上,由于

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

可以在 \(O(n^2)\) 时间内预处理出 \(LCS(i,j)\),故总时间复杂度为 \(O(n^2)\)

有两个正整数序列 \(a,b\),长度分别为 \(n,m\)。给出所有 \(a_i\)\(b_j\) \((1\le i\le n,1\le j\le m)\) 的大小关系(大于,小于或者等于),请构造出符合条件的 \(a\)\(b\)。如果无解,输出 NO。如果有多个解,输出 \(a,b\) 中最大元素最小的方案。

Solution

并查集将所有等于的数合并起来,然后建图拓扑排序,最后 check 一下拓扑排序的结果以检查是否有环

给你一个串 \(s\),每次可以花费 \(1\) 的代价删去一个子串,要求子串的每一位为同一个字符。求删去整个串的最小代价。\(1\le |s|\le 500\)

Solution

\(f[i][j]\) 表示删除子串 \([i,j]\) 的最小花费,则

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

现有 \(n\) 个人,每个人都有各自的能力值,要你把他们分成 \(k\) 组(每组人数不限),使得每组中任意两个人的能力值之差不超过 \(5\),问你最多可以把多少人分到组中。

Solution

\(f[i][j]\) 表示将前 \(i\) 个人分成 \(j\) 段,且第 \(i\) 个人一定被使用时的最大总人数

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

其中 \(l=lower\_bound(a[i]-5)-1\)

Description

给定一个长度为 $ n $ 的 $ 1-n $ 的全排列,第 $ i $ 个数表示站在第 $ i $ 位的学生的编号

给定 $ m $ 对 $ (u,v) $,如果编号 $ u $ 的学生在编号 $ v $ 的学生前面一位,则可以将他们的位置互换,问最后一个学生能向前移动多少位

Solution

从右往左扫描所有位置,将每个位置上的人尽可能地向右换即可

Description

给定一个长度为 \(n\) 的数组,其中有些位置未定(可在 \([1,k]\) 中任意取值),问有多少种填数的方案可以使得数组中不存在长度为奇数的回文子串。

Solution

即不存在长度为 \(3\) 的回文串
即对任意 \(i\)\(a_i \neq a_{i+2}\)
考虑分奇偶位处理,方案数相乘
于是转化为相邻两位不相同的方案数
考虑对于每一段连续的 \(-1\) 分别处理
\(f[i][0]\) 表示长度为 \(i\)\(-1\) 段的左边和右边的元素相同的方案数,\(f[i][1]\) 为不同,则有

\[f[i][0]=(k-1) \cdot f[i-1][1] \\ f[i][1]=(k-2)\cdot f[i-1][1] +f[i-1][0] \]

Description

有一个序列 \(a_1,a_2,a_3...a_n (n\le 1500)\),定义 \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\),找到最大的 \(k\) 使得 \((l_1,r_1)=...=(l_k,r_k)\) 且区间 \([l_1,r_1]...[l_k,r_k]\) 互不相交

Solution

很暴力的贪心问题
处理出每一个子串的和,记录为 \((l,r,sum)\) 的形式,将它们按照 \(sum\) 为第一关键字,\(r\) 为第二关键字排序
然后对于每一个 \(sum\) 相同的段内,经典贪心即可

Description

\(n\) 个城市和 \(n-1\) 条道路。政府决定向这些公司出售道路。每条路都属于一家公司。如果有一家公司拥有两条或两条以上的进入这个城市的道路,那么这个城市是不好的。希望这样不公平的城市数量不超过 \(k\),那么最少需要多少公司?

Solution

答案显然为度数从大到小排序后的第 \(k+1\) 个,构造方案时贪心即可

Description

给定长度为 \(n\) 的母串和三个子串 \(s_1,s_2,s_3\)。初始时子串均为空。
\(q\) 次询问。你需要支持两种操作:向某个子串末尾添加一个字母,或者删去某个子串末尾的字母。
在每次操作后,你需要回答,是否能从母串中分离出三个不相交的子序列,满足这三个子序列恰好是 \(s_1,s_2,s_3\)
在任意时刻,\(s_1,s_2,s_3\) 的长度均不会超过 \(250\)
\(1 \le n \le 10^5\) , \(1\le q \le 10^3\)

Solution

\(f[i][j][k]\) 表示三个子串分别匹配到了第 \(i,j,k\) 个字符,在母串中推进的最短距离
\(g[i][c]\) 表示 \(S[i..n]\) 内字符 \(c\) 第一次出现的位置

\[f[i][j][k]=\left\{ \begin{aligned} & g[f[i-1][j][k]+1][s_1[i]] \\ & g[f[i][j-1][k]+1][s_2[j]] \\ & g[f[i][j][k-1]+1][s_3[k]] \end{aligned} \right. \]

初始条件 \(f[0][0][0]=0\),其余初值设为 \(+\infty\)
对于插入操作,暴力计算即可,每次 \(O(l^2)\)
对于删除操作,减小串长即可
对于询问,比较 \(f[l_1][l_2][l_3]\) 是否 \(\le n\) 即可

Description

给定两个正整数 $ a,b $,找到非负整数 $ k $ 使 $ a+k $ 与 $ b+k $ 的最小公倍数最小,如有多解输出最小的 $ k $

Solution

两数的差始终为 \(b-a\),而两数的 \(gcd\) 必然是 \(b-a\) 的因数
因此枚举 \(b-a\) 的因数作为 \(g\),然后求出能使得 \(g|(b+k)\) 的最小的 \(k\),很显然此时一定满足 \(g|(a+k)\)

有一个由所有长为 \(2n\) 的合法括号序列组成的 trie,现在要求这棵树上最多的边数,符合边两两之间均没有共同节点。

Solution

首先设根的深度为 \(0\),我们可以只选 trie 上所有深度为偶数的点和父亲的连边,于是答案就是 trie 上深度为奇数的点的个数
然后就是一个很套路的 dp,设 \(f[i][j]\) 表示有了 \(i\) 个左括号,\(j\) 个右括号的方案数,则

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

于是答案为

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

为了方便起见可以把坐标整体 \(+1\)

Description

\(n\) 个节点以 \(1\) 为根的一棵树,每个非叶子节点都有一个操作 \(\max\)\(\min\),表示这个节点中的值应该分别等于其子节点中所有值的最大值或最小值。假设树上有 \(k\) 个叶节点,你可以将每个叶节点填上 \([1,k]\) 的数字,且每个数字只使用一次,求根节点的最大值。

Solution

\(f[p]\) 表示 \(p\) 在其子树叶子结点中的权值排名的最大值
对于叶子结点,\(f=1\)
对于 \(\min\) 结点,\(f[p]=\sum_{p\to q} f[q]\)
对于 \(\max\) 结点,\(f[p]=\min_{p \to q} f[q]\)

给你一个在数轴上的点集 \(x_1, x_2, \dots, x_n\)。 每两个点 \(i\)\(j\) 可以在满足以下情况的时候相连: 点 \(i\) 和点 \(j\) 均未与其他点相连;\(\left| x_i - x_j \right| \geq z\)。那么请你求出最多可以连接多少点对?

Solution

双指针一遍即可
不知道这个题怎么评的分

Description

给定一个长度为 \(n\) 的排列 \(p\),求有多少区间 \([l,r]\) 满足 \(p[l]+p[r]=max\{p[i]\}\),其中 \(l \le i \le r\)

Solution

单调栈预处理出每个元素的控制区间(以它为最大值的区间)
枚举最大值位置 \(i\),于是 \(l \in [l[i],i], r \in [i,r[i]]\)
考察两个区间的长度,在小的那个中枚举,则只需要检查差是否在大区间中出现
用排列的逆来检查,值 \(x\)\(p_l,...,p_r\) 中出现,即 \(l \le I_x \le r\),其中 \(I\)\(p\) 的逆
显然每个元素被枚举次数的上界为 \(O(\log n)\),于是时间复杂度为 \(O(n \log n)\)

Description

给出两个整数 $ n \(,\) k $ 你需要构造出一个有 \(k\) 项的数列 $ A $ 满足以下条件:

  • 对于任意的 $ i\in [1,k] $ 有 $ A_i>0 $
  • 对于任意的 $ i\in (1,k] $ 应当有 $ A_{i-1}<A_i\le2A_{i-1} $
  • $ \sum\limits_{i=1}^kA_i=n $

Solution

首先我们可以构造一个等差数列 \(a_i=i\),如果此时 \(s>n\) 则必然无解
考虑先对每个位置加上 \([\frac {n-s} k]\),剩下 \((n-s) \bmod k\) 要加
考虑到 \(k\) 很小,我们从右往左依次枚举位置,每次暴力加一个后缀,倒序循环 \(+1\) 即可

Description

输入 \(n\) 个数,构造一个最大的环,环上任意 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)\(a_i \le 2 \times 10^5\)

Solution

一定要找一段 \(l,l+1,l+2,...,r\),其中除了 \(l,r\) 可以只出现一次以外,其它的都至少要出现两次
考虑到 \(a_i \le 2\times 10^5\),用桶处理一下即可

Description

在一个平面直角坐标系中,给你 $ n(2≤n≤50) $ 个点的坐标。这 $ n $ 个点中,每两个点之间都有一条直线(注意不是线段) 相连。求:这些直线中,有多少对直线相交。
1.当多点共线时,不认为由这几个点产生的直线有交点;

2.多条直线交于一点时,并不代表这几条直线在这个点相交时只产生一个交点,而是每两条直线都要统计一次。

Solution

熟悉一下板子(这题为什么有1900?)

给定由 \(n\) 个整数组成的集合 \(A\)。现给定 \(m\) 组集合,每个集合 \(S_i\) 都是 \(A\) 的一个真子集(这里的集合描述为 \(A\) 中元素下标集合),求是否存在集合 \(A\) 使得对 \(\forall_{1 \leq i \leq m}\) 不等式 \(LCM(S_i) > LCM(A - S_i)\) 恒成立。

Solution

如果存在两个集合没有交集,设为 \(S,T\),则 \(LCM(S)> LCM(A-S) \ge LCM(T)\),破坏了对称性,则一定无解
否则我们给每个集合安排一个质数 \(p_i\),设用过的所有质数集合为 \(P\),设 \(\prod S\) 是整数集合 \(S\) 的广义积,那么对于集合 \(i\),其 \(LCM\)\(\prod P\),而其补集一定不大于 \(\prod P-\{ p_i \}\),于是一定存在解

给出 \(01\)\(s\),求数对 \([l,r]\) 个数,使得能找到至少一对 \(x,k\),使 \(1\le x,k \le |s|\)\(l\le x<x+2k \le r\)\(s[x]=s[x+k]=s[x+2k]\)

Solution

考虑一个暴力,对于所有的 \(l\),暴力找到最小的能满足条件的 \(r\)
容易证明 \(r\) 是关于 \(l\) 单调的,于是倒序扫描 \(l\) 即可

给定一圆,上均匀分布有 \(n\) 个节点(不重合,从 \(1\)\(n\) 编号)。它们按照输入连成一棵树。求合法树的方案总数,对 \(998244353\) 取模。一棵树是合法的,当且仅当这棵树中无交叉的边(两边共用一端点除外)。

Solution

思路上类似树形 dp 吧
对于点 \(p\) 的子树,它在排列中必定是一段连续的区间,否则就会和其它的子树相交
不妨设 \(p_1=1\),设点 \(i\) 的度数为 \(d_i\),从根 \(1\) 开始,我们可以任意决定各个子树之间的顺序,然后递归下去
于是答案为 \(n \prod_{i=1}^n d_i!\)

Description

给两个数 $ n $ 和 $ x $,构造一个满足以下条件的序列:

  • 对任何序列中的元素 $ a_i \(,\) 1\le a_i<2^n $
  • 序列中没有非空连续子序列异或和为 $ 0 $ 或 $ x $
  • 序列长度 $ l $ 应该最大

Solution

构造前缀和序列 \(s_i = \oplus_{j=1}^i a_i\),每次暴力找一个 \([1,2^n)\) 的数,使得 \(s_i\) 没有出现过即可

两数列 \(a , b\),如果 \(a_i\) 是素数,那么 \(b\) 数列里添加上第 \(a_i\) 个素数(\(2\) 为第一个),如果不是素数,那么 \(b\) 数列里添加上 \(a_i\) 的最大因子。现在给出添加完之后的 \(b\) 数列,求出 \(a\) 数列。

Solution

从大到小枚举合数,删去它的最大因子
从小到大枚举质数 \(p\),删去第 \(p\) 个质数

Description

序列 \(123456789101112131415161718192021222324252627282930313233343536...\) 是无穷无尽的,现在你要输出它的第 \(k\) 项。\(k \le 10^{12}\)

Solution

分步处理

  • 找到答案所在数的位数
  • 找到答案所在数在当前位数中排第几
  • 找到答案在答案所在数是第几位

Description

一面国旗可以抽象为一个 $ n\times m (n,m \le 1000)$ 的矩形,每一个位置有一个颜色。这个矩形由自上而下三条横向的颜色带组成,每一条颜色带宽度相等,而且相邻两个颜色带颜色不能相同。现在你有一个 $ n\times m $ 的矩形,你需要计算其中能够称为国旗的子矩形数量。

Solution

预处理 \(f[i][j]\) 表示以元素 \((i,j)\) 为顶端,在满足颜色相同的条件下,能向下延伸的最长距离
然后计算以每个点为右上角的 Flag 数量
对于单列的判断,只需要使用几个条件即可,判定位置 \(i+3d-1\) 合法,并且 \(i+d,i+2d\)\(f\) 值满足条件
考虑复列,如果第 \(j\) 列与第 \(j-1\) 列的颜色对应相同,并且延伸数符合条件,则将计数器 \(+1\),否则将计数器置 \(1\)
(用好题目条件来构造算法,简直太妙了)

Description

给定 \(m\) 个城市,每年会选择一个城市举办比赛,现在给出前 \(n\) 年举办比赛的情况。在接下来的年份中,每年的比赛会在举办比赛次数最小的城市举办,如果有多个最小值,则先在编号最小的城市举办。有 \(q\) 个询问,每个询问给定一个 \(k\),问第 \(k\) 年在哪个城市举办比赛。

Solution

考虑离线处理,将询问排序,维护一个集合表示当前轮可以举办的城市的编号集合,每次通过暴力 kth 来找答案,这样需要用平衡树维护,考虑是否有更简单的做法
\(n\) 场比赛每一场都会恰好使得后面的一场比赛被跳过,我们只需要求出被跳过的比赛的时刻即可
先不考虑被跳过的比赛之间的相互作用,设前 \(n\) 场中的第 \(i\) 场的举办地点是 \(x\),前 \(i\) 场中在 \(x\) 举办的场数是 \(c[x]\),则导致的被跳过的比赛的原有时刻为 \(m\cdot c[x]+x - 1\)
由于跳过的比赛之间会相互影响,我们不妨先记为 \(a[i]=m \cdot c[x] + x\),在对所有比赛进行排序后,令 \(a[i]=a[i]-i\),即得到了每次跳过的时间
最后求解答案时,只需要二分一下,减去 \(a[i] \le k-n\) 的个数即可

Description

你有一个长度为 $ n \le 100 $ 的字符串。对于一个长度为 $ m $ 的子序列,选出它的花费是 $ n-m $,也就是你需要删掉的字符数量。你的任务是选出 $ k $ 个本质不同的子序列,使得总花费最小。输出这个最小花费。如果选不出 $ k $ 个,输出 $ -1 $。

Solution

\(pre[i]\) 表示 \(i\) 的前驱位置,设 \(f[i][j]\) 表示前 \(i\) 个字符,长度为 \(j\) 的本质不同子串的数量,则

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

给出一个 \(n\times m\) 的矩阵,你可以每次按照字母顺序添加横向或纵向的一条链,这条链会是 a~z 这 \(26\) 个小写字母中的一个,并且会覆盖原来的链。现在给出一个操作后的矩阵,要求回答是否可能形成这种情况,且每条链是从哪个点到哪个点。

Solution

倒序处理,将字母一层一层剥开,同时记录前层中留下来的“无关”位置,即该位置由于先前被覆盖,现在可有可无
于是我们对于当前字母 c,找到 c 字母的四边界,检查这是否是一条直链,如果不是则退出
如果是,则检查这条直链范围内加上无关字母是否能填满,如果不能则退出

给定一棵 \(n\) 个点的树,初始全是白点,要求你做 \(n\) 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。

Solution

显然如果选定了开始点,那么答案就是固定的
设开始点为根,则答案为所有子树的大小和
设以 \(i\) 为根的答案为 \(f[i]\)
则显然有 \(f[v]-f[u] = n-2s[v]\)
两次 DFS 即可

[CF1188B] Count Pairs - 数学

Description

给定一个质数 \(p\) , 一个长度为 \(n\) 的序列 \(a_1,a_2,...,a_n\)和一个整数 \(k\),求所有数对 \((i, j) (1 \le i,j \le n)\) 中满足 \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 的个数。

Solution

因为 \(p\) 是质数,所以任意非零元素有逆元,因此乘法运算满足消去律
这样我们就可以在原式的两侧同时乘上一个 \(a_i-a_j\),化简得到 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)

[CF11D] A Simple Task - 状态压缩dp

Description

求简单无向图的环数。

Solution

钦定最小编号的点是每个环的起点,这样找环就变成了找环路
\(f[s][i]\) 表示遍历过的点集为 s,当前点为 i 的路径数
转移时判定一下状态的 Lowbit 和新点的关系即可

\(n\) 个单词,想把这个 \(n\) 个单词变成一个句子,具体来说就是从左到右依次把两个单词合并成一个单词,合并两个单词的时候,要找到最大的 \(i(i\ge 0)\),满足第一个单词的长度为 \(i\) 的后缀和第二个单词长度为 \(i\) 的前缀相等,然后把第二个单词第 \(i\) 位以后的部分接到第一个单词后面,输出最后那个单词。

Solution

前缀配后缀,想到 KMP
每次构造一个待匹配串在前,已匹配串在后的串,计算这个串最后一位的 \(next\) 值就是本次匹配的宽度
注意已匹配串的长度最多只需要截取到待匹配串的长度即可

有一个 \(n\times m\) 的网格,方格上有 \(k\) 个宝藏,一个人从 \((1,1)\) 出发,可以向左或者向右走,但不能向下走。给出 \(q\) 个列,在这些列上可以向上走,其他列不能向上走。可以重复经过同一个点。求从 \((1,1)\) 出发,经过所有宝藏的最短路径长度。\(n,m,k,q\leq 2\times 10^5\)

Solution

\(f[i][0/1]\) 表示从 \((0,0)\) 走到 \(i\) 行的左侧/右侧,并遍历了 \(1 \to i-1\) 行的所有宝物的最短路径长度
(挺怕这种题的)

Description

给你一个数 $ n $,求出一个有 $ n $ 个子序列为 $ 1337 $ 的序列,序列长度不能大于 $ 10^5 $。

Solution

考虑 1 + n个3 + m个7
则方案数为 \(\frac {mn(n-1)} 2\) 种,不一定能用
于是考虑 133 + k7 + (n-2)3 + m7
则方案数为 \(\frac {mn(n-1)} 2 +k\)
不妨取 \(n=300\),然后暴力尝试 \(m\) 并计算 \(k\),最后选择一个可行的即可

[CF1203F1] Complete the Projects - 临项交换排序

Description

打第 i 场比赛需要 ai 的 rating,打完第 i 场比赛后 rating change 是 bi,rating 必须非负。求是否存在顺序能完成所有项目。\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

临项交换排序
对于 bi > 0 的部分,显然按 ai 排序
否则,按 ai+bi 排序即可

假如 1,2,初态为 r,此时要求 r>=a1, r>=a2-b1,若交换,则 r>=a2, r>=a1-b2,于是我们希望 max(a1,a2-b1)<=max(a2,a1-b2)
于是 a2+b2>=a1+b1

[CF1204D2] Kirk and a Binary String - 思维

Description

给定一个 01 串,要你求出另一个长度相等串使得任意区间内最长不降子序列的长度与原串相等且 0 的总数尽量多。

Solution

我们要将一些 1 改成 0,将某一个 1 改成 0 的条件是它后面的 0 的个数不少于 1 的个数,这个条件保证了这次修改不会影响正确性
在这个条件下,我们贪心地修改,倒序扫描整个序列,能修改就修改

括号序列视角:0 看成左括号,1 看成右括号,那么最长不降子序列就是最长的可以匹配的子括号序列长度,这样理解起来会很清楚

\(n(n\leq 10^5)\) 个数 \(a_1,...,a_n\ (a\leq 10^{18})\) 。有一个图用这个方法生成,若 \(a_i\) 按位与 \(a_j\) 不为 \(0\),则在 \(a_i,a_j\) 间连一条无向边。求这个图的最小环,若无环输出 \(-1\)

Solution

\(a_i=0\) 的数字删掉
\(n \ge 128\) 时,至少有一个二进制位满足该位为 \(1\) 的数个数 \(\ge 3\),即形成三元环
\(n<128\) 时,暴力建图后用 Floyd 跑最小环即可

[CF1207F] Remainder Problem - 根号分治

Description

给你一个长度为 \(500000\) 的序列,初值为 \(0\) ,你要完成 \(q\) 次操作,操作有如下两种:

  • 1 x y : 将下标为 \(x\) 的位置的值加上 \(y\)
  • 2 x y : 询问所有下标模 \(x\) 的结果为 \(y\) 的位置的值之和

Solution

根号分治,设 \(b=\sqrt{500000}\),那么我们对所有 \(r \le b\) 维护 \(sum[r][i]\) 表示下标模 \(r\) 等于 \(i\) 的所有位置的答案和
每次修改时,假设这个位置的新值是 x,那么我们需要对所有 \(r \le b\),在 \(sum[r][x\%r]\) 的位置修改,同时修改旧位置
询问时,如果 \(x \le b\) 那么直接调出结果,否则暴力查询原始序列

Description

现在有一个从 $ 1 $ 到 $ n $ 的一个全排列,但是你不知道这个排列到底是什么,但是你有一个 $ sum[i] $,其中 $ sum[i] $ 表示 $ \sum_{j=1}^{i-1}(a_j<a_i)?a_j:0 $,现在给你 $ sum $ 数组,让你求出这个排列 $ a $

Solution

首先找到最靠后的 \(0\),将这个位置 \(s\) 赋值为 \(\infty\)\(a\) 赋值为 \(1\),同时将它后面所有的 \(s-1\),重复下去即可
用线段树维护

\(n\) 天时间来买一种物品,一共要买 \(k\) 件,第 \(i\) 天可以购买的范围是 \([a_i,b_i]\),单价 \(c_i\),求最小总花费

Solution

暴力贪心,从最便宜的开始买即可
写完才发现原题要求用 Kotlin,我当做没看见了
主要是借着这题试用了一下 lambda 表达式

给定两个长度为 \(2\) 的串,你需要构造一个长度为 \(3n\) 的串,使得 a,b,c 三种字母各出现 \(n\) 次,且它不包含这两个串,字符集中仅有 a,b,c

Solution

画出转移图,\(3\) 个点,\(7\) 条边,可能不连通
但是很容易证明以下构造模式集可以对所有有解的情况给出合法的构造
(以 \(n=2\) 为例)

aabbcc
aaccbb
bbaacc
bbccaa
ccaabb
ccbbaa
abcabc
acbacb
bcabca
bacbac
cabcab
cbacba

于是我们用每种模式构造一个串,检验是否合法即可

给你一个有 \(n\) 个点的带权树,有 \(m\) 个查询,每次查询最大权值不大于 \(x\) 的点对的数目

Solution

模拟 Kruskal 的过程,并将整个过程的答案记录下来
询问 \(x\) 的时候,二分找到最后一个 \(\le x\) 的位置,输出这个时刻的答案即可

给你 \(d_i (\le n)\),要求你构造一棵树满足点 \(2i\)\(2i-1\) 距离为 \(d_i\)

Solution

关键在于这个神奇的 \(d \leq n\)
按照 \(d_i\) 从大到小排序,并且将所有奇数点串成一条链
依次考虑每个偶数点挂在哪里
对于链上第 \(k\) 个点,它的偶数点应该被挂在 \(k+d_i-1\) 个点的下面
如果第 \(k+d_i-1\) 是链上最后一个点,就需要再挂一个点来进行扩充
可以证明被挂的点一定存在

Description

缁欏畾涓€涓� \(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屾壘鍒颁袱涓偣 \(s,t\)锛屼娇寰� \(s\) 鍒� \(t\) 蹇呴』缁忚繃鐨勮竟鏈€澶氥€�

Solution

杈瑰弻鍐呯殑杈规樉鐒堕兘涓嶆槸鍏抽敭杈癸紝鍚﹀垯蹇呮槸锛屼簬鏄缉鐐瑰悗姹傜洿寰勫嵆鍙�

[CF1006F] Xor-Paths

Description

缁欏嚭涓€涓� n 脳 m 鐨勭綉鏍硷紝姣忎釜鏍煎瓙涓婃湁鏉冨€� \(a[i][j]\)锛岃浠� (1,1) 璧板埌 (n,m)锛屾瘡娆″彧鑳藉悜鍙虫垨鍚戜笅璧帮紝娌胯矾璁$畻寮傛垨鍜岋紝姹傚紓鎴栧拰绛変簬 k 鐨勮矾寰勬暟銆�

Solution

鍙屽悜 BFS锛岀敱浜庤璧扮殑鎬绘鏁颁负 \(steps=n+m-2\)锛屾鐫€璧� \(steps/2\)锛屽弽鐫€璧� \((steps+1)/2\)锛岀劧鍚庡悎璧锋潵鐢� map 绠楃瓟妗堝嵆鍙�

Description

鎴戜滑灏嗕竴涓棤鍚戝浘绉颁綔浜掕川鍥撅紝褰撲笖浠呭綋瀵逛簬鍏朵腑姣忎竴鏉¤竟 \((v, u)\) 鏈� \(v\) 鍜� \(u\) 浜掕川锛堜篃鍗� \(GCD(v,u)=1\)锛夈€傚綋涓や釜椤剁偣涔嬮棿娌℃湁杈规椂涓嶉渶瑕佽€冭檻銆傞《鐐逛粠 \(1\) 寮€濮嬫爣鍙枫€�
鐜板湪缁欎綘 \(n\) 涓《鐐瑰拰 \(m\) 鏉¤竟锛岃姹備綘寤虹珛涓€涓棤閲嶈竟鍜岃嚜鐜苟涓旇繛閫氱殑浜掕川鍥撅紝鎴栬€呭垽瀹氭棤娉曟瀯閫犮€�

Solution

璁惧皢姣忔潯杈规弿杩颁负 \((u,v)\)锛屾弧瓒� \(u<v\)锛岄偅涔堟垜浠粠灏忓埌澶ф灇涓� \(u\)锛屽啀浠庡皬鍒板ぇ鏋氫妇 \(v\)锛岃兘杩炲氨杩�
澶嶆潅搴︿笌 \(\varphi\) 鍑芥暟鐨勫墠缂€鍜屾湁鍏筹紝涓嶅Θ灏嗗叾瑙嗕綔 \(O(n \log n)\)
缁欎綘涓€涓� \(n \times m\) 鐨勭煩褰紝涓€寮€濮嬫湁 \(q\) 涓牸瀛愪笂琚爣璁般€傚浜庝换鎰忎袱琛屼袱鍒楋紝濡傛灉浜ゆ眹鐨勫洓涓牸瀛愪腑鏈変笁涓鏍囪锛岄偅涔堢 \(4\) 涓細琚嚜鍔ㄦ爣璁般€傞棶浣犺嚦灏戦渶瑕佹墜鍔ㄦ爣璁板嚑涓牸瀛愶紝浣垮緱鏁翠釜鐭╁舰鍐呯殑鏍煎瓙閮借鏍囪銆�

Solution

琛屽拰鍒楀垎鍒搴斾簩鍒嗗浘鐨勫乏閮ㄥ彸閮紝鏍煎瓙瀵瑰簲杈癸紝閭d箞鎴戜滑鍙渶瑕佹墜鍔ㄤ娇寰椾簩鍒嗗浘杩為€氾紝閫氳繃鑷姩鏍囪鐨勬搷浣滃氨鍙互寰楀埌瀹屽叏浜屽垎鍥�
浜庢槸绛旀涓鸿繛閫氬潡鏁伴噺 \(-1\)

Description

宸茬煡涓€涓� \(n脳m\) 鐨勭煩闃碉紝姣忚姣忓垪鍏冪礌鐨勫紓鎴栧拰锛岃鏋勯€犱竴涓弧瓒宠姹傜殑鐭╅樀銆傝嫢涓嶅瓨鍦紝杈撳嚭"NO"锛屽惁鍒欒緭鍑�"YES"鍜岀煩闃点€�

$ n,m \leq 100 $

Solution

灏嗗墠 \((n-1)(m-1)\) 璁句负 \(0\)锛屽彧閫氳繃鏈€鍚庝竴涓� \(L\) 鍨嬫潵鏋勯€�

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暟鍒楋紝鍒濆鍏ㄩ儴涓� \(0\) 锛屼綘鍙互浠绘剰锛堜换閫夊尯闂达級杩涜 \(q\) 娆℃搷浣滐紝绗� \(i\) 娆℃搷浣滀娇 \([l_i,r_i]\) 鍐呯殑鏁板叏閮ㄥ彉涓� \(i\) 锛屼綘蹇呴』杩涜鍏ㄩ儴 \(q\) 娆℃搷浣滐紝涓旀瘡涓搷浣滃尯闂撮兘涓嶈兘涓虹┖锛屾墍鏈夋搷浣滃尯闂寸殑骞跺繀椤讳负 \([1,n]\)銆傜幇鍦ㄧ粰浣犱竴涓暟鍒楋紝鍏朵腑 \(0\) 浠h〃杩欎釜浣嶇疆鍙互鏄换浣曟暟锛岄棶浣犺兘鍚﹂€氳繃涓婅堪鐨� \(q\) 娆℃搷浣滃緱鍒拌繖涓暟鍒椼€傝緭鍑烘柟妗堛€�

Solution

浠ヤ笅 \(m\) 鍗充负棰橀潰涓殑 \(q\)

鏃犺В鐨勫垽瀹�

濡傛灉涓や釜鏁颁箣闂村瓨鍦ㄦ瘮瀹冧滑灏忕殑鏁帮紝鍒欐棤瑙�
濡傛灉搴忓垪涓笉瀛樺湪鍊间负 \(m\) 鐨勬暟锛屽垯鏃犺В

瑙g殑鏋勯€�

鑰冭檻涓� \(0\) 鐨勪綅缃渶瑕佹€庢牱澶勭悊

濡傛灉鏁板垪涓病鏈� \(m\)锛屽垯浼樺厛濉� \(m\)

濡傛灉鏌愪釜浣嶇疆鐨勫乏渚у彸渚у悓鏃跺瓨鍦� \(x\)锛屽垯璇ヤ綅缃� \(\ge x\)锛屾崲瑷€涔嬫垜浠湪杩欎釜浣嶇疆闇€瑕佸彇瀹冨乏杈瑰彸杈归兘鏈夌殑鏁颁腑鐨勬渶澶у€�

鍚﹀垯濉� \(1\)

濡備綍缁存姢

鑰冭檻缁存姢涓€涓� std::set锛屽湪鏌愪釜鏁扮涓€娆″嚭鐜版椂 insert(x)锛屾渶鍚庝竴娆″嚭鐜版椂 erase(x)
閭d箞鎴戜滑姣忔鍙� *s.rbegin() 鍗冲彲

[CF1025D] Recovering BST - 鍖洪棿dp

Description

缁欏畾涓€妫典簩鍙�鎼滅储鏍� \(n \le 700\) 鐨勬墍鏈夌偣鏉冿紝鏋勯€犱簩鍙夋爲婊¤冻浠绘剰涓や釜鐩存帴鐩搁偦鐨勭偣鐨勬潈鍊肩殑 GCD 涓嶆槸 1

Solution

杩欑鍏充簬浜屽弶鎼滅储鏍戜腑搴忛亶鍘嗙殑 DP 闂锛岃鐘舵€佹椂蹇界暐鏍硅€岃€冭檻鍖洪棿锛屽洜涓鸿繖涓尯闂翠綔涓轰竴涓瓙鏍戯紝瀹冪殑鐖朵翰涓€瀹氭槸鍖洪棿宸︾鐐圭殑宸﹁竟鐨勭偣鎴栬€呭尯闂村彸绔偣鐨勫彸杈圭殑鐐�
璁� \(f[i][j]\) 琛ㄧず浠� \([i,j-1]\) 浣滀负 j 鐨勫乏瀛╁瓙鏄惁鍚堟硶
璁� \(g[i][j]\) 琛ㄧず浠� \([i+1,j]\) 浣滀负 i 鐨勫彸瀛╁瓙鏄惁鍚堟硶
杞Щ鏃讹紝鑰冭檻涓€涓尯闂� \([l,r]\)锛屾灇涓惧畠鐨勬牴 \(k\)锛岄渶瑕佹弧瓒� \(f[i][k]\) 骞朵笖 \(g[k][j]\)
濡傛灉姝ゆ椂 \(k\) 涓� \(l-1\) 鐩歌繛鏄悎娉曠殑锛岄偅涔堝氨鍙互杞Щ鍒� \([l-1,r]\)
濡傛灉姝ゆ椂 \(k\) 涓� \(r+1\) 鐩歌繛鏄悎娉曠殑锛岄偅涔堝氨鍙互杞Щ鍒� \([l,r+1]\)
鎬讳箣锛岃鐘舵€佹椂璁剧殑鏄€滃崐妫靛瓙鏍戔€濈殑鍚堟硶鎬э紝杞Щ鏃堕鍏堣€冭檻涓€涓尯闂村彲鑳芥湁鍝簺鏍癸紝鐒跺悗鍒嗗埆鑰冭檻杩欎簺鐐逛负鏍规椂锛屽悜澶栫殑杞Щ鎯呭喌

Description

缁欏畾涓や釜闆嗗悎 \(A,B\)锛岃姹傚湪浠绘剰鏃跺埢 \(A\) 涓厓绱犲皬浜� \(B\) 涓厓绱犮€傛瘡娆℃搷浣滃彲浠ユ坊鍔犱竴涓厓绱� \(x\) 鍒颁换鎰忎竴涓泦鍚堬紙鐢辩▼搴忔潵閫夋嫨锛夋垨鑰呭垹闄や竴涓厓绱� \(x\)锛屼繚璇佹坊鍔犵殑鍏冪礌浜掍笉鐩稿悓锛屽垹闄ょ殑鍏冪礌涓€瀹氬瓨鍦紝骞惰姹傚垹闄ょ殑鍏冪礌蹇呴』鏄� \(A\) 鐨勬渶澶у€兼垨鑰� \(B\) 鐨勬渶灏忓€笺€傛眰鏂规鏁般€�

Solution

姣忔鍒犻櫎鎿嶄綔浼氬鍓嶉潰鎵€鏈夌殑娣诲姞鎿嶄綔浜х敓鏌愮闄愬埗銆�
鍋囪鏈鍒犻櫎 \(x\)锛岄偅涔堝墠闈㈡墍鏈夊皬浜� \(x\) 鐨勫厓绱犻兘蹇呴』琚姞鍏� \(A\)锛屽ぇ浜� \(x\) 鐨勫厓绱犻兘蹇呴』琚姞鍏� \(B\)锛岀瓑浜� \(x\) 鐨勫厓绱狅紝濡傛灉 \(x\) 灏忎簬 \(A\) 鐨勬渶澶у€煎垯蹇呴』琚姞鍏� \(A\)锛屽ぇ浜� \(B\) 鐨勬渶灏忓€煎垯蹇呴』琚姞鍏� \(B\)锛屽惁鍒欏彲浠ヤ换鎰忛€夋嫨锛屾€绘柟妗堟暟 \(\times 2\)銆�
浣嗘渶鍚庝竴娆″垹闄ゅ悗杩樺彲鑳芥湁鑻ュ共娣诲姞鎿嶄綔锛屽浜庤繖浜涙坊鍔犳搷浣滐紝鎴戜滑鍦ㄥ垹闄ゅ叾涓皬浜� \(A\) 鐨勬渶澶у€笺€佸ぇ浜� \(B\) 鐨勬渶灏忓€艰€呭悗锛屽墿浣欑殑鍏冪礌鍙互浠诲彇鍒嗗壊鐣岋紝宸︿晶鍔犲叆 \(A\) 鍙充晶鍔犲叆 \(B\)銆傚亣璁惧厓绱犱竴鍏辨湁 \(c\) 涓紝鍒欑瓟妗� \(\times (c+1)\)銆�

Description

缁欏嚭涓€涓湪浜岀淮骞抽潰鐩磋鍧愭爣绯荤涓€璞¢檺鍐呯殑锛屽崟浣嶉暱搴︿负 \(1\) 鐨勬棤闄愬ぇ缃戞牸锛屾瘡鏉$洿绾块兘浠h〃閬撹矾銆傚張缁欎綘涓€鏉$洿绾� \(ax+by+c=0\)锛屼篃浠h〃涓€鏉¢亾璺€�

鐜板湪缁欎綘涓や釜鏍肩偣 \(A,B\) 鍧愭爣 \((x1,y1)\) 鍜� \((x2,y2)\)锛岃浣犳眰璇ヤ袱鐐归棿鏈€鐭殑閬撹矾璺濈銆�

Solution

姹傜煩褰氦鐐瑰悗鍐嶆眰璺濈
锛堝張鎶� fabs 鍐欐垚 abs 浜�
锛堜互鍙婂叧閿欎簡娴佸悓姝ヨ杩

Description

缁欎綘 \(n\) 涓暟锛屽幓鎺夊敖閲忓皯鐨勬暟浣垮緱鍓╀笅鏁扮殑鏈€澶у叕绾︽暟姣斿師鏉ョ殑澶с€傛棤瑙h緭鍑� \(-1\)銆�

Solution

棣栧厛灏嗘墍鏈夋暟闄や互鏈€澶у叕绾︽暟
璁� \(M=\max a_i\)锛岀淮鎶や竴涓《 \(b[]\)锛屽姣忎釜 \(i\)锛屽湪 \(b[a[i]]\) 澶� \(+1\)
鏋氫妇 \([1,M]\) 涓殑鎵€鏈夎川鏁� \(p\)锛岃€冭檻璁╂渶澶у叕绾︽暟涔樹互 \(p\)锛屼唬浠峰氨鏄垜浠渶瑕佸垹鍘绘墍鏈夌殑 \(a_i\) 婊¤冻 \(p|a_i\)锛屼簬鏄垜浠灇涓炬墍鏈� \(p\) 鐨勬暣鏁板€� \(q\)锛岀粺璁℃墍鏈� \(b[q]\) 鐨勫拰锛屽氨鏄� \(p\) 鐨勭瓟妗�
鏈€鍚庡鎵€鏈� \(p\) 鐨勭瓟妗堝彇鏈€灏忓€煎嵆鍙�
澶嶆潅搴︽槸 \(\sum_{p \leq M} M/i\)锛岀敱浜庢敹鏁涜緝蹇紝鍙互鎺ュ彈
鍒ゆ柇鑳藉惁鏁撮櫎鍗冲彲
CF 题解汇总
濡傛灉鑷繁鏄洖鏂囦覆鍙互鍋氫腑蹇�
濡傛灉涓€涓覆鍜屽彟涓€涓覆鐨勮浆缃浉绛夊垯鍙互鍑戜竴瀵�
浼樺厛閰嶅

Description

瀹氫箟涓€涓暟瀛楁槸濂芥暟锛屽綋涓斾粎褰撳畠鐨勫崄杩涘埗琛ㄧず涓嬫湁涓嶈秴杩� $ 3 $ 涓暟瀛� $ 1 \sim 9 $銆傜粰瀹� $ [l,r] $锛岄棶鏈夊灏戜釜 $ x $ 浣垮緱 $ l \le x \le r $锛屼笖 $ x $ 鏄ソ鏁般€�$ 1 \le l_i \le r_i \le 10^{18} $

Solution

甯歌鐨勬暟浣� dp锛岃 \(f[i][j]\) 琛ㄧず鍓� \(i\) 涓暟浣嶏紝鏈� \(j\) 涓潪闆舵暟浣嶆椂锛屾湁澶氬皯涓暟婊¤冻鏉′欢

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暣鏁板簭鍒楋紝浣犲彲浠ュ鍏跺仛涓ょ鎿嶄綔:

  • 閫� \(i!=j\)锛屽皢 \(a_j\) 鏇挎崲涓� \(a_i\cdot a_j\)锛屽垹闄� \(a_i\)銆�
  • 閫変竴涓湭琚垹闄ょ殑 \(a_i\)锛屽皢鍏跺垹闄ゃ€�璇ユ搷浣滃湪浠绘剰鏃跺埢鍧囧彲鎵ц锛屾渶澶氭墽琛屼竴娆�銆�

浣犻渶瑕佹搷浣� \(n-1\) 娆★紝鍓╀笅涓€涓暟锛屼娇鍏舵渶澶с€傜敱浜庡墿涓嬬殑鏁板彲鑳戒細寰堝ぇ锛屼綘闇€瑕佽緭鍑轰换鎰忎竴绉嶅緱鍒板畠鐨勬搷浣滃簭鍒椼€�

Solution

鍒嗙被璁ㄨ

  • 濡傛灉璐熸暟鐨勪釜鏁�鏄伓鏁�

  • 濡傛灉娌℃湁 \(0\)锛屽彇缁濆鍊煎鐞嗗嵆鍙�

  • 濡傛灉鏈� \(0\)锛屽皢鎵€鏈� \(0\) 涔樺湪涓€璧凤紝娑堝幓锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

  • 濡傛灉璐熸暟鐨勪釜鏁�鏄鏁�

  • 濡傛灉娌℃湁 \(0\)锛屾秷鍘讳竴涓粷瀵瑰€兼渶灏忕殑璐熸暟锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

  • 濡傛灉鏈� \(0\)锛屽厛灏嗘墍鏈� \(0\) 涔樺湪涓€璧凤紝鍐嶅皢缁濆鍊兼渶灏忕殑璐熸暟涔樺埌 \(0\) 涓婏紝娑堝幓杩欎釜 \(0\)锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

Description

鏈� \(N\) 涓偣锛屾眰涓� \(y=0\) 鐩稿垏鐨勶紝鍖呭惈杩� \(N\) 涓偣鐨勬渶灏忓渾鐨勫崐寰勩€�

Solution

鑰冭檻浜屽垎鍗婂緞锛岀幇鍦ㄨ妫€楠� \(r\) 鏄惁鍙锛屾樉鐒跺浜庢瘡涓� \((x_i,y_i)\) 鎴戜滑鍙互璁$畻鍑� \(d=\sqrt {r^2 - (y_i-r)^2}\)锛屽垯鍖洪棿 \([x_i-d, x_i+d]\) 鏄彲琛岀殑锛屾垜浠彧闇€瑕侀獙璇佹墍鏈夊尯闂存槸鍚︽湁浜ゅ嵆鍙€�

Description

鐜板湪鏈� $ N $ 涓汉锛屾瘡涓€涓汉閮戒笉鎯冲懆鍥寸殑浜哄潗寰楃浠栧緢杩戯紝鎵€浠ュ湪浠栫殑宸﹁竟瑕佹斁 $ L_i $ 寮犳瀛愶紝鍙宠竟瑕佹斁 $ R_i $ 寮犳瀛愶紝鐜板湪浠栦滑瑕佸潗鎴愯嫢骞蹭釜鍦堬紝璇烽棶鏈€灏戣鏀惧灏戝紶妞呭瓙銆�

Solution

宸﹀彸鎵嬫暟鐩垎鍒帓搴忓悗锛岀瓟妗堝嵆涓� \(n+\sum \max(l_i,r_i)\)
缁欏畾涓€涓� \(n \times m\) 鍦板浘锛屾瘡涓牸瀛愪负绌哄湴鎴栧锛屼綘浠庝竴涓綅缃紑濮嬶紝鍥涜繛閫氱Щ鍔紝鍚戜笂鍚戜笅娆℃暟涓嶉檺锛屽悜宸︽渶澶� \(x\) 娆★紝鍚戝彸鏈€澶� \(y\) 娆★紝闂兘鍒拌揪澶氬皯涓牸瀛�

Solution

濡傛灉鍙湁涓€涓柟鍚戞湁浠d环锛岄偅涔堢畝鍗� BFS 鍗冲彲
鐒惰€岃繖閲屼袱涓柟鍚戦兘鏈変唬浠凤紝浣嗘槸鐐� \((r,c) \to (i,j)\) 鐨勬í鍧愭爣宸槸纭畾鐨勶紝鎹㈣█涔嬶紝濡傛灉璁惧悜宸﹁蛋浜� \(a\) 姝ワ紝閭d箞鍚戝彸璧扮殑姝ユ暟灏辨槸 \(i-r+a\)
浜庢槸鎴戜滑鍙鍚戝乏鐨勮竟璁句唬浠峰嵆鍙紝鏈€缁堝湪鑰冭檻 \((r,c) \to (i,j)\) 鐨勮繃绋嬫椂锛屽悓鏃惰姹� $a \leq x $ 鍜� $ j-c+a \leq y$ 鍗冲彲

CF1070A Find a Number

Description

缁欏畾涓や釜鏁� \(d \le 500\) 鍜� \(s \le 5000\)锛屾眰鏈€灏忕殑 \(n\) 浣垮緱 \(d|n\) 骞朵笖 \(n\) 鐨勫悇浣嶆暟瀛椾箣鍜屼负 \(s\)銆�

Solution

璁� \(f[i][j]\) 琛ㄧず鐢熸垚涓€涓拰涓� \(i\) 涓� \(\bmod d=j\) 鐨勬暟瀛楃殑鏈€灏� \(n\) 鐨勬湯浣嶆暟瀛�
鐢� BFS 瀹炵幇鍗冲彲

Description

鍦ㄥ钩闈㈢洿瑙掑潗鏍囩郴涓紝涓€涓満鍣ㄤ汉澶勪簬 $ (0,0) $ 鐐广€傚畠鑳借繘琛屼互涓嬬殑绉诲姩鎿嶄綔銆�$ U~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x,y+1) \(;\) D~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x,y-1) \(;\) L~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x-1,y) \(;\) R~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x+1,y) $銆傜幇鍦ㄦ湁涓€涓暱搴︿负 $ n $ 鐨勬搷浣滃簭鍒椼€俈asya鎯充慨鏀硅繖涓簭鍒椾娇鏈哄櫒浜烘渶缁堢Щ鍔ㄥ埌 $ (x,y) $銆傚叾淇敼鐨勮姳璐逛负 $ maxID-minID+1 \(銆�\) maxID $ 鏄慨鏀圭殑鎿嶄綔鐨勪笅鏍囩殑鏈€澶у€硷紝$ minID $ 鏄慨鏀圭殑鎿嶄綔鐨勪笅鏍囩殑鏈€灏忓€笺€傚鏋滄病鏈変慨鏀癸紝鍒欒姳璐逛负 $ 0 $銆�

Solution

鑰冭檻鍒板浜庝竴涓尯闂达紝濡傛灉瀹冨彲琛岋紝閭d箞涓€涓寘鍚畠鐨勫尯闂翠竴瀹氬彲琛�
鏁呭昂鍙栨硶鍗冲彲
缁欏畾鏃犲悜甯︽潈杩為€氬浘锛屼繚鐣欒嚦澶� \(k\) 鏉¤竟锛屾渶澶у寲鍒� \(1\) 鍙疯妭鐐规渶鐭矾闀垮害涓嶅彉鐨勭偣鐨勬暟閲忋€�

Solution

涓€涓樉鐒剁殑鍋氭硶鏄紝鏋勫缓鍘熷浘鐨勪竴妫垫渶鐭矾寰勬爲锛屼换鎰忛€夋嫨涓€涓ぇ灏忎负 \(k\) 鐨勫寘鍚牴鐨勮繛閫氬潡灏辨槸绛旀
鍙︿竴鏂归潰锛屾垜浠洖褰掑埌 Dijkstra 绠楁硶鐨勫師鐞嗭紝涓嶉毦鍙戠幇锛屾垜浠彧闇€瑕佸湪绠楁硶鍔犱簡 \(k\) 鏉¤竟浠ュ悗鍋滄锛屽綋鍓嶉€夋嫨鐨勮竟闆嗗氨鏄瓟妗�

Description

鏈� $ n $ 涓棶棰橈紝闂鐨勪富棰樺垎鍒槸 $ a_1,a_2,\cdots,a_n $锛岄渶瑕佺粍缁囦竴浜涗笓棰樻瘮璧涳紝鍚屾椂瑕佹弧瓒充互涓嬫潯浠讹細涓€鍦轰笓棰樻瘮璧涗腑鐨勬墍鏈夐鐩殑涓婚鐩稿悓锛涚粍缁囩殑鎵€鏈変笓棰樻瘮璧涗腑涓婚浜掑紓锛涗粠绗簩鍦烘瘮璧涘紑濮嬶紝姣旇禌涓殑棰樼洰鏁板繀椤绘槸鍓嶄竴鍦烘瘮璧涢鐩暟閲忕殑 $ 2 $ 鍊嶏紝绗竴鍦烘瘮璧涚殑棰樼洰鏁伴噺鍙互鏄换鎰忕殑銆傛眰鎵€鏈夋瘮璧涗娇鐢ㄧ殑棰樼洰鏁伴噺涔嬪拰鐨勬渶澶у€笺€�

Solution

鎶婃瘡涓被鍨嬬殑闂鍘嬪湪涓€璧凤紝鏋氫妇姣忎竴涓紑濮嬮棶棰樻暟鐩紝妫€楠岀瓟妗堟椂锛岀淮鎶や竴涓綋鍓嶄綅缃� \(pos\)锛屾瘡娆″湪 \(pos\) 鍚庣殑娈典腑浜屽垎锛屾壘鍒扮涓€涓彲浠ュ绾崇殑棰樼洰绫诲瀷锛屽鏉傚害 \(O(n \log^2 n)\)
缁欏畾 \(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屽浘涓� \(k\) 涓壒娈婇《鐐癸紝浣犻€夊畾涓€涓竟闆嗭紝浣垮緱 \(k\) 涓偣閫氳繃杩欎簺杈硅兘澶熻繛閫氾紝姹傞€夊畾杈归泦涓渶闀胯竟鐨勬渶灏忓€笺€�

Solution

鏄剧劧鍦ㄦ眰鏈€灏忕敓鎴愭爲鐨勬椂鍊欑淮鎶や竴涓嬪氨琛屼簡锛屽叧閿槸濡備綍鍒ゅ畾褰撳墠 \(k\) 涓偣宸茬粡杩為€�
缁存姢涓€涓� \(cnt\)锛屽鏋滄湰娆″悎骞舵秹鍙婂埌鐨勪袱涓泦鍚堜腑閮芥湁鐗规畩鐐癸紝鍒� \(cnt+1\)

Description

鐐规湁姝f潈锛岃竟鏈夎礋鏉冦€傚湪杩欐牱鐨勬棤鏍规爲涓壘鍒颁竴鏉℃潈閲嶆渶澶х殑閾惧苟杈撳嚭鏉冮噸銆�

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

閲嶈缁撹锛氬鏋滀竴鏉¤矾寰勬鍚戝弽鍚戜笉鍚屾椂鍚堟硶锛屽垯瀹冧竴瀹氬瓨鍦ㄤ竴鏉″瓙璺緞姣斿畠鏇翠紭锛堟兂鍒颁簡灏卞緢鏄剧劧锛�
浜庢槸鎴戜滑灏卞彲浠ュ綋鍋氭棤鍚戦摼澶勭悊浜�
璁� \(f[i]\) 琛ㄧず鍒� \(i\) 缁撳熬鐨勪竴鏉$洿閾剧殑鏈€澶у€�
閫掓帹 \(f[]\) 鏃讹紝閫夊彇鏈€澶у効瀛愬嵆鍙�
鏇存柊绛旀鏃讹紝閫夊彇鏈€澶у効瀛愬拰娆″ぇ鍎垮瓙鍗冲彲

[CF1092D1] Great Vova Wall - 鏍�,璐績

Description

缁欏畾涓€涓簭鍒� \(a=\{a_1,a_2,\dots,a_n\}\)锛屾湁浠ヤ笅涓ょ鎿嶄綔锛氳嫢 \(a_i=a_{i+1}\)锛屽垯鍙皢 \(a_i\) 涓� \(a_{i+1}\) 鍚屾椂鍔� \(1\)锛涘皢 \(a_i\) 鍔� \(2\)銆傛眰闂槸鍚﹀彲缁忚繃澶氭鎿嶄綔鍚庝娇寰楁墍鏈� \(a_i\) 鐩哥瓑銆�

Solution

鐩稿綋浜庢寜濂囧伓鎬у仛鍖归厤锛屼笉闅炬兂鍒扮敤鏍堢淮鎶わ紝纰板埌濂囧伓鎬х浉鍚岀殑灏辨秷鍘伙紝濡傛灉鏈€鍚庢爤鍐呭墿浣欏厓绱犳暟閲忎笉瓒呰繃 1 鍒� YES

Description

鏈� \(n\) 涓妭鐐圭殑鏍戯紝姣忎釜鑺傜偣鏈変竴鐐规潈 \(a_i\)銆傚畾涔� \(\textrm{dist}(x,y)\) 涓� \(x\) 鍒� \(y\) 鐨勮竟鏁般€傞€夊彇涓€鐐� \(v\)锛屼娇 $ \sum_{i=1}^{n}a_i \cdot \textrm{dist}(i ,v)$ 鏈€澶�

Solution

鍏稿瀷鎹㈡牴 dp锛岃 \(1\) 鍙风偣涓烘牴锛岃 \(s[i]\) 琛ㄧず鐐� \(i\) 瀛愭爲涓殑鏉冨€煎拰锛�\(f[i]\) 琛ㄧず \(v=i\) 鏃剁殑绛旀锛岄鍏堟垜浠彲浠ラ€氳繃涓€娆� DFS 绠楀嚭 \(f[1]\)锛屽悓鏃舵湁杞Щ鏂圭▼

\[f[q]=f[p]-s[q]+s[1]-s[q]=f[p]+s[1]-2s[q] \]

Description

缁欏畾涓€涓暱搴︿负 $ n $ 鐨勫皬鎷彿搴忓垪锛屾眰鏈夊灏戜釜浣嶇疆婊¤冻灏嗚繖涓綅缃殑鎷彿鏂瑰悜鍙嶈繃鏉ュ悗浣垮緱鏂板簭鍒楁槸涓€涓悎娉曠殑鎷彿搴忓垪銆傚嵆鍦ㄤ换鎰忎竴涓綅缃墠缂€宸︽嫭鍙风殑涓暟涓嶅皯浜庡墠缂€鍙虫嫭鍙风殑涓暟锛屽悓鏃舵暣涓簭鍒楀乏鍙虫嫭鍙蜂釜鏁扮浉鍚� $ 1 \leq n \leq 10^6 $

Solution

灏嗗乏鎷彿璁颁负 \(1\)锛屽彸鎷彿璁颁负 \(-1\)锛岃繖涓暟瀛楀簭鍒楄涓� \(a[]\)锛屽畠鐨勫墠缂€鍜岃涓� \(s[]\)锛屽悓鏃惰褰曟瘡涓€涓悗缂€ \(a[i..n]\) 鐨勬渶灏忓墠缂€ \(f[i]\)
璁$畻 \(f[]\) 鏃讹紝鍙渶瑕佸€掑簭閫掓帹鍗冲彲锛堢被浼兼渶澶у瓙娈靛拰鐨勫鐞嗭級
濡傛灉涓€涓綅缃� \(i\)锛屾弧瓒虫墍鏈� \(i\) 涔嬪墠鐨勫墠缂€閮藉悎娉曪紝涓� \(s[n]-2a[i]=0\)锛屽苟涓� \(s[i-1]-a[i]+f[i+1] \ge 0\)锛屽垯杩欎釜浣嶇疆鏄弧瓒虫潯浠剁殑
缁欏畾 \(n\) 涓偣锛屾瘡涓偣鏈夌偣鏉冿紝杩炵粨涓や釜鐐硅姳璐圭殑浠d环涓轰袱鐐圭殑鐐规潈鍜屻€傚彟澶栨湁 \(m\) 鏉$壒娈婅竟锛屽弬鏁颁负 \(x,y,z\)銆傛剰涓哄鏋滀綘閫夋嫨杩欐潯杈癸紝灏卞彲浠ヨ姳璐� \(z\) 鐨勪唬浠峰皢鐐� \(x\) 鍜岀偣 \(y\) 杩炵粨璧锋潵锛屽綋鐒朵綘涔熷彲浠ヤ笉閫夋嫨杩欐潯杈广€傛眰浣挎暣涓浘鑱旈€氱殑鏈€灏忎唬浠�

Solution

妯℃嫙 Kruskal 杩囩▼锛屽悓鏃剁淮鎶ゆ瘡涓泦鍚堢殑鏈€灏忕偣鏉冿紝姣忔姣旇緝褰撳墠鏈€灏忕壒娈婅竟鐨勮竟鏉冨拰鏈€灏忕偣鏉冪殑涓や釜闆嗗悎鐨勫拰锛岃蛋姣旇緝灏忕殑閭d竴涓�
鐢� std::set 缁存姢鍗冲彲

Description

鏈変竴棰楁爲锛屾瘡涓偣鏈変竴涓偣鏉冿紝杈规潈閮芥槸 \(1\)锛岄棶璺緞涓婄殑鎵€鏈夌偣鐨� gcd 涓嶆槸 \(1\) 鐨勬渶闀胯矾寰勬槸澶氬皯锛�

Solution

鍒嗘不鍒版瘡涓偣鏃讹紝鑰冭檻褰撳墠鍒嗘不鑼冨洿鍐呯粡杩囪鐐圭殑璺緞銆�
瀵逛簬姣忎釜瀛愭爲锛岃褰曚竴涓槧灏勶紝琛ㄧず姣忎釜鏁拌兘鍒拌揪鐨勬渶娣辩殑娣卞害锛岃竟鎼滅储杈规洿鏂板嵆鍙€�
缁存姢褰撳墠鍒嗘不涓绘爲鐨勬槧灏勶紝鏋氫妇瀹屼竴涓瓙鏍戝悗锛岀敤瀛愭爲鏄犲皠鍜屼富鏍戞槧灏勪腑鐨勫€兼洿鏂扮瓟妗堬紝骞跺皢瀛愭爲鏄犲皠骞跺叆涓绘爲鏄犲皠涓€�

Description

缁欏畾涓€涓洖鏂囧瓧绗︿覆锛�\(n \le 5000\)锛屽浠婃兂灏嗚繖涓瓧绗︿覆鐢� \(k\) 鍒€鍒囨垚 \(k+1\) 涓儴鍒嗭紝鐒跺悗瀵硅繖 \(k+1\) 涓瓙涓查噸鏂版帓鍒楋紙涓嶈兘鏀瑰彉瀛愪覆鍐呴儴鐨勫瓧绗﹂『搴忥級浣垮緱寰楀埌鐨勬柊涓蹭篃涓哄洖鏂囦覆涓斾笉涓庡師涓蹭竴鏍枫€傛眰鍑鸿繖涓渶灏忕殑鏁� \(k\)銆傚鏋滃仛涓嶅埌锛屽垯杈撳嚭 Impossible銆�

Solution

鏃犺В鐨勫厖瑕佹潯浠舵槸鍘熶覆瀵圭О杞翠竴渚х殑鎵€鏈夊瓧姣嶅潎鐩稿悓锛屽鏋滄湁瑙e垯瑙d笉瓒呰繃 \(2\)
鐢� \(O(n^2)\) 鐨勬椂闂存楠岀瓟妗堟槸鍚﹀彲浠ヤ负 \(1\)
濡傛灉绛旀涓� \(2\)锛屽垯涓€瀹氭槸鍓笅涓や釜闀垮害涓� \(len\) 鐨勫垎鍒槸鍓嶅悗缂€鐨勫瓙涓诧紝鐩镐簰浜ゆ崲锛屼篃鍙互鑺� \(O(n^2)\) 鐨勬椂闂存楠�
锛堢粨璁轰篃澶浠欎簡鈥︹€︼級

[CF1110D] Jongmah

Description

浣犳墜涓婃湁 \(n\) 涓夯灏嗭紝姣忎釜楹诲皢涓婃湁涓€涓湪 \(1\) 鍒� \(m\) 鑼冨洿鍐呯殑鏁存暟 \(a_i\)銆備负浜嗚耽寰楁父鎴忥紝浣犻渶瑕佸皢杩欎簺楹诲皢鎺掑垪鎴愪竴浜涗笁鍏冪粍锛屾瘡涓笁鍏冪粍涓殑鍏冪礌鏄浉鍚岀殑鎴栬€呰繛缁殑銆傝姹傚嚭浣犳渶澶氬彲浠ュ舰鎴愬灏戜釜涓夊厓缁勩€�

Solution

杩炵画涓夊厓缁勭殑鏁扮洰鍦ㄥ皯浜庝笁涓椂鎵嶆槸蹇呰鐨勶紝澶т簬绛変簬涓変釜鏃跺彲浠ョ洿鎺ョ敤鐩稿悓涓夊厓缁勪唬鏇�
鍥犳璁� \(f[i][j][k]\) 琛ㄧず鑰冭檻瀹屼簡 \([1,i]\) 鐨勭墝骞朵笖涔熷彲鑳戒娇鐢ㄨ繃 \(i+1,i+2\) 鐨勭墝锛�\((i-1,i,i+1)\) 鐨勭粍鍚堟湁 \(j\) 涓紝\((i,i+1,i+2)\) 鐨勭粍鍚堟湁 \(k\) 涓紝姝ゆ椂鐨勬渶澶т笁鍏冪粍鏁版槸澶氬皯
杩欎竴娆″仛瀹屼互鍚庯紝i 灏卞交搴曚笉鑳界敤浜嗭紝鍥犳鎴戜滑瑕佸湪杩欓噷鍒ゆ柇 i 鏄惁澶熺敤锛屽鏋滀笉澶熺敤鍒欒繖绉嶇姸鎬佺洿鎺ラ潪娉曪紝濡傛灉澶熺敤灏辫浆绉�
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

缁欏畾涓や釜鏁板垪 \(c,t\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(i\)锛屼护 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\)锛岄棶杩涜鑻ュ共娆℃搷浣滃悗锛屾槸鍚﹁兘浣垮緱鏁板垪 \(c\) 鍜� \(t\) 鐩哥瓑銆�

Solution

鍒嗘瀽宸垎搴忓垪锛屽皢 \(c_{i-1},c_i,c_{i+1}\) 鍙樹负 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 鍚庯紝宸垎搴忓垪浠� \(c_i-c_{i-1},c_{i+1}-c_i\) 鍙樹负 \(c_{i+1}-c_i,c_{i}-c_{i-1}\)锛屽嵆宸垎搴忓垪鐨勭浉閭讳袱椤逛氦鎹簡銆�
鍥犳姣忔鎿嶄綔鐨勫疄璐ㄥ氨鏄氦鎹㈠樊鍒嗗簭鍒楃殑鐩搁偦涓ら」銆�
浜庢槸锛岃嫢鍘熷簭鍒楁弧瓒� \(c_1=t_1,c_n=t_n\)锛屾垜浠彧闇€瑕佹瘮杈冨樊鍒嗗簭鍒楃殑鍏冪礌澶氶噸闆嗘槸鍚︾浉绛夊嵆鍙€�

Description

$ n $ 涓柟鍧楁帓鎴愪竴鎺掞紝绗� $ i $ 涓鑹蹭负 $ c_i $銆傚畾涔変竴涓鑹茶仈閫氬潡 $ [l,r] $ 褰撲笖浠呭綋 $ l $ 鍜� $ r $ 涔嬮棿鎵€鏈夋柟鍧楃殑棰滆壊鐩稿悓銆傜幇鍦ㄤ綘鍙互閫夊畾涓€涓捣濮嬩綅缃� $ p $锛屾瘡娆″皢 $ p $ 鎵€鍦ㄩ鑹茶仈閫氬潡鐨勬墍鏈夋柟鍧楅鑹叉敼鎴愬彟涓€绉嶃€傝繖涓搷浣滃彲鑳藉皢澶氫釜棰滆壊鑱旈€氬潡鍚堝苟鎴愪竴涓€傞棶鏈€灏戣澶氬皯姝ワ紝鑳借 $ [1,n] $ 鍙樻垚涓€涓鑹茶仈閫氬潡銆�

$ 1\le n,c_i\le 5000 $

Solution

鍏堟妸搴忓垪 unique 涓€涓嬶紝浣垮緱鐩搁偦涓や釜浣嶇疆棰滆壊鎬讳笉鍚岋紝鐒跺悗鍖洪棿 DP
鑰冨療 \(c[i]\) 涓� \(c[j]\) 鏄惁鐩哥瓑锛屽鏋滅浉绛夊垯 \(f[i][j]\) 鐨勮浆绉绘潵婧愪负 \(f[i+1][j-1]\)锛屽惁鍒欒浆绉绘潵婧愬湪 \(f[i+1][j],f[i][j-1]\) 涓€夊彇

Description

鍧愭爣绯讳笂鏈変竴鍙皬鑸癸紝鐜板湪鎯充粠 $ (x_1,y_1) $ 鍘� $ (x_2,y_2) $銆傛瘡鏃跺埢閮芥湁椋庯紝浼氭妸鑸瑰線瀵瑰簲鐨勯鍚戝惞涓€涓崟浣嶏紙姣斿鍖楅浼氭妸鑸瑰線鍗楀惞锛夛紝椋庢槸寰幆鐨勶紝鍚瑰畬 $ s_1 \sim s_n $ 灏卞張浼氫粠 $ s_1 $ 寮€濮嬨€傝埞鍦ㄦ瘡涓€鏃跺埢閮藉彲浠ュ悜鎸囧畾鏂瑰悜绉诲姩涓€涓崟浣嶃€傛眰鑸瑰埌鐩殑鍦扮殑鏈€灏戞椂闂达紝濡傛灉涓嶈兘鍒拌揪杈撳嚭 -1銆�

Solution

瀹规槗璇佹槑鍏充簬鎬绘椂闂存弧瓒冲彲浜屽垎鎬�
鍒ゆ柇鏃讹紝鍔犱笂 \([mid/n]\) 涓懆鏈熷亸绉伙紝鍔犱笂 \(mid \bmod n\) 鐨勫崟鍋忕Щ鍚庯紝妫€鏌ユ浖鍝堥】璺濈鏄惁涓嶅ぇ浜� \(mid\) 鍗冲彲

[CF1117D] Magic Gems - 鐭╅樀涔樻硶浼樺寲dp

Description

涓€棰楅瓟娉曞疂鐭冲彲浠ュ垎瑙d负 m 棰楁櫘閫氬疂鐭筹紝榄旀硶瀹濈煶鍜屾櫘閫氬疂鐭抽兘鍗犳嵁 1 浣撶Н鐨勭┖闂淬€傜幇鍦ㄦ湁涓€澶у爢甯︾紪鍙风殑榄旀硶瀹濈煶锛屽彲浠ラ€夊嚭涓€閮ㄥ垎瀹濈煶锛岀劧鍚庢寚瀹氫竴绉嶄竴閮ㄥ垎榄旀硶瀹濈煶鍒嗚В锛屾眰鏈夊灏戠閫夊嚭浣撶Н涓� n 鐨勯泦鍚堢殑鏂规銆�\(n \le 10^{18}, m \le 100\)

Solution

璁� \(f[i]\) 琛ㄧず鐢ㄤ簡 \(i\) 涓崟浣嶇┖闂存椂鐨勬柟妗堟暟锛岃€冭檻鏈€鍚庝竴涓€夊嚭鐨勯瓟娉曞疂鐭虫槸鍚﹀垎瑙o紝浜庢槸鏈� \(f[i]=f[i-1]+f[i-m]\)锛岀敱浜� \(m\) 寰堝皬锛岀煩闃靛揩閫熷箓鍗冲彲

Description

缁欏畾 \(n\) 绉嶆湪妫嶏紝绗� \(i+1\) 绉嶆湁 \(a_i\) 涓紝闀垮害涓� \(2^i\)锛屾眰鐢ㄨ繖浜涙湪妫嶅彲浠�鍚屾椂鎷煎嚭澶氬皯涓笁瑙掑舰锛堜笉鍙噸澶嶄娇鐢ㄥ悓涓€鏍癸級

Solution

瀹规槗鍙戠幇涓夎褰竴瀹氳婊¤冻 \(ABB(A\le B)\) 鐨勭粨鏋勶紝浜庢槸鎴戜滑浠庡ぇ鍒板皬鑰冭檻鎵€鏈変緷娆℃墦鍖呮垚 \(BB\)锛屽鏋滄湁澶氫綑鐨勫氨鍙互褰撳仛 \(A\) 涓庝竴涓凡鏈夌殑 \(BB\) 鍖归厤锛岀瓟妗� \(+1\)锛涙渶鍚庡鏋滄湁娌℃湁鍖归厤瀹岀殑 \(BB\)锛屽垯鑷繁鎷嗘帀涓€浜� \(BB\) 鏉ュ尮閰嶏紝璁句釜鏁颁负 \(c\)锛屽垯绛旀 \(+[2c/3]\)

Description

缁欏畾涓€涓暱搴︿负 \(n (n \le 5000)\) 鐨勫瓧绗︿覆锛岃姹傚皢鍏跺垝鍒嗕负鑻ュ共娈点€傛瘡涓€娈佃涔堥暱搴︿负 \(1\)锛岃涔堟槸鏈涔嬪墠閮ㄥ垎鐨勫瓙涓层€傚墠鑰呬唬浠蜂负 \(a\)锛屽悗鑰呬唬浠蜂负 \(b\)锛屾眰鏈€灏忔€讳唬浠枫€�

Solution

璁� \(f[i]\) 琛ㄧず鍒掑垎瀹� \(s[1..i]\) 鐨勬渶灏忔€讳唬浠凤紝鍒欐湁

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

鑰冭檻鍒� \(f[]\) 鍏锋湁鍗曡皟鎬э紝鍥犳鍦ㄧ浜岀杞Щ涓紝\(j\) 涓€瀹氳灏藉彲鑳藉ぇ锛岃 \(LCS(i,j)\) 琛ㄧず \(s[1..i]\) 涓� \(s[1..j]\) 鐨勬渶闀垮叕鍏卞悗缂€锛屽垯鏈�

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

鑰� \(LCS(i,j)\) 鍙互寰堣交鏄撳湴鐢� SA 姹傚嚭锛屼簨瀹炰笂锛岀敱浜�

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

鍙互鍦� \(O(n^2)\) 鏃堕棿鍐呴澶勭悊鍑� \(LCS(i,j)\)锛屾晠鎬绘椂闂村鏉傚害涓� \(O(n^2)\)
鏈変袱涓鏁存暟搴忓垪 \(a,b\)锛岄暱搴﹀垎鍒负 \(n,m\)銆傜粰鍑烘墍鏈� \(a_i\) 鍜� \(b_j\) \((1\le i\le n,1\le j\le m)\) 鐨勫ぇ灏忓叧绯伙紙澶т簬锛屽皬浜庢垨鑰呯瓑浜庯級锛岃鏋勯€犲嚭绗﹀悎鏉′欢鐨� \(a\) 鍜� \(b\)銆傚鏋滄棤瑙o紝杈撳嚭 NO銆傚鏋滄湁澶氫釜瑙o紝杈撳嚭 \(a,b\) 涓渶澶у厓绱犳渶灏忕殑鏂规銆�

Solution

骞舵煡闆嗗皢鎵€鏈夌瓑浜庣殑鏁板悎骞惰捣鏉ワ紝鐒跺悗寤哄浘鎷撴墤鎺掑簭锛屾渶鍚� check 涓€涓嬫嫇鎵戞帓搴忕殑缁撴灉浠ユ鏌ユ槸鍚︽湁鐜�
缁欎綘涓€涓覆 \(s\)锛屾瘡娆″彲浠ヨ姳璐� \(1\) 鐨勪唬浠峰垹鍘讳竴涓瓙涓诧紝瑕佹眰瀛愪覆鐨勬瘡涓€浣嶄负鍚屼竴涓瓧绗︺€傛眰鍒犲幓鏁翠釜涓茬殑鏈€灏忎唬浠枫€�\(1\le |s|\le 500\)

Solution

璁� \(f[i][j]\) 琛ㄧず鍒犻櫎瀛愪覆 \([i,j]\) 鐨勬渶灏忚姳璐癸紝鍒�

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

鐜版湁 \(n\) 涓汉锛屾瘡涓汉閮芥湁鍚勮嚜鐨勮兘鍔涘€硷紝瑕佷綘鎶婁粬浠垎鎴� \(k\) 缁勶紙姣忕粍浜烘暟涓嶉檺锛夛紝浣垮緱姣忕粍涓换鎰忎袱涓汉鐨勮兘鍔涘€间箣宸笉瓒呰繃 \(5\)锛岄棶浣犳渶澶氬彲浠ユ妸澶氬皯浜哄垎鍒扮粍涓€�

Solution

璁� \(f[i][j]\) 琛ㄧず灏嗗墠 \(i\) 涓汉鍒嗘垚 \(j\) 娈碉紝涓旂 \(i\) 涓汉涓€瀹氳浣跨敤鏃剁殑鏈€澶ф€讳汉鏁�

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

鍏朵腑 \(l=lower\_bound(a[i]-5)-1\)

Description

缁欏畾涓€涓暱搴︿负 $ n $ 鐨� $ 1-n $ 鐨勫叏鎺掑垪锛岀 $ i $ 涓暟琛ㄧず绔欏湪绗� $ i $ 浣嶇殑瀛︾敓鐨勭紪鍙�

缁欏畾 $ m $ 瀵� $ (u,v) $锛屽鏋滅紪鍙� $ u $ 鐨勫鐢熷湪缂栧彿 $ v $ 鐨勫鐢熷墠闈竴浣嶏紝鍒欏彲浠ュ皢浠栦滑鐨勪綅缃簰鎹紝闂渶鍚庝竴涓鐢熻兘鍚戝墠绉诲姩澶氬皯浣�

Solution

浠庡彸寰€宸︽壂鎻忔墍鏈変綅缃紝灏嗘瘡涓綅缃笂鐨勪汉灏藉彲鑳藉湴鍚戝彸鎹㈠嵆鍙�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬暟缁勶紝鍏朵腑鏈変簺浣嶇疆鏈畾锛堝彲鍦� \([1,k]\) 涓换鎰忓彇鍊硷級锛岄棶鏈夊灏戠濉暟鐨勬柟妗堝彲浠ヤ娇寰楁暟缁勪腑涓嶅瓨鍦ㄩ暱搴︿负濂囨暟鐨勫洖鏂囧瓙涓层€�

Solution

鍗充笉瀛樺湪闀垮害涓� \(3\) 鐨勫洖鏂囦覆
鍗冲浠绘剰 \(i\) 鏈� \(a_i \neq a_{i+2}\)
鑰冭檻鍒嗗鍋朵綅澶勭悊锛屾柟妗堟暟鐩镐箻
浜庢槸杞寲涓虹浉閭讳袱浣嶄笉鐩稿悓鐨勬柟妗堟暟
鑰冭檻瀵逛簬姣忎竴娈佃繛缁殑 \(-1\) 鍒嗗埆澶勭悊
璁� \(f[i][0]\) 琛ㄧず闀垮害涓� \(i\) 鐨� \(-1\) 娈电殑宸﹁竟鍜屽彸杈圭殑鍏冪礌鐩稿悓鐨勬柟妗堟暟锛�\(f[i][1]\) 涓轰笉鍚岋紝鍒欐湁

\[f[i][0]=(k-1) \cdot f[i-1][1] \\ f[i][1]=(k-2)\cdot f[i-1][1] +f[i-1][0] \]

Description

鏈変竴涓簭鍒� \(a_1,a_2,a_3...a_n (n\le 1500)\)锛屽畾涔� \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\)锛屾壘鍒版渶澶х殑 \(k\) 浣垮緱 \((l_1,r_1)=...=(l_k,r_k)\) 涓斿尯闂� \([l_1,r_1]...[l_k,r_k]\) 浜掍笉鐩镐氦

Solution

寰堟毚鍔涚殑璐績闂
澶勭悊鍑烘瘡涓€涓瓙涓茬殑鍜岋紝璁板綍涓� \((l,r,sum)\) 鐨勫舰寮忥紝灏嗗畠浠寜鐓� \(sum\) 涓虹涓€鍏抽敭瀛楋紝\(r\) 涓虹浜屽叧閿瓧鎺掑簭
鐒跺悗瀵逛簬姣忎竴涓� \(sum\) 鐩稿悓鐨勬鍐咃紝缁忓吀璐績鍗冲彲

Description

\(n\) 涓煄甯傚拰 \(n-1\) 鏉¢亾璺€傛斂搴滃喅瀹氬悜杩欎簺鍏徃鍑哄敭閬撹矾銆傛瘡鏉¤矾閮藉睘浜庝竴瀹跺叕鍙搞€傚鏋滄湁涓€瀹跺叕鍙告嫢鏈変袱鏉℃垨涓ゆ潯浠ヤ笂鐨勮繘鍏ヨ繖涓煄甯傜殑閬撹矾锛岄偅涔堣繖涓煄甯傛槸涓嶅ソ鐨勩€傚笇鏈涜繖鏍蜂笉鍏钩鐨勫煄甯傛暟閲忎笉瓒呰繃 \(k\)锛岄偅涔堟渶灏戦渶瑕佸灏戝叕鍙革紵

Solution

绛旀鏄剧劧涓哄害鏁颁粠澶у埌灏忔帓搴忓悗鐨勭 \(k+1\) 涓紝鏋勯€犳柟妗堟椂璐績鍗冲彲

Description

缁欏畾闀垮害涓� \(n\) 鐨勬瘝涓插拰涓変釜瀛愪覆 \(s_1,s_2,s_3\)銆傚垵濮嬫椂瀛愪覆鍧囦负绌恒€�
鏈� \(q\) 娆¤闂€備綘闇€瑕佹敮鎸佷袱绉嶆搷浣滐細鍚戞煇涓瓙涓叉湯灏炬坊鍔犱竴涓瓧姣嶏紝鎴栬€呭垹鍘绘煇涓瓙涓叉湯灏剧殑瀛楁瘝銆�
鍦ㄦ瘡娆℃搷浣滃悗锛屼綘闇€瑕佸洖绛旓紝鏄惁鑳戒粠姣嶄覆涓垎绂诲嚭涓変釜涓嶇浉浜ょ殑瀛愬簭鍒楋紝婊¤冻杩欎笁涓瓙搴忓垪鎭板ソ鏄� \(s_1,s_2,s_3\)銆�
鍦ㄤ换鎰忔椂鍒伙紝\(s_1,s_2,s_3\) 鐨勯暱搴﹀潎涓嶄細瓒呰繃 \(250\)銆�
\(1 \le n \le 10^5\) , \(1\le q \le 10^3\)

Solution

璁� \(f[i][j][k]\) 琛ㄧず涓変釜瀛愪覆鍒嗗埆鍖归厤鍒颁簡绗� \(i,j,k\) 涓瓧绗︼紝鍦ㄦ瘝涓蹭腑鎺ㄨ繘鐨勬渶鐭窛绂�
璁� \(g[i][c]\) 琛ㄧず \(S[i..n]\) 鍐呭瓧绗� \(c\) 绗竴娆″嚭鐜扮殑浣嶇疆

\[f[i][j][k]=\left\{ \begin{aligned} & g[f[i-1][j][k]+1][s_1[i]] \\ & g[f[i][j-1][k]+1][s_2[j]] \\ & g[f[i][j][k-1]+1][s_3[k]] \end{aligned} \right. \]

鍒濆鏉′欢 \(f[0][0][0]=0\)锛屽叾浣欏垵鍊艰涓� \(+\infty\)
瀵逛簬鎻掑叆鎿嶄綔锛屾毚鍔涜绠楀嵆鍙紝姣忔 \(O(l^2)\)
瀵逛簬鍒犻櫎鎿嶄綔锛屽噺灏忎覆闀垮嵆鍙�
瀵逛簬璇㈤棶锛屾瘮杈� \(f[l_1][l_2][l_3]\) 鏄惁 \(\le n\) 鍗冲彲

Description

缁欏畾涓や釜姝f暣鏁� $ a,b $锛屾壘鍒伴潪璐熸暣鏁� $ k $ 浣� $ a+k $ 涓� $ b+k $ 鐨勬渶灏忓叕鍊嶆暟鏈€灏忥紝濡傛湁澶氳В杈撳嚭鏈€灏忕殑 $ k $

Solution

涓ゆ暟鐨勫樊濮嬬粓涓� \(b-a\)锛岃€屼袱鏁扮殑 \(gcd\) 蹇呯劧鏄� \(b-a\) 鐨勫洜鏁�
鍥犳鏋氫妇 \(b-a\) 鐨勫洜鏁颁綔涓� \(g\)锛岀劧鍚庢眰鍑鸿兘浣垮緱 \(g|(b+k)\) 鐨勬渶灏忕殑 \(k\)锛屽緢鏄剧劧姝ゆ椂涓€瀹氭弧瓒� \(g|(a+k)\)
鏈変竴涓敱鎵€鏈夐暱涓� \(2n\) 鐨勫悎娉曟嫭鍙峰簭鍒楃粍鎴愮殑 trie锛岀幇鍦ㄨ姹傝繖妫垫爲涓婃渶澶氱殑杈规暟锛岀鍚堣竟涓や袱涔嬮棿鍧囨病鏈夊叡鍚岃妭鐐广€�

Solution

棣栧厛璁炬牴鐨勬繁搴︿负 \(0\)锛屾垜浠彲浠ュ彧閫� trie 涓婃墍鏈夋繁搴︿负鍋舵暟鐨勭偣鍜岀埗浜茬殑杩炶竟锛屼簬鏄瓟妗堝氨鏄� trie 涓婃繁搴︿负濂囨暟鐨勭偣鐨勪釜鏁�
鐒跺悗灏辨槸涓€涓緢濂楄矾鐨� dp锛岃 \(f[i][j]\) 琛ㄧず鏈変簡 \(i\) 涓乏鎷彿锛�\(j\) 涓彸鎷彿鐨勬柟妗堟暟锛屽垯

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

浜庢槸绛旀涓�

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

涓轰簡鏂逛究璧疯鍙互鎶婂潗鏍囨暣浣� \(+1\)

Description

\(n\) 涓妭鐐逛互 \(1\) 涓烘牴鐨勪竴妫垫爲锛屾瘡涓潪鍙跺瓙鑺傜偣閮芥湁涓€涓搷浣� \(\max\) 鎴� \(\min\)锛岃〃绀鸿繖涓妭鐐逛腑鐨勫€煎簲璇ュ垎鍒瓑浜庡叾瀛愯妭鐐逛腑鎵€鏈夊€肩殑鏈€澶у€兼垨鏈€灏忓€笺€傚亣璁炬爲涓婃湁 \(k\) 涓彾鑺傜偣锛屼綘鍙互灏嗘瘡涓彾鑺傜偣濉笂 \([1,k]\) 鐨勬暟瀛楋紝涓旀瘡涓暟瀛楀彧浣跨敤涓€娆★紝姹傛牴鑺傜偣鐨勬渶澶у€笺€�

Solution

璁� \(f[p]\) 琛ㄧず \(p\) 鍦ㄥ叾瀛愭爲鍙跺瓙缁撶偣涓殑鏉冨€兼帓鍚嶇殑鏈€澶у€�
瀵逛簬鍙跺瓙缁撶偣锛�\(f=1\)
瀵逛簬 \(\min\) 缁撶偣锛�\(f[p]=\sum_{p\to q} f[q]\)
瀵逛簬 \(\max\) 缁撶偣锛�\(f[p]=\min_{p \to q} f[q]\)
缁欎綘涓€涓湪鏁拌酱涓婄殑鐐归泦 \(x_1, x_2, \dots, x_n\)銆� 姣忎袱涓偣 \(i\)锛�\(j\) 鍙互鍦ㄦ弧瓒充互涓嬫儏鍐电殑鏃跺€欑浉杩�: 鐐� \(i\) 鍜岀偣 \(j\) 鍧囨湭涓庡叾浠栫偣鐩歌繛锛�\(\left| x_i - x_j \right| \geq z\)銆傞偅涔堣浣犳眰鍑烘渶澶氬彲浠ヨ繛鎺ュ灏戠偣瀵癸紵

Solution

鍙屾寚閽堜竴閬嶅嵆鍙�
涓嶇煡閬撹繖涓鎬庝箞璇勭殑鍒�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬帓鍒� \(p\)锛屾眰鏈夊灏戝尯闂� \([l,r]\) 婊¤冻 \(p[l]+p[r]=max\{p[i]\}\)锛屽叾涓� \(l \le i \le r\)

Solution

鍗曡皟鏍堥澶勭悊鍑烘瘡涓厓绱犵殑鎺у埗鍖洪棿锛堜互瀹冧负鏈€澶у€肩殑鍖洪棿锛�
鏋氫妇鏈€澶у€间綅缃� \(i\)锛屼簬鏄� \(l \in [l[i],i], r \in [i,r[i]]\)
鑰冨療涓や釜鍖洪棿鐨勯暱搴︼紝鍦ㄥ皬鐨勯偅涓腑鏋氫妇锛屽垯鍙渶瑕佹鏌ュ樊鏄惁鍦ㄥぇ鍖洪棿涓嚭鐜�
鐢ㄦ帓鍒楃殑閫嗘潵妫€鏌ワ紝鍊� \(x\) 鍦� \(p_l,...,p_r\) 涓嚭鐜帮紝鍗� \(l \le I_x \le r\)锛屽叾涓� \(I\) 鏄� \(p\) 鐨勯€�
鏄剧劧姣忎釜鍏冪礌琚灇涓炬鏁扮殑涓婄晫涓� \(O(\log n)\)锛屼簬鏄椂闂村鏉傚害涓� \(O(n \log n)\)

Description

缁欏嚭涓や釜鏁存暟 $ n \(,\) k $ 浣犻渶瑕佹瀯閫犲嚭涓€涓湁 \(k\) 椤圭殑鏁板垪 $ A $ 婊¤冻浠ヤ笅鏉′欢锛�

  • 瀵逛簬浠绘剰鐨� $ i\in [1,k] $ 鏈� $ A_i>0 $
  • 瀵逛簬浠绘剰鐨� $ i\in (1,k] $ 搴斿綋鏈� $ A_{i-1}<A_i\le2A_{i-1} $
  • $ \sum\limits_{i=1}^kA_i=n $

Solution

棣栧厛鎴戜滑鍙互鏋勯€犱竴涓瓑宸暟鍒� \(a_i=i\)锛屽鏋滄鏃� \(s>n\) 鍒欏繀鐒舵棤瑙�
鑰冭檻鍏堝姣忎釜浣嶇疆鍔犱笂 \([\frac {n-s} k]\)锛屽墿涓� \((n-s) \bmod k\) 瑕佸姞
鑰冭檻鍒� \(k\) 寰堝皬锛屾垜浠粠鍙冲線宸︿緷娆℃灇涓句綅缃紝姣忔鏆村姏鍔犱竴涓悗缂€锛屽€掑簭寰幆 \(+1\) 鍗冲彲

Description

杈撳叆 \(n\) 涓暟,鏋勯€犱竴涓渶澶х殑鐜紝鐜笂浠绘剰 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)銆�\(a_i \le 2 \times 10^5\)

Solution

涓€瀹氳鎵句竴娈� \(l,l+1,l+2,...,r\)锛屽叾涓櫎浜� \(l,r\) 鍙互鍙嚭鐜颁竴娆′互澶栵紝鍏跺畠鐨勯兘鑷冲皯瑕佸嚭鐜颁袱娆�
鑰冭檻鍒� \(a_i \le 2\times 10^5\)锛岀敤妗跺鐞嗕竴涓嬪嵆鍙�

Description

鍦ㄤ竴涓钩闈㈢洿瑙掑潗鏍囩郴涓紝缁欎綘 $ n(2鈮鈮�50) $ 涓偣鐨勫潗鏍囥€傝繖 $ n $ 涓偣涓紝姣忎袱涓偣涔嬮棿閮芥湁涓€鏉�鐩寸嚎锛堟敞鎰忎笉鏄嚎娈碉級 鐩歌繛銆傛眰锛氳繖浜涚洿绾夸腑锛屾湁澶氬皯瀵圭洿绾跨浉浜ゃ€�
1.褰撳鐐瑰叡绾挎椂锛屼笉璁や负鐢辫繖鍑犱釜鐐逛骇鐢熺殑鐩寸嚎鏈変氦鐐癸紱

2.澶氭潯鐩寸嚎浜や簬涓€鐐规椂锛�骞朵笉浠h〃杩欏嚑鏉$洿绾垮湪杩欎釜鐐圭浉浜ゆ椂鍙骇鐢熶竴涓氦鐐�锛岃€屾槸姣忎袱鏉$洿绾块兘瑕佺粺璁′竴娆°€�

Solution

鐔熸倝涓€涓嬫澘瀛愶紙杩欓涓轰粈涔堟湁1900锛燂級
缁欏畾鐢� \(n\) 涓暣鏁扮粍鎴愮殑闆嗗悎 \(A\)銆傜幇缁欏畾 \(m\) 缁勯泦鍚堬紝姣忎釜闆嗗悎 \(S_i\) 閮芥槸 \(A\) 鐨勪竴涓湡瀛愰泦锛堣繖閲岀殑闆嗗悎鎻忚堪涓� \(A\) 涓厓绱犱笅鏍囬泦鍚堬級锛屾眰鏄惁瀛樺湪闆嗗悎 \(A\) 浣垮緱瀵� \(\forall_{1 \leq i \leq m}\) 涓嶇瓑寮� \(LCM(S_i) > LCM(A - S_i)\) 鎭掓垚绔嬨€�

Solution

濡傛灉瀛樺湪涓や釜闆嗗悎娌℃湁浜ら泦锛岃涓� \(S,T\)锛屽垯 \(LCM(S)> LCM(A-S) \ge LCM(T)\)锛岀牬鍧忎簡瀵圭О鎬э紝鍒欎竴瀹氭棤瑙�
鍚﹀垯鎴戜滑缁欐瘡涓泦鍚堝畨鎺掍竴涓川鏁� \(p_i\)锛岃鐢ㄨ繃鐨勬墍鏈夎川鏁伴泦鍚堜负 \(P\)锛岃 \(\prod S\) 鏄暣鏁伴泦鍚� \(S\) 鐨勫箍涔夌Н锛岄偅涔堝浜庨泦鍚� \(i\)锛屽叾 \(LCM\) 涓� \(\prod P\)锛岃€屽叾琛ラ泦涓€瀹氫笉澶т簬 \(\prod P-\{ p_i \}\)锛屼簬鏄竴瀹氬瓨鍦ㄨВ
缁欏嚭 \(01\) 涓� \(s\)锛屾眰鏁板 \([l,r]\) 涓暟锛屼娇寰楄兘鎵惧埌鑷冲皯涓€瀵� \(x,k\)锛屼娇 \(1\le x,k \le |s|\) 涓� \(l\le x<x+2k \le r\) 涓�\(s[x]=s[x+k]=s[x+2k]\)

Solution

鑰冭檻涓€涓毚鍔涳紝瀵逛簬鎵€鏈夌殑 \(l\)锛屾毚鍔涙壘鍒版渶灏忕殑鑳芥弧瓒虫潯浠剁殑 \(r\)
瀹规槗璇佹槑 \(r\) 鏄叧浜� \(l\) 鍗曡皟鐨勶紝浜庢槸鍊掑簭鎵弿 \(l\) 鍗冲彲
缁欏畾涓€鍦嗭紝涓婂潎鍖€鍒嗗竷鏈� \(n\) 涓妭鐐癸紙涓嶉噸鍚堬紝浠� \(1\) 鍒� \(n\) 缂栧彿锛夈€傚畠浠寜鐓ц緭鍏ヨ繛鎴愪竴妫垫爲銆傛眰鍚堟硶鏍戠殑鏂规鎬绘暟锛屽 \(998244353\) 鍙栨ā銆備竴妫垫爲鏄悎娉曠殑锛屽綋涓斾粎褰撹繖妫垫爲涓棤浜ゅ弶鐨勮竟锛堜袱杈瑰叡鐢ㄤ竴绔偣闄ゅ锛夈€�

Solution

鎬濊矾涓婄被浼兼爲褰� dp 鍚�
瀵逛簬鐐� \(p\) 鐨勫瓙鏍戯紝瀹冨湪鎺掑垪涓繀瀹氭槸涓€娈佃繛缁殑鍖洪棿锛屽惁鍒欏氨浼氬拰鍏跺畠鐨勫瓙鏍戠浉浜�
涓嶅Θ璁� \(p_1=1\)锛岃鐐� \(i\) 鐨勫害鏁颁负 \(d_i\)锛屼粠鏍� \(1\) 寮€濮嬶紝鎴戜滑鍙互浠绘剰鍐冲畾鍚勪釜瀛愭爲涔嬮棿鐨勯『搴忥紝鐒跺悗閫掑綊涓嬪幓
浜庢槸绛旀涓� \(n \prod_{i=1}^n d_i!\)

Description

缁欎袱涓暟 $ n $ 鍜� $ x $锛屾瀯閫犱竴涓弧瓒充互涓嬫潯浠剁殑搴忓垪锛�

  • 瀵逛换浣曞簭鍒椾腑鐨勫厓绱� $ a_i \(锛�\) 1\le a_i<2^n $
  • 搴忓垪涓病鏈夐潪绌鸿繛缁瓙搴忓垪寮傛垨鍜�涓� $ 0 $ 鎴� $ x $
  • 搴忓垪闀垮害 $ l $ 搴旇鏈€澶�

Solution

鏋勯€犲墠缂€鍜屽簭鍒� \(s_i = \oplus_{j=1}^i a_i\)锛屾瘡娆℃毚鍔涙壘涓€涓� \([1,2^n)\) 鐨勬暟锛屼娇寰� \(s_i\) 娌℃湁鍑虹幇杩囧嵆鍙�
涓ゆ暟鍒� \(a , b\)锛屽鏋� \(a_i\) 鏄礌鏁帮紝閭d箞 \(b\) 鏁板垪閲屾坊鍔犱笂绗� \(a_i\) 涓礌鏁帮紙\(2\) 涓虹涓€涓級锛屽鏋滀笉鏄礌鏁帮紝閭d箞 \(b\) 鏁板垪閲屾坊鍔犱笂 \(a_i\) 鐨勬渶澶у洜瀛愩€傜幇鍦ㄧ粰鍑烘坊鍔犲畬涔嬪悗鐨� \(b\) 鏁板垪锛屾眰鍑� \(a\) 鏁板垪銆�

Solution

浠庡ぇ鍒板皬鏋氫妇鍚堟暟锛屽垹鍘诲畠鐨勬渶澶у洜瀛�
浠庡皬鍒板ぇ鏋氫妇璐ㄦ暟 \(p\)锛屽垹鍘荤 \(p\) 涓川鏁�

Description

搴忓垪 \(123456789101112131415161718192021222324252627282930313233343536...\) 鏄棤绌锋棤灏界殑,鐜板湪浣犺杈撳嚭瀹冪殑绗� \(k\) 椤广€�\(k \le 10^{12}\)

Solution

鍒嗘澶勭悊

  • 鎵惧埌绛旀鎵€鍦ㄦ暟鐨勪綅鏁�
  • 鎵惧埌绛旀鎵€鍦ㄦ暟鍦ㄥ綋鍓嶄綅鏁颁腑鎺掔鍑�
  • 鎵惧埌绛旀鍦ㄧ瓟妗堟墍鍦ㄦ暟鏄鍑犱綅

Description

涓€闈㈠浗鏃楀彲浠ユ娊璞′负涓€涓� $ n\times m (n,m \le 1000)$ 鐨勭煩褰紝姣忎竴涓綅缃湁涓€涓鑹层€傝繖涓煩褰㈢敱鑷笂鑰屼笅涓夋潯妯悜鐨勯鑹插甫缁勬垚锛屾瘡涓€鏉¢鑹插甫瀹藉害鐩哥瓑锛岃€屼笖鐩搁偦涓や釜棰滆壊甯﹂鑹蹭笉鑳界浉鍚屻€傜幇鍦ㄤ綘鏈変竴涓� $ n\times m $ 鐨勭煩褰紝浣犻渶瑕佽绠楀叾涓兘澶熺О涓哄浗鏃楃殑瀛愮煩褰㈡暟閲忋€�

Solution

棰勫鐞� \(f[i][j]\) 琛ㄧず浠ュ厓绱� \((i,j)\) 涓洪《绔紝鍦ㄦ弧瓒抽鑹茬浉鍚岀殑鏉′欢涓嬶紝鑳藉悜涓嬪欢浼哥殑鏈€闀胯窛绂�
鐒跺悗璁$畻浠ユ瘡涓偣涓哄彸涓婅鐨� Flag 鏁伴噺
瀵逛簬鍗曞垪鐨勫垽鏂紝鍙渶瑕佷娇鐢ㄥ嚑涓潯浠跺嵆鍙紝鍒ゅ畾浣嶇疆 \(i+3d-1\) 鍚堟硶锛屽苟涓� \(i+d,i+2d\) 鐨� \(f\) 鍊兼弧瓒虫潯浠�
鑰冭檻澶嶅垪锛屽鏋滅 \(j\) 鍒椾笌绗� \(j-1\) 鍒楃殑棰滆壊瀵瑰簲鐩稿悓锛屽苟涓斿欢浼告暟绗﹀悎鏉′欢锛屽垯灏嗚鏁板櫒 \(+1\)锛屽惁鍒欏皢璁℃暟鍣ㄧ疆 \(1\)
锛堢敤濂介鐩潯浠舵潵鏋勯€犵畻娉曪紝绠€鐩村お濡欎簡锛�

Description

缁欏畾 \(m\) 涓煄甯傦紝姣忓勾浼氶€夋嫨涓€涓煄甯備妇鍔炴瘮璧涳紝鐜板湪缁欏嚭鍓� \(n\) 骞翠妇鍔炴瘮璧涚殑鎯呭喌銆傚湪鎺ヤ笅鏉ョ殑骞翠唤涓紝姣忓勾鐨勬瘮璧涗細鍦ㄤ妇鍔炴瘮璧涙鏁版渶灏忕殑鍩庡競涓惧姙锛屽鏋滄湁澶氫釜鏈€灏忓€硷紝鍒欏厛鍦ㄧ紪鍙锋渶灏忕殑鍩庡競涓惧姙銆傛湁 \(q\) 涓闂紝姣忎釜璇㈤棶缁欏畾涓€涓� \(k\)锛岄棶绗� \(k\) 骞村湪鍝釜鍩庡競涓惧姙姣旇禌銆�

Solution

鑰冭檻绂荤嚎澶勭悊锛屽皢璇㈤棶鎺掑簭锛岀淮鎶や竴涓泦鍚堣〃绀哄綋鍓嶈疆鍙互涓惧姙鐨勫煄甯傜殑缂栧彿闆嗗悎锛屾瘡娆¢€氳繃鏆村姏 kth 鏉ユ壘绛旀锛岃繖鏍烽渶瑕佺敤骞宠 鏍戠淮鎶わ紝鑰冭檻鏄惁鏈夋洿绠€鍗曠殑鍋氭硶
鍓� \(n\) 鍦烘瘮璧涙瘡涓€鍦洪兘浼氭伆濂戒娇寰楀悗闈㈢殑涓€鍦烘瘮璧涜璺宠繃锛屾垜浠彧闇€瑕佹眰鍑鸿璺宠繃鐨勬瘮璧涚殑鏃跺埢鍗冲彲
鍏堜笉鑰冭檻琚烦杩囩殑姣旇禌涔嬮棿鐨勭浉浜掍綔鐢紝璁惧墠 \(n\) 鍦轰腑鐨勭 \(i\) 鍦虹殑涓惧姙鍦扮偣鏄� \(x\)锛屽墠 \(i\) 鍦轰腑鍦� \(x\) 涓惧姙鐨勫満鏁版槸 \(c[x]\)锛屽垯瀵艰嚧鐨勮璺宠繃鐨勬瘮璧涚殑鍘熸湁鏃跺埢涓� \(m\cdot c[x]+x - 1\)
鐢变簬璺宠繃鐨勬瘮璧涗箣闂翠細鐩镐簰褰卞搷锛屾垜浠笉濡ㄥ厛璁颁负 \(a[i]=m \cdot c[x] + x\)锛屽湪瀵规墍鏈夋瘮璧涜繘琛屾帓搴忓悗锛屼护 \(a[i]=a[i]-i\)锛屽嵆寰楀埌浜嗘瘡娆¤烦杩囩殑鏃堕棿
鏈€鍚庢眰瑙g瓟妗堟椂锛屽彧闇€瑕佷簩鍒嗕竴涓嬶紝鍑忓幓 \(a[i] \le k-n\) 鐨勪釜鏁板嵆鍙�

Description

浣犳湁涓€涓暱搴︿负 $ n \le 100 $ 鐨勫瓧绗︿覆銆傚浜庝竴涓暱搴︿负 $ m $ 鐨勫瓙搴忓垪锛岄€夊嚭瀹冪殑鑺辫垂鏄� $ n-m $锛屼篃灏辨槸浣犻渶瑕佸垹鎺夌殑瀛楃鏁伴噺銆備綘鐨勪换鍔℃槸閫夊嚭 $ k $ 涓�鏈川涓嶅悓鐨勫瓙搴忓垪锛屼娇寰楁€昏姳璐规渶灏忋€傝緭鍑鸿繖涓渶灏忚姳璐广€傚鏋滈€変笉鍑� $ k $ 涓紝杈撳嚭 $ -1 $銆�

Solution

璁� \(pre[i]\) 琛ㄧず \(i\) 鐨勫墠椹变綅缃紝璁� \(f[i][j]\) 琛ㄧず鍓� \(i\) 涓瓧绗︼紝闀垮害涓� \(j\) 鐨勬湰璐ㄤ笉鍚屽瓙涓茬殑鏁伴噺锛屽垯

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

缁欏嚭涓€涓� \(n\times m\) 鐨勭煩闃碉紝浣犲彲浠ユ瘡娆℃寜鐓у瓧姣嶉『搴忔坊鍔犳í鍚戞垨绾靛悜鐨勪竴鏉¢摼锛岃繖鏉¢摼浼氭槸 a~z 杩� \(26\) 涓皬鍐欏瓧姣嶄腑鐨勪竴涓紝骞朵笖浼氳鐩栧師鏉ョ殑閾俱€傜幇鍦ㄧ粰鍑轰竴涓搷浣滃悗鐨勭煩闃碉紝瑕佹眰鍥炵瓟鏄惁鍙兘褰㈡垚杩欑鎯呭喌锛屼笖姣忔潯閾炬槸浠庡摢涓偣鍒板摢涓偣銆�

Solution

鍊掑簭澶勭悊锛屽皢瀛楁瘝涓€灞備竴灞傚墺寮€锛屽悓鏃惰褰曞墠灞備腑鐣欎笅鏉ョ殑鈥滄棤鍏斥€濅綅缃紝鍗宠浣嶇疆鐢变簬鍏堝墠琚鐩栵紝鐜板湪鍙湁鍙棤
浜庢槸鎴戜滑瀵逛簬褰撳墠瀛楁瘝 c锛屾壘鍒� c 瀛楁瘝鐨勫洓杈圭晫锛屾鏌ヨ繖鏄惁鏄竴鏉$洿閾撅紝濡傛灉涓嶆槸鍒欓€€鍑�
濡傛灉鏄紝鍒欐鏌ヨ繖鏉$洿閾捐寖鍥村唴鍔犱笂鏃犲叧瀛楁瘝鏄惁鑳藉~婊★紝濡傛灉涓嶈兘鍒欓€€鍑�
缁欏畾涓€妫� \(n\) 涓偣鐨勬爲锛屽垵濮嬪叏鏄櫧鐐癸紝瑕佹眰浣犲仛 \(n\) 姝ユ搷浣滐紝姣忎竴娆¢€夊畾涓€涓笌涓€涓粦鐐圭浉闅斾竴鏉¤竟鐨勭櫧鐐癸紝灏嗗畠鏌撴垚榛戠偣锛岀劧鍚庤幏寰楄鐧界偣琚煋鑹插墠鎵€鍦ㄧ殑鐧借壊鑱旈€氬潡澶у皬鐨勬潈鍊笺€傜涓€娆℃搷浣滃彲浠ヤ换鎰忛€夌偣銆傛眰鍙幏寰楃殑鏈€澶ф潈鍊笺€�

Solution

鏄剧劧濡傛灉閫夊畾浜嗗紑濮嬬偣锛岄偅涔堢瓟妗堝氨鏄浐瀹氱殑
璁惧紑濮嬬偣涓烘牴锛屽垯绛旀涓烘墍鏈夊瓙鏍戠殑澶у皬鍜�
璁句互 \(i\) 涓烘牴鐨勭瓟妗堜负 \(f[i]\)
鍒欐樉鐒舵湁 \(f[v]-f[u] = n-2s[v]\)
涓ゆ DFS 鍗冲彲

[CF1188B] Count Pairs - 鏁板

Description

缁欏畾涓€涓川鏁� \(p\) , 涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a_1,a_2,...,a_n\)鍜屼竴涓暣鏁� \(k\)锛屾眰鎵€鏈夋暟瀵� \((i, j) (1 \le i,j \le n)\) 涓弧瓒� \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 鐨勪釜鏁般€�

Solution

鍥犱负 \(p\) 鏄川鏁帮紝鎵€浠ヤ换鎰忛潪闆跺厓绱犳湁閫嗗厓锛屽洜姝や箻娉曡繍绠楁弧瓒虫秷鍘诲緥
杩欐牱鎴戜滑灏卞彲浠ュ湪鍘熷紡鐨勪袱渚у悓鏃朵箻涓婁竴涓� \(a_i-a_j\)锛屽寲绠€寰楀埌 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)

[CF11D] A Simple Task - 鐘舵€佸帇缂ヾp

Description

姹傜畝鍗曟棤鍚戝浘鐨勭幆鏁般€�

Solution

閽﹀畾鏈€灏忕紪鍙风殑鐐规槸姣忎釜鐜殑璧风偣锛岃繖鏍锋壘鐜氨鍙樻垚浜嗘壘鐜矾
璁� \(f[s][i]\) 琛ㄧず閬嶅巻杩囩殑鐐归泦涓� s锛屽綋鍓嶇偣涓� i 鐨勮矾寰勬暟
杞Щ鏃跺垽瀹氫竴涓嬬姸鎬佺殑 Lowbit 鍜屾柊鐐圭殑鍏崇郴鍗冲彲
鏈� \(n\) 涓崟璇嶏紝鎯虫妸杩欎釜 \(n\) 涓崟璇嶅彉鎴愪竴涓彞瀛愶紝鍏蜂綋鏉ヨ灏辨槸浠庡乏鍒板彸渚濇鎶婁袱涓崟璇嶅悎骞舵垚涓€涓崟璇嶏紝鍚堝苟涓や釜鍗曡瘝鐨勬椂鍊欙紝瑕佹壘鍒版渶澶х殑 \(i(i\ge 0)\)锛屾弧瓒崇涓€涓崟璇嶇殑闀垮害涓� \(i\) 鐨勫悗缂€鍜岀浜屼釜鍗曡瘝闀垮害涓� \(i\) 鐨勫墠缂€鐩哥瓑锛岀劧鍚庢妸绗簩涓崟璇嶇 \(i\) 浣嶄互鍚庣殑閮ㄥ垎鎺ュ埌绗竴涓崟璇嶅悗闈紝杈撳嚭鏈€鍚庨偅涓崟璇嶃€�

Solution

鍓嶇紑閰嶅悗缂€锛屾兂鍒� KMP
姣忔鏋勯€犱竴涓緟鍖归厤涓插湪鍓嶏紝宸插尮閰嶄覆鍦ㄥ悗鐨勪覆锛岃绠楄繖涓覆鏈€鍚庝竴浣嶇殑 \(next\) 鍊煎氨鏄湰娆″尮閰嶇殑瀹藉害
娉ㄦ剰宸插尮閰嶄覆鐨勯暱搴︽渶澶氬彧闇€瑕佹埅鍙栧埌寰呭尮閰嶄覆鐨勯暱搴﹀嵆鍙�
鏈変竴涓� \(n\times m\) 鐨勭綉鏍硷紝鏂规牸涓婃湁 \(k\) 涓疂钘忥紝涓€涓汉浠� \((1,1)\) 鍑哄彂锛屽彲浠ュ悜宸︽垨鑰呭悜鍙宠蛋锛屼絾涓嶈兘鍚戜笅璧般€傜粰鍑� \(q\) 涓垪锛屽湪杩欎簺鍒椾笂鍙互鍚戜笂璧帮紝鍏朵粬鍒椾笉鑳藉悜涓婅蛋銆傚彲浠ラ噸澶嶇粡杩囧悓涓€涓偣銆傛眰浠� \((1,1)\) 鍑哄彂锛岀粡杩囨墍鏈夊疂钘忕殑鏈€鐭矾寰勯暱搴︺€�\(n,m,k,q\leq 2\times 10^5\)

Solution

璁� \(f[i][0/1]\) 琛ㄧず浠� \((0,0)\) 璧板埌 \(i\) 琛岀殑宸︿晶/鍙充晶锛屽苟閬嶅巻浜� \(1 \to i-1\) 琛岀殑鎵€鏈夊疂鐗╃殑鏈€鐭矾寰勯暱搴�
锛堟尯鎬曡繖绉嶉鐨勶級

Description

缁欎綘涓€涓暟 $ n $锛屾眰鍑轰竴涓湁 $ n $ 涓瓙搴忓垪涓� $ 1337 $ 鐨勫簭鍒楋紝搴忓垪闀垮害涓嶈兘澶т簬 $ 10^5 $銆�

Solution

鑰冭檻 1 + n涓�3 + m涓�7
鍒欐柟妗堟暟涓� \(\frac {mn(n-1)} 2\) 绉嶏紝涓嶄竴瀹氳兘鐢�
浜庢槸鑰冭檻 133 + k7 + (n-2)3 + m7
鍒欐柟妗堟暟涓� \(\frac {mn(n-1)} 2 +k\) 绉�
涓嶅Θ鍙� \(n=300\)锛岀劧鍚庢毚鍔涘皾璇� \(m\) 骞惰绠� \(k\)锛屾渶鍚庨€夋嫨涓€涓彲琛岀殑鍗冲彲

[CF1203F1] Complete the Projects - 涓撮」浜ゆ崲鎺掑簭

Description

鎵撶 i 鍦烘瘮璧涢渶瑕� ai 鐨� rating锛屾墦瀹岀 i 鍦烘瘮璧涘悗 rating change 鏄� bi锛宺ating 蹇呴』闈炶礋銆傛眰鏄惁瀛樺湪椤哄簭鑳藉畬鎴愭墍鏈夐」鐩€�\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

涓撮」浜ゆ崲鎺掑簭
瀵逛簬 bi > 0 鐨勯儴鍒嗭紝鏄剧劧鎸� ai 鎺掑簭
鍚﹀垯锛屾寜 ai+bi 鎺掑簭鍗冲彲

鍋囧 1,2锛屽垵鎬佷负 r锛屾鏃惰姹� r>=a1, r>=a2-b1锛岃嫢浜ゆ崲锛屽垯 r>=a2, r>=a1-b2锛屼簬鏄垜浠笇鏈� max(a1,a2-b1)<=max(a2,a1-b2)
浜庢槸 a2+b2>=a1+b1
## [CF1204D2] Kirk and a Binary String - 鎬濈淮 ### Description 缁欏畾涓€涓� 01 涓诧紝瑕佷綘姹傚嚭鍙︿竴涓暱搴︾浉绛変覆浣垮緱浠绘剰鍖洪棿鍐呮渶闀夸笉闄嶅瓙搴忓垪鐨勯暱搴︿笌鍘熶覆鐩哥瓑涓� 0 鐨勬€绘暟灏介噺澶氥€� ### Solution 鎴戜滑瑕佸皢涓€浜� 1 鏀规垚 0锛屽皢鏌愪竴涓� 1 鏀规垚 0 鐨勬潯浠舵槸瀹冨悗闈㈢殑 0 鐨勪釜鏁颁笉灏戜簬 1 鐨勪釜鏁帮紝杩欎釜鏉′欢淇濊瘉浜嗚繖娆′慨鏀逛笉浼氬奖鍝嶆纭€� 鍦ㄨ繖涓潯浠朵笅锛屾垜浠椽蹇冨湴淇敼锛屽€掑簭鎵弿鏁翠釜搴忓垪锛岃兘淇敼灏变慨鏀�
鎷彿搴忓垪瑙嗚锛�0 鐪嬫垚宸︽嫭鍙凤紝1 鐪嬫垚鍙虫嫭鍙凤紝閭d箞鏈€闀夸笉闄嶅瓙搴忓垪灏辨槸鏈€闀跨殑鍙互鍖归厤鐨勫瓙鎷彿搴忓垪闀垮害锛岃繖鏍风悊瑙h捣鏉ヤ細寰堟竻妤�
鏈� $n(n\leq 10^5)$ 涓暟 $a_1,...,a_n\ (a\leq 10^{18})$ 銆傛湁涓€涓浘鐢ㄨ繖涓柟娉曠敓鎴愶紝鑻� $a_i$ 鎸変綅涓� $a_j$ 涓嶄负 $0$锛屽垯鍦� $a_i,a_j$ 闂磋繛涓€鏉℃棤鍚戣竟銆傛眰杩欎釜鍥剧殑鏈€灏忕幆锛岃嫢鏃犵幆杈撳嚭 $-1$銆� ### Solution 鎶� $a_i=0$ 鐨勬暟瀛楀垹鎺� 褰� $n \ge 128$ 鏃讹紝鑷冲皯鏈変竴涓簩杩涘埗浣嶆弧瓒宠浣嶄负 $1$ 鐨勬暟涓暟 $\ge 3$锛屽嵆褰㈡垚涓夊厓鐜� 褰� $n<128$ 鏃讹紝鏆村姏寤哄浘鍚庣敤 Floyd 璺戞渶灏忕幆鍗冲彲 ## [CF1207F] Remainder Problem - 鏍瑰彿鍒嗘不 ### Description 缁欎綘涓€涓暱搴︿负 $500000$ 鐨勫簭鍒楋紝鍒濆€间负 $0$ 锛屼綘瑕佸畬鎴� $q$ 娆℃搷浣滐紝鎿嶄綔鏈夊涓嬩袱绉嶏細
  • 1 x y : 灏嗕笅鏍囦负 \(x\) 鐨勪綅缃殑鍊煎姞涓� \(y\)
  • 2 x y : 璇㈤棶鎵€鏈変笅鏍囨ā \(x\) 鐨勭粨鏋滀负 \(y\) 鐨勪綅缃殑鍊间箣鍜�

Solution

鏍瑰彿鍒嗘不锛岃 \(b=\sqrt{500000}\)锛岄偅涔堟垜浠鎵€鏈� \(r \le b\) 缁存姢 \(sum[r][i]\) 琛ㄧず涓嬫爣妯� \(r\) 绛変簬 \(i\) 鐨勬墍鏈変綅缃殑绛旀鍜�
姣忔淇敼鏃讹紝鍋囪杩欎釜浣嶇疆鐨勬柊鍊兼槸 x锛岄偅涔堟垜浠渶瑕佸鎵€鏈� \(r \le b\)锛屽湪 \(sum[r][x\%r]\) 鐨勪綅缃慨鏀癸紝鍚屾椂淇敼鏃т綅缃�
璇㈤棶鏃讹紝濡傛灉 \(x \le b\) 閭d箞鐩存帴璋冨嚭缁撴灉锛屽惁鍒欐毚鍔涙煡璇㈠師濮嬪簭鍒�

Description

鐜板湪鏈変竴涓粠 $ 1 $ 鍒� $ n $ 鐨勪竴涓叏鎺掑垪,浣嗘槸浣犱笉鐭ラ亾杩欎釜鎺掑垪鍒板簳鏄粈涔�,浣嗘槸浣犳湁涓€涓� $ sum[i] $,鍏朵腑 $ sum[i] $ 琛ㄧず $ \sum_{j=1}^{i-1}(a_j<a_i)?a_j:0 $,鐜板湪缁欎綘 $ sum $ 鏁扮粍,璁╀綘姹傚嚭杩欎釜鎺掑垪 $ a $

Solution

棣栧厛鎵惧埌鏈€闈犲悗鐨� \(0\)锛屽皢杩欎釜浣嶇疆 \(s\) 璧嬪€间负 \(\infty\)锛�\(a\) 璧嬪€间负 \(1\)锛屽悓鏃跺皢瀹冨悗闈㈡墍鏈夌殑 \(s-1\)锛岄噸澶嶄笅鍘诲嵆鍙�
鐢ㄧ嚎娈垫爲缁存姢
鏈� \(n\) 澶╂椂闂存潵涔颁竴绉嶇墿鍝侊紝涓€鍏辫涔� \(k\) 浠讹紝绗� \(i\) 澶╁彲浠ヨ喘涔扮殑鑼冨洿鏄� \([a_i,b_i]\)锛屽崟浠� \(c_i\)锛屾眰鏈€灏忔€昏姳璐�

Solution

鏆村姏璐績锛屼粠鏈€渚垮疁鐨勫紑濮嬩拱鍗冲彲
鍐欏畬鎵嶅彂鐜板師棰樿姹傜敤 Kotlin锛屾垜褰撳仛娌$湅瑙佷簡
涓昏鏄€熺潃杩欓璇曠敤浜嗕竴涓� lambda 琛ㄨ揪寮�
缁欏畾涓や釜闀垮害涓� \(2\) 鐨勪覆锛屼綘闇€瑕佹瀯閫犱竴涓暱搴︿负 \(3n\) 鐨勪覆锛屼娇寰� a,b,c 涓夌瀛楁瘝鍚勫嚭鐜� \(n\) 娆★紝涓斿畠涓嶅寘鍚繖涓や釜涓诧紝瀛楃闆嗕腑浠呮湁 a,b,c

Solution

鐢诲嚭杞Щ鍥撅紝\(3\) 涓偣锛�\(7\) 鏉¤竟锛屽彲鑳戒笉杩為€�
浣嗘槸寰堝鏄撹瘉鏄庝互涓嬫瀯閫犳ā寮忛泦鍙互瀵规墍鏈夋湁瑙g殑鎯呭喌缁欏嚭鍚堟硶鐨勬瀯閫�
锛堜互 \(n=2\) 涓轰緥锛�

aabbcc
aaccbb
bbaacc
bbccaa
ccaabb
ccbbaa
abcabc
acbacb
bcabca
bacbac
cabcab
cbacba

浜庢槸鎴戜滑鐢ㄦ瘡绉嶆ā寮忔瀯閫犱竴涓覆锛屾楠屾槸鍚﹀悎娉曞嵆鍙�
缁欎綘涓€涓湁 \(n\) 涓偣鐨勫甫鏉冩爲锛屾湁 \(m\) 涓煡璇紝姣忔鏌ヨ鏈€澶ф潈鍊间笉澶т簬 \(x\) 鐨勭偣瀵圭殑鏁扮洰

Solution

妯℃嫙 Kruskal 鐨勮繃绋嬶紝骞跺皢鏁翠釜杩囩▼鐨勭瓟妗堣褰曚笅鏉�
璇㈤棶 \(x\) 鐨勬椂鍊欙紝浜屽垎鎵惧埌鏈€鍚庝竴涓� \(\le x\) 鐨勪綅缃紝杈撳嚭杩欎釜鏃跺埢鐨勭瓟妗堝嵆鍙�
缁欎綘 \(d_i (\le n)\)锛岃姹備綘鏋勯€犱竴妫垫爲婊¤冻鐐� \(2i\) 涓� \(2i-1\) 璺濈涓� \(d_i\)銆�

Solution

鍏抽敭鍦ㄤ簬杩欎釜绁炲鐨� \(d \leq n\)
鎸夌収 \(d_i\) 浠庡ぇ鍒板皬鎺掑簭锛屽苟涓斿皢鎵€鏈夊鏁扮偣涓叉垚涓€鏉¢摼
渚濇鑰冭檻姣忎釜鍋舵暟鐐规寕鍦ㄥ摢閲�
瀵逛簬閾句笂绗� \(k\) 涓偣锛屽畠鐨勫伓鏁扮偣搴旇琚寕鍦� \(k+d_i-1\) 涓偣鐨勪笅闈�
濡傛灉绗� \(k+d_i-1\) 鏄摼涓婃渶鍚庝竴涓偣锛屽氨闇€瑕佸啀鎸備竴涓偣鏉ヨ繘琛屾墿鍏�
鍙互璇佹槑琚寕鐨勭偣涓€瀹氬瓨鍦�
铏界劧鍒嗙被璁ㄨ搴旇鏄瘮杈冩帹宕囩殑瑙f硶锛屼絾鏄垜灏辨槸鍠滄鏆村姏
缁欎竴涓湁鍚戝浘鐫€鑹诧紝浣垮緱娌℃湁涓€涓幆鍙湁涓€涓鑹诧紝闇€瑕佹渶灏忓寲浣跨敤棰滆壊鐨勬暟閲忋€�

Solution

濡傛灉鍥句腑娌℃湁鐜紝閭d箞鏄剧劧鍙渶瑕佷竴绉嶉鑹�
濡傛灉鍥句腑鏈夌幆锛屽垯灏� DFS 鏍戜腑鎵€鏈夋í鍙夎竟鍜屾爲杈规煋鎴� \(1\)锛岃繑绁栬竟鏌撴垚 \(2\) 鍗冲彲锛屾晠鍙渶瑕佷袱绉嶉鑹�
\(n\times m\) 鐨勭綉鏍间腑锛屽湪绗� \(i\) 琛� \(j\) 鍒楁湁 \(a[i][j]\) 涓场娉★紝姣忔鍙互鏀跺壊涓€琛屾垨涓€鍒楃殑娉℃场锛屾渶澶氭敹鍓� \(4\) 娆★紝闂渶澶氬彲浠ユ敹鍓插埌澶氬皯娉℃场銆�\(nm \leq 10^5\)

Solution

璁ㄨ绛旀鐨勫悇绉嶆儏鍐�

  • 鍥涜锛岃繖绉嶆儏鍐典笅鐩存帴姹傚拰鍙栧墠 \(4\) 涓渶澶у€煎嵆鍙�
  • 涓夎涓€鍒楋紝鏋氫妇鍙栧摢涓€鍒楋紝鐒跺悗姣忔鏆村姏鎻愬彇鍓� \(3\) 涓鏈€澶у€�
  • 涓よ涓ゅ垪锛屾樉鐒� \(n,m\) 涓繀鏈変竴涓� \(\leq \sqrt{10^5}\)锛岃瀹冩槸琛岋紝鍒欐毚鍔涙灇涓鹃€夊摢涓よ锛岀劧鍚庝粛鐒舵寜鐓у墠杩版柟娉曡绠楃瓟妗堝嵆鍙�

鍏朵綑鎯呭喌鍙互鐢变笂闈笁绉嶅熀鏈儏鍐垫棆杞緱鍒�
澶嶆潅搴� \(\mathcal{O} (nm \min(n,m))\)

[CF1220C]

Description

缁欏畾涓€涓瓧绗︿覆 \(S\) 锛� 鍚屾椂缁存姢涓€涓尯闂� \([l,r]\) 銆傝疆娴佹搷浣滐紝姣忔鍙互鎵╁睍鍒颁竴涓柊鍖洪棿浣垮緱鍘熷尯闂存槸鏂板尯闂寸殑鐪熷瓙鍖洪棿锛屽苟涓斿瓧鍏稿簭鏇村皬锛屼笉鑳芥搷浣滅殑浜鸿緭銆傚垵鎬佸尯闂翠负 \([k,k]\) 锛屼綘闇€瑕佸 \(k=1,2,...,|S|\) 鍒ゆ柇鑳滆礋鎬с€�

Solution

寰堝鏄撳彂鐜版父鎴忔渶澶氱帺涓€杞紝鎵€浠ュ彧闇€瑕佸垽鏂瘡涓瓧姣嶄箣鍓嶆湁娌℃湁鏇村皬鐨勫瓧姣嶅氨鍙互浜嗐€�
鏈� \(n\) 涓暟鐨勫簭鍒楋紝姣忔鎿嶄綔鍙互閫夋嫨涓€绉嶆暟锛屽皢浠栦滑鍏ㄩ儴绉诲埌寮€澶存垨缁撳熬锛岄棶鏈€灏戦渶瑕佸灏戞鎿嶄綔锛屾墠鑳戒娇搴忓垪鍙樹负闈為€掑噺搴忓垪銆�

Solution

灏嗘瘡绉嶆暟鍑虹幇鐨勬渶宸︽渶鍙充綅缃涓鸿繖涓暟鐨勫嚭鐜颁綅缃尯闂�
浜庢槸鎴戜滑瑕佹壘鑻ュ共涓€艰繛缁笅闄嶇殑鍖洪棿锛屽苟涓斾綅缃粠宸﹀埌鍙充緷娆℃帓甯冿紝浜掍笉鐩镐氦
绂绘暎鍖栧悗棰勫鐞嗗嚭鍖洪棿锛岀劧鍚庢壂涓€閬嶅嵆鍙�
缁欏畾涓€寮犲浘锛屽垽瀹氬畠鏄惁鏄畬鍏ㄤ笁鍒嗗浘銆�

Solution

鑰冭檻鍒版渶缁堝垝鍒嗗埌鍚屼竴闆嗗悎涓殑鐐癸紝瀹冧滑鐨勭洿鎺ュ彲杈剧偣閮芥槸鐩稿悓鐨�
浜庢槸鎴戜滑璁板綍姣忎釜鐐圭殑鐩存帴鍙揪鐐归泦鍚堬紝鎺掑簭锛岀劧鍚庡垎娈�
濡傛灉涓嶆槸涓夋锛屽垯涓嶅瓨鍦�
鍚屾椂瑕侀鍏堢瓫鍘绘湁瀛ょ珛鐐圭殑鎯呭喌
鏈変袱涓瓧绗︿覆 \(S,T\)銆傛瘡娆℃搷浣滃彲浠ュ皢 \(S\) 涓煇涓瓧绗︾Щ鍒板紑澶存垨缁撳熬銆傝嫢鎯宠 \(S=T\) 锛屽垯闇€瑕佺殑鏈€灏戞搷浣滄鏁版槸澶氬皯銆�\(Q \leq 100, n\leq 100\)

Solution

鑰冭檻璐績锛屾垜浠鎵句竴涓覆锛屽畠鏄� \(S\) 鐨勫瓙搴忓垪锛�\(T\) 鐨勫瓙涓诧紝骞朵笖闀垮害鏈€澶�
浜庢槸鎴戜滑鏆村姏鏋氫妇杩欎釜涓插湪 \(T\) 涓殑寮€澶翠綅缃紝鐒跺悗鎵竴閬� \(S\) 鍗冲彲

CF1234F Yet Another Substring Reverse

Description

缁欏畾涓€涓瓧绗︿覆锛屽彲浠ヤ换鎰忕炕杞竴涓瓙涓诧紝姹傛渶缁堟弧瓒虫墍鏈夊瓧绗︿簰涓嶇浉鍚岀殑瀛愪覆鐨勬渶澶ч暱搴︺€�
鏁版嵁鑼冨洿锛� \(n \le 10^6, \Sigma \le 20\)

Solution

鐢变簬琚炕杞瓙涓茬殑閫夋嫨鏄换鎰忕殑锛屾垜浠彲浠ュ皢鏈€缁堢殑瀛愪覆鐪嬩綔涓や釜鍘熶覆鐨勫墠缂€鐨勫悗缂€鐨勬嫾鍚堛€傜敱浜庨鐩殑鍚勭鎬ц川锛屾垜浠彧闇€瑕佽€冭檻鎵€鏈夊瓙涓叉瀯鎴愮殑瀛楃闆嗙殑鎵€鏈夊彲鑳界姸鎬侊紝鑰屼笌浣嶇疆鏃犲叧銆�
鑰屽瓧绗﹂泦鐨勭姸鎬佷緷鐒惰姹備笉鑳芥湁閲嶅瀛楃锛屽洜姝ゅ浜庢瘡涓€涓綅缃殑瀛楃锛屼互瀹冪粨灏剧殑瀛愪覆鏈€澶氬彧鏈� \(\Sigma\) 涓槸鍚堟硶鐨勶紝鍥犳鎴戜滑鐘跺帇骞� \(O(n\Sigma)\) 鎵竴閬嶅嵆鍙鐞嗗嚭瀛楃闆嗙殑鎵€鏈夌姸鎬併€�
鍘熼棶棰樿姹傜殑鏄袱涓簰鏂ョ殑瀛楃闆� \(P,Q\) 锛岀浉褰撲簬鎶婂瓧绗﹂泦鍒掑垎涓哄绔嬬殑涓ら儴鍒� \(A,B\)锛� 骞跺彇浠绘剰 \(P \subset A, Q \subset B\) 銆傛垜浠� \(O(\Sigma 2^\Sigma)\) 棰勫鐞嗗嚭瀛愰泦鍓嶇紑鍜岋紝鏆村姏鏋氫妇杩欑瀵圭珛鐨勫垝鍒嗭紝鍗虫灇涓惧瓙闆嗭紝鍗冲彲鍦� \(O(2^\Sigma)\) 鏃堕棿璁$畻鍑虹瓟妗堛€�

Code

[CF1236D] Alice and the Doll

Description

\(N \times M\)缃戞牸锛屾湁 \(K\) 涓牸瀛愰噷鏈夐殰纰嶇墿銆傛瘡娆$粡杩囦竴涓牸瀛愮殑鏃跺€欏彧鑳界洿璧版垨鑰呭彸杞竴娆°€傚垵鎬佸湪 \((1,1)\) 鏍煎瓙鍚戜笂銆傛眰鏄惁瀛樺湪涓€鏉¤矾寰勭粡杩囨墍鏈夋棤闅滅鏍煎瓙鎭板ソ涓€娆°€�

Solution

鏈€浼樼殑璧版硶鏄亣鍒伴殰纰嶆垨鑰呰竟鐣屽氨鍙宠浆锛屽惁鍒欑洿璧般€�
璧拌繃涓€鎺掓牸瀛愮浉褰撲簬鎸姩杈圭晫绾裤€�
杩欎袱涓粨璁轰粩缁嗗搧鍛宠捣鏉ュ緢鎸烘湁娣卞害鐨勩€�
鐒跺悗鏆村姏妯℃嫙灏卞彲浠ヤ簡锛屾壘闅滅鐗╃殑杩囩▼鍙互鐢� set 浼樺寲銆�
杩欓鐨勫潗鏍囩郴濂藉儚鏈夌偣濂囨€紝SB鐨勬垜灏辫繖涔堟悶鍙嶅潗鏍嘩A浜嗕竴鍙戙€傜劧鍚庡繕璁板紑longlong鍙圵A浜嗕竴鍙戙€�

Code

缁欏畾涓€涓� \(n \times m\) 鐨勬柟鏍煎浘锛屾瘡涓牸瀛愬彲浠ヨ鏌撴垚榛戣壊鎴栫櫧鑹诧紝涓斾笌鍏剁浉閭荤殑鏍煎瓙锛堜笂锛屼笅锛屽乏锛屽彸锛変腑鑷冲鍙湁涓€涓笌鍏堕鑹茬浉鍚屻€傛眰鏂规鏁般€�

Solution

渚濈█璁板緱褰撳勾鍦ㄧ儹韬禌涓婄鍒拌繖涓锛屽ぇ瀹堕兘璇存槸 CF 鍘熼锛岀劧鍚庢垜璺簡鈥︹€�
瀵逛簬 \((i,j)\)锛屽鏋滃畠宸︺€佸乏涓娿€佷笂鐨勯鑹茬‘瀹氾紝閭d箞杩欎釜鏍煎瓙鐨勯鑹插氨纭畾浜�
浜庢槸鎴戜滑鏋氫妇 \((1,1)\) 鐨勯鑹诧紝鐒跺悗灏嗙涓€琛岀涓€鍒楃殑棰滆壊纭畾涓嬫潵锛岃繖鏃跺€欒鍒楁樉鐒剁浉浜掔嫭绔�
瀵逛簬琛岋紝绛旀鐩稿綋浜庝竴涓� \(1/2\) 鎺掑垪鍒掑垎锛屽浜庡垪鍚岀悊锛屼簬鏄瓟妗堜负

\[2(F_n+F_m-1) \]

鏈変竴寮犲畬鍏ㄥ浘锛�\(n\) 涓妭鐐癸紝鏈� \(m\) 鏉¤竟鐨勮竟鏉冧负 \(1\)锛屽叾浣欑殑閮戒负 \(0\)锛岃繖 \(m\) 鏉¤竟浼氱粰浣犮€傞棶浣犺繖寮犲浘鐨勬渶灏忕敓鎴愭爲鐨勬潈鍊笺€�

Solution

灏� \(1\) 杈硅涓轰笉瀛樺湪锛岄偅涔堟渶鍚庣殑绛旀灏辨槸 \(0\) 杈瑰舰鎴愮殑杩為€氬潡鏁� \(-1\)
椤哄簭鎵弿鎵€鏈夌偣锛屽浜庣偣 \(i\)锛屾灇涓剧敱 \([1,i-1]\) 宸茬粡褰㈡垚鐨勯泦鍚� \(j\)锛屽鏋� \(i\) 鍚� \(j\) 杩炵殑杈规暟灏忎簬 \(j\) 鐨勫ぇ灏忥紝閭d箞灏辫〃鏄庝竴瀹氭湁 \(0\) 杈癸紝浜庢槸灏� \(i\) 鎵€鍦ㄩ泦鍚堜笌闆嗗悎 \(j\) 鍚堝苟

Description

鏈� \(n\) 鍦烘瘮璧涳紝鍏� \(p\) 鍒嗭紝鑳滃埄涓€鍦哄緱 \(win\) 鍒嗭紝骞冲眬涓€鍦哄緱 \(draw\) 鍒嗭紝杈撲竴鍦哄緱 \(0\) 鍒嗐€傜粰瀹� \(n,p,win,draw (win,draw \le 10^5)\)锛屾瀯閫犲悎娉曠殑鑳滃钩璐熷満娆℃暟閲� \(x,y,z\) 鎴栬€呭垽瀹氭棤瑙c€�

Solution

鏄剧劧鎴戜滑瑕佹眰婊¤冻 \(x+y \le n, win\cdot x + draw \cdot y = p\) 鐨勬渶灏忕殑 \(x+y\) 鐨勯潪璐熺殑 \(x,y\)銆�
鍏堣€冭檻姹傚嚭浠绘剰涓€缁勫彲琛岃В銆傜敱浜� \(win \le 10^5\)锛屽洜姝� \(0 \le y < win\) 涓竴瀹氭湁涓€涓弧瓒虫潯浠剁殑 \(y\)锛屽洜姝ゆ垜浠彧闇€瑕佹毚鍔涙灇涓� \(y\) 灏卞彲浠ユ壘鍒颁竴涓彲琛岀殑 \(y\)銆�
鐜板湪鍋囪宸茬粡寰楀埌鐨勫彲琛岃В涓� \(x',y'\)锛屾垜浠€冭檻濡備綍璁� \(x+y\) 鏈€灏忓寲銆�
璁� \(g=\text{gcd}(win,draw)\)锛屽垯 \(y+win/g, x-draw/g\) 鍗冲彲鎵惧埌涓€缁勬柊鐨勫彲琛岃В锛屾鏃� \(x+y\) 鐨勫彉鍖栭噺涓� \(win/g - draw/g\)銆�
濡傛灉杩欎釜鍊� \(>0\)锛岄偅涔堟垜浠氨鎿嶄綔 \(\frac {x} {draw/g}\) 娆★紝杩欐椂 \(x+y\) 杈惧埌鏈€灏忋€�
鏈変竴涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鎿嶄綔鍙互浣垮叾涓殑涓€涓暟 \(+1\) 鎴� \(-1\)銆傛搷浣滄鏁颁笉寰楀ぇ浜� \(k\)锛岄棶 \(MAX-MIN\) 鐨勬渶灏忓€兼槸澶氬皯銆�

Solution

璐績锛岃€冭檻鍒板彧鏈夋渶澶у€煎拰鏈€灏忓€煎缁撴灉鏈夊奖鍝嶏紝鎴戜滑姣忔姣旇緝鏈€澶у€煎拰鏈€灏忓€肩殑涓暟锛屽姩灏忕殑閭d竴杈�
涓轰簡鍔犻€燂紝姣忔鍔ㄦ渶灏忓€兼椂锛岀湅鏄惁鑳藉皢瀹冧慨鏀逛负娆″皬锛屽鏋滀笉鑳藉垯缁撴潫锛屾渶澶у€煎悓鐞�
缁欏畾 \(n\) 涓偣 \((n\leq2000)\)锛屽湪绗� \(i\) 涓偣涓婂缓绔嬩竴涓熀绔欓渶瑕� \(c_i\) 鐨勪唬浠凤紝杩炴帴涓や釜鐐归渶瑕� \((|x_i-x_j|+|y_i-y_j|)(k_i+k_j)\) 鐨勪唬浠枫€傚浜庝竴涓偣瑕佷箞寤虹珛鍩虹珯锛岃涔堣繛鎺ュ缓绔嬪熀绔欑殑鐐广€傞棶鏈€灏忎唬浠锋槸澶氬皯锛屽悓鏃惰緭鍑哄缓绔嬪熀绔欑殑鐐瑰拰绾胯矾銆�

Solution

杩欎釜涓囧勾鑰侀鍒板簳琚嚭杩囧灏戦亶浜嗗晩
缁欏畾 \(n\) 鏉$嚎娈碉紝瑕佹眰鍘绘帀鏈€灏戠殑绾挎锛屼娇寰椾换鎰忎竴涓暣鏁扮偣琚鐩栫殑娆℃暟閮戒笉瓒呰繃 \(k\)

Solution

鍏堢鏁e寲锛岃€冭檻璐績锛屾寜宸︾鐐规帓搴忥紝渚濇鎵弿锛屾瘡閬囧埌涓€涓尯闂村氨鍔犲叆鍫嗭紝鍫嗘寜鍙崇鐐瑰ぇ椤讹紝濡傛灉褰撳墠浣嶇疆閲嶆暟 \(>k\)锛屽氨浠庡爢涓彇鍑哄彸绔偣鏈€澶х殑鍖洪棿鍒犻櫎鍗冲彲

Description

鍏徃鏈� $ n $ 鍚嶅憳宸ュ拰 $ k $ 涓洟闃燂紝姣忎釜鍛樺伐浠呭睘浜� $ 1 $ 涓洟闃燂紝姣忎釜鍥㈤槦鑷冲皯鏈� $ 1 $ 鍚嶅憳宸ャ€傚洟闃熺紪鍙蜂粠 $ 1 $ 鍒� $ k $銆�
缁欏嚭 $ n $ 涓暟瀛楋細$ t_1,t_2,\dots,t_n \(锛�\) t_i $ 琛ㄧず绗� $ i $ 涓憳宸ュ睘浜庣 $ t_i $ 涓洟闃熴€�
璇ュ叕鍙搁泧浣d簡涓€杈嗙彮杞︼紝杩欒締鐝溅灏嗕細寰€杩斿娆℃壙杞藉憳宸ュ幓鍙傚姞瀹翠細锛屾瘡涓€娆″彲浠ユ壙杞� $ 1 $ 涓洟闃熸垨鑰� $ 2 $ 涓洟闃燂紝涓旀瘡涓€涓洟闃熶笉鑳藉垎绂伙紝蹇呴』鍦ㄥ悓涓€娆¤溅涓娿€�
杩欒締杞﹀彲浠ユ壙杞� $ s $ 涓憳宸ワ紝$ s $ 鍙互涓轰换鎰忓€笺€�
鍋囪閫氳繃 $ r $ 娆¤繍杈擄紝鎵€鏈夌殑鍛樺伐閮藉埌杈惧浼氱洰鐨勫湴浜嗭紝璇ュ叕鍙搁渶瑕佹敮浠� $ sr $ 鍏�(鍙湁 $ 1 $ 杈嗙彮杞�)銆傜幇鍦ㄨ浣犺绠� $ rs $ 鐨勬渶灏忓€笺€�

$ 1\le n \le 5\times 10^5,1 \le k \le 8000 $

Solution

棰樼洰鍙姹� \(O(k^2)\) 鍋氭硶锛屼簬鏄垜浠灇涓� \(s\)锛岀劧鍚庢毚鍔涜椽蹇冩楠屽嵆鍙�
娉ㄦ剰鏋氫妇鐨� \(s\) 鐨勫彇鍊硷紝鍋囪 \(a\) 鏈夊簭锛岄偅涔� \(s \in \{ a_1+a_k,a_2+a_{k-1},\dots \}\)
鏈変笁涓簭鍒� \(a.b.c\)锛屾瘡娆℃搷浣滃彲浠ユ妸涓€涓簭鍒椾腑鐨勪竴涓暟绉诲姩鍒板彟涓€涓簭鍒椾腑锛岄棶鏈€灏戞搷浣滃嚑娆″悗锛屽彲浠ヤ娇寰� \(a\) 搴忓垪閲岀殑鎵€鏈夋暟灏忎簬 \(b\) 閲岄潰鐨勬墍鏈夋暟锛�\(b\) 閲岄潰鐨勫皬浜� \(c\) 閲岄潰鐨勩€�

Solution

浠庣粨鏋滃€掕繃鏉ヨ€冭檻锛屽亣璁句笁涓簭鍒楀悇鑷湁搴忥紝閭d箞鍙互淇濇寔涓嶅姩鐨勯儴鍒嗗氨鏄笁涓簭鍒楄繛鍦ㄤ竴璧风殑鏈€闀夸笂鍗囧瓙搴忓垪
璁捐涓€涓彧鏈変竴琛岀殑鎵撳瓧鏈猴紝杩欎竴琛岀殑闀垮害鏄棤闄愬ぇ锛屼竴寮€濮嬪彲浠ヨ涓烘瘡涓瓧绗﹂兘鏄┖銆傛偍鐨勬墦瀛楁満鏈変竴涓厜鏍囧彧鎸囧悜涓€涓瓧绗︼紝涓€寮€濮嬫寚鍚戞渶宸︿晶鐨勫瓧绗︺€備娇鐢ㄨ€呮湁涓夌鎿嶄綔锛歀 灏嗗厜鏍囧悜宸︾Щ涓€鏍硷紙褰撳厜鏍囧凡缁忓湪鏈€宸︿晶鏃讹紝蹇界暐杩欐鎿嶄綔锛夛紝R 灏嗗厜鏍囧悜鍙崇Щ涓€鏍硷紝涓€涓皬鍐欏瓧绗︽垨鑰�'(',')' 灏嗗綋鍓嶅瓧绗︽浛鎹负缁欏畾瀛楃銆傛偍闇€瑕佸湪姣忔鎿嶄綔鍚庯紝鍒ゆ柇杩欎竴琛屾槸鍚︽槸鍚堟硶鎷彿搴忓垪锛屼笉鏄緭鍑� -1锛屽惁鍒欒緭鍑烘渶澶氬祵濂楁暟銆�

Solution

棰勫厛鏋勯€犲嚭瀹屾暣闀垮害鐨勫簭鍒楋紝鎵€鏈変綅缃缃负绌虹姸鎬侊紝鎸夋椂闂撮『搴忓鐞嗘墍鏈夋搷浣�
灏� ( 瑙嗕负 \(1\)锛宍)` 瑙嗕负 \(-1\)锛屽叾瀹冭涓� \(0\)锛岀嚎娈垫爲缁存姢鍓嶇紑鍜屾渶澶у€笺€佹渶灏忓€间笌鍖洪棿鍜�

Description

缁欎綘 \(a\) 涓� \(0\)锛�\(b\) 涓� \(1\)锛�\(c\) 涓� \(2\)锛�\(d\) 涓� \(3\)锛岃姹傛帓鎴愪竴涓暱搴︿负 \(a+b+c+d\) 鐨勬暟鍒楋紝鐩搁偦涓や釜宸殑缁濆鍊间负 \(1\)锛屽苟杈撳嚭浠讳竴鏂规銆�

Solution

鍒嗗埆鏋勯€犻浣嶇疆涓� \(0,1,2,3\) 鐨勬儏鍐碉紝瀵逛簬姣忎釜浣嶇疆锛屽敖閲忓厛璐浣� \(-1\)锛屼笉婊¤冻鐨勮瘽璐浣� \(+1\)
鑳界粫寮€鍚勭鐗瑰垽鍋氳繖閬撻锛岃繕鏄尯浼橀泤鐨� 馃槂
鐜版湁 \(n\) 涓汉锛屾湁 \(m\) 瀵规瑺鍊哄叧绯伙細\(d(a,b)\) 琛ㄧず \(a\) 娆� \(b\ d(a,b)\) 鍏冦€傜幇瑕佺粰鍑轰竴涓渶缁堢殑娆犲€哄叧绯伙紝浣垮緱 \(\sum d\)鏈€灏忋€�

Solution

鍙渶瑕佽褰曟瘡涓偣杈撳嚭鍜岃緭鍏ョ殑鎬婚噺锛屾璐熷悇鎴愪竴閮紝鐒跺悗姝i儴鍚戠潃璐熼儴鍋氱被浼煎尮閰嶇殑鎿嶄綔鍗冲彲

Description

浣犵殑鎵嬫満涓婃湁 $ n $ 锛�$ 1 $ $\le n $ $\le 2 \times 10^6 $锛変釜杞欢锛屽叾涓 $ i $ 涓蒋浠剁殑绫诲瀷涓� $ c_i $锛屼綘闇€瑕佸湪鍙互鑷敱閫夋嫨姣忛〉澶у皬 \(s\) 鐨勬儏鍐典笅锛屾眰鍑烘渶灏忕殑椤电爜鏁伴噺 $ k $锛屼娇寰楁瘡涓€椤甸兘瑁呮弧鎴栧彧绌轰竴涓紝骞朵笖姣忎竴椤电殑鎵€鏈夎蒋浠剁被鍨嬮兘鐩哥瓑锛屾眰鏈€灏忕殑椤电爜 $ k $銆�

Solution

棣栧厛锛屽浜庣‘瀹氱殑 \(s\) 鍜屾煇绉嶇殑涓暟 \(c\)锛屽鏋滄弧瓒� \(c \in [x(s-1),xs]\)锛屽垯鍙互鐢� \(x\) 鍧楀睆骞曡涓嬪畠
瀵逛簬

\[x(s-1) \le c \le xs \]

鍙樺舰涓�

\[l=\frac c s \le x \le \frac c {s-1}=r \]

濡傛灉鍏朵腑鐨勭‘鍖呭惈涓€涓暣鏁帮紝鍗� \(x'=\lceil l \rceil \le r\)锛屽彇 \(x=x'\) 鍗冲彲
浜庢槸鍙互绠€鍖栦负 \(x=[\frac {c-1} s]+1\)锛屽啀鍒╃敤涓婃柟鏉′欢杩涜鍚堟硶鎬ф鏌�
浜庢槸鎴戜滑鑰冭檻鏆村姏鏋氫妇姣忛〉澶у皬锛屼絾鏄瘡椤靛ぇ灏忔槸涓嶈兘瓒呰繃绉嶇被鏁版渶灏忓€� \(+1\) 鐨�
璁剧绫绘暟涓� \(p\)锛屽垯澶嶆潅搴︿负 \(O(p \min(c))=O(p \frac n p)=O(n)\)
缁欏嚭涓€涓笉瑙勫垯鐨勭綉鏍笺€傚叡 \(n \leq 300000\) 鍒楋紝姣忓垪鏈� \(a_i\) 涓牸瀛愩€傜幇鍦ㄨ灏� \(1 \times 2\) 鐨勯鐗屼笉閲嶅彔鐨勮鐩栧湪缃戞牸涓婏紝姹傛渶澶氳兘鏀剧殑楠ㄧ墝鏁伴噺銆�
CF 题解汇总

Solution

鐢变簬鍙湁涓€涓仈閫氬潡锛岀瓟妗堝氨鏄粦鐧芥煋鑹插悗锛岄粦鑹茬偣鏁板拰鐧借壊鐐规暟鐨勮緝灏忓€�
璧峰垵浣犳湁 \(k\) 涓叺锛屼綘闇€瑕佹寜椤哄簭鏀诲崰 \(n\) 搴у煄鍫°€備负浜嗗崰棰嗙 \(i\) 搴у煄鍫★紝浣犻渶瑕佽嚦灏� \(a_i\) 涓+鍏碉紝澹叺涓嶄細姝伙紝鏀诲崰鎴愬姛鍚庝綘鍙互鑾峰緱 \(b_i\) 涓+鍏点€傛敾鍗犲畬涓€搴у煄鍫′綘鍙互娲惧嚭鑷冲皯涓€涓叺椹诲畧鏉ヨ幏寰楄繖搴у煄鍫$殑鍒嗘暟 \(c_i\)锛屼綘鍙互鍦ㄤ綘鏀诲崰瀹屽煄鍫� \(i\) 鍚庣珛鍗虫淳鍏典笅杞︼紝鎴栬€呭湪鏈夊悜鍥句笂閫氬悜杩欎釜鐐圭殑鐐瑰娲惧叺涓嬭溅銆備綘闇€瑕佸湪淇濊瘉鑳芥敾鍗犳墍鏈夊煄鍫$殑鍓嶆彁涓嬶紝鏈€澶у寲浣犵殑寰楀垎銆�\(n \leq 5000, m\leq 3\times 10^5\)锛岄槦浼嶄腑鐨勪汉鏁版棤璁哄浣曚笉浼氳秴杩� \(5000\)

Solution

瀵逛簬鍩庡牎 \(i\)锛屽鏋滆瀵瑰畠娲惧叺锛岄偅涔堜竴瀹氫細鍦ㄦ渶鍚庝竴涓兘鍚戜粬娲惧叺鐨勫湴鏂规淳鍏�
浜庢槸鎴戜滑鍙渶瑕佽€冨療鍏朵腑鐨� \(n\) 鏉¤竟鍗冲彲
璁� \(f[i][j]\) 琛ㄧず鍦ㄧ \(i\) 涓煄鍫″锛岃繕鍓� \(j\) 涓+鍏电殑鏈€澶ф敹鐩�
绫讳技 \(01\) 鑳屽寘鐨勬毚鍔涜浆绉�
瀹氫箟 \(f(x)=[x\bmod 2=1](x-1) + [x\bmod 2=0] (x/2)\)
瀵逛簬浠绘剰 \(x\)锛屼笉鏂护 \(x=f(x)\) 杩涜杩唬锛屾渶缁堜細寰楀埌 \(x=1\)锛屽畾涔� \(path_x\) 涓� \(x\) 鍦ㄨ繖涓凯浠h繃绋嬩腑鍑虹幇杩囩殑鎵€鏈夊€肩殑闆嗗悎
缁欏畾 \(n,k\)锛屾眰鏈€澶х殑 \(y\)锛屼娇寰楁湁鑷冲皯 \(k\) 涓� \(i \in [1,n]\) 浣垮緱 \(y \in path_i\)

Solution

闅惧害锛歀5

浠ヤ笅瀵逛簬鏁扮殑璁ㄨ閮芥槸鍦ㄤ簩杩涘埗鎰忎箟涓嬭繘琛岀殑
璁� \(f(i)\) 琛ㄧず \(i\) 鍑虹幇鍦� \([1,n]\) 澶氬皯涓暟鐨� \(path\) 涓紝璁� \(g(i)\) 琛ㄧず \(i\) 鏄� \([1,n]\) 涓灏戜釜鏁颁簩杩涘埗鎰忎箟涓嬬殑鍓嶇紑

  • 瀵逛簬濂囨暟 \(i\)锛�\(f(i)=g(i)\)
  • 瀵逛簬鍋舵暟 \(i\)锛�\(f(i)=g(i)+g(i+1)\)

鐢变簬 \(f\) 搴忓垪鐨勫鏁伴」鍜屽伓鏁伴」鍒嗗埆鍗曡皟锛屼簬鏄垜浠垎鍒簩鍒嗭紝鎵惧埌鏈€鍚庝竴涓� \(f(i) \geq k\) 鐨勫鏁伴」鍜屽伓鏁伴」鍗冲彲
鑰冭檻濡備綍璁$畻 \(g(i)\)锛岄鍏堟垜浠壘鍒颁竴涓渶灏忕殑闀垮害 \(len\)锛屼娇寰� \(i2^{len+1} >n\)锛岀劧鍚庝簩鍒嗘壘鍒� \(mid\) 浣垮緱 \(i 2^{len}+mid \leq n\)锛屾樉鐒跺彲浠ヤ簩鍒嗗緱鍒帮紝閭d箞 \(g(i)=mid+2^{len}\)
鎬讳綋澶嶆潅搴� \(O(\log^2 n)\)
缁欏嚭涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屽綋浣犲湪绗� \(i\) 鍙蜂綅缃槸锛屼綘鍙互涓€姝ヨ皟鍒� \(i-a_i\) 鍜� \(i+a_i\)锛屽墠鎻愭槸 \(1 \le\) 璺冲埌鐨勪綅缃� \(\le n\)锛屽浜庢瘡涓€涓綅缃� \(i\)锛屼綘鎯崇煡閬撴渶灏戦渶瑕佸灏戞鍙互鍒拌揪涓€涓綅缃� \(j\)锛屼娇寰� \(a_j\) 涓� \(a_i\) 鐨勫鍋舵€т笉鍚�

Solution

绗� \(i-a_i\) 涓偣锛岀 \(i+a_i\) 涓偣鍚戠 \(i\) 涓偣杩炶竟锛岃垂鐢ㄤ负 \(1\)锛屾墍鏈夊鏁扮偣鍚� \(n+1\) 杩炶竟锛岃垂鐢ㄤ负 \(0\)锛屾墍鏈夊伓鏁扮偣鍚� \(n+2\) 杩炶竟锛岃垂鐢ㄤ负 \(0\)
鍒嗗埆浠� \(n+1\)锛�\(n+2\) 涓鸿捣鐐硅窇鏈€鐭矾鍗冲彲
缁欏畾 \(n\) 涓偣锛�\(m\) 鏉¤竟锛屼互鍙婁袱涓偣 \(s,t\)锛屾眰鐐瑰 \((a,b)\) 鐨勪釜鏁帮紝婊¤冻浠绘剰涓€鏉� \(a\to b\) 璺緞閮界粡杩� \(s,t\)

Solution

浠� \(s\) 寮€濮� DFS锛岃兘涓嶇粡杩� \(t\) 鍒拌揪鐨勭偣鐨勯泦鍚堣涓� \(S\)
浠� \(t\) 寮€濮� DFS锛岃兘涓嶇粡杩� \(s\) 鍒拌揪鐨勭偣鐨勯泦鍚堣涓� \(T\)
绛旀鍗充负 \(|S/T||T/S|\)

[CF1278D] Segment Tree - 鎵弿绾�,骞舵煡闆�,set

Description

缁欏畾 n 鏉$嚎娈碉紝姣忎釜绾挎鍖呮嫭璧峰鍧愭爣锛屽鏋滀袱鏉$嚎娈典弗鏍肩浉浜わ紙闈炵浉杩烇級锛屽垯涓ゆ潯绾挎闂存湁涓€鏉¤竟锛岄棶鑳藉惁鏋勬垚涓€棰楁爲銆�

Solution

寰堝鏄撴兂鍒版寜宸︾鐐规帓搴忥紝鍥犱负瀵逛簬绾挎 a,b锛屽鏋� a.l < b.l锛屽垯 a,b 鐩镐氦褰撲笖浠呭綋 b.l < a.r < b.r
鍒ゆ柇鏍戠殑闂锛屽緢瀹规槗鎯冲埌骞舵煡闆�
鎴戜滑灏嗘墍鏈夌嚎娈垫寜宸︾鐐规帓搴忓悗鎵弿涓€閬嶏紝缁存姢涓€涓� set锛屾瘡娆℃壂鎻忓埌绾挎 i 鏃讹紝鍏堟鏌ユ弧瓒� r 鍦� i.l 鍜� i.r 涔嬮棿鐨勭嚎娈垫槸鍚﹀瓨鍦紝濡傛灉鑳芥壘鍒帮紝灏卞湪骞舵煡闆嗕腑鍚堝苟锛岀劧鍚庡啀灏� i 鍔犲叆 set 涓紝鍥犳杩欎釜 set 鏄寜绾挎鐨� r 鎺掑簭鐨�
鎴愭爲鐨勫厖瑕佹潯浠舵槸锛氬湪鍚堝苟杩囩▼涓紝娌℃湁鍑虹幇閲嶅鍚堝苟鐨勬儏鍐碉紝骞朵笖鏁翠釜娴佺▼鎵ц瀹屽悗锛屾墍鏈夌殑鍏冪礌閮藉湪鍚屼竴涓泦鍚堜腑
缁欏畾涓€妫靛甫鏉冩爲锛屼竴鍏辨湁 \(2k\) 涓偣锛屾眰浠绘剰閫夋嫨 \(k\) 瀵逛笉閲嶅鐐癸紝姣忓鐐硅窛绂诲拰鐨勬渶灏忓€间笌鏈€澶у€�

Solution

闅惧害锛歀4
鑰冭檻鏈€灏忥細濡傛灉涓€鏉¤竟鐨勬煇涓€渚ф湁濂囨暟涓偣锛岄偅涔堝緢鏄剧劧杩欐潯杈逛竴瀹氫細琚€夋嫨銆傚弽涔嬶紝杩欐潯杈逛竴瀹氫笉浼氳閫夋嫨锛屽彲浠庡綊绾宠搴﹁€冭檻銆傚洜姝わ紝杩欎釜杈归泦鏄畬澶囩殑鍖归厤杈归泦鍚堬紝姣忎釜杈逛細琚绠椾笖鍙細琚绠椾竴娆°€備簬鏄紝婊¤冻杩欎釜鏉′欢鐨勮竟鐨勬€绘潈鍊煎拰灏辨槸鏈€灏忕瓟妗堛€�
鑰冭檻鏈€澶э細寤剁画涓婃柟鐨勬€濊矾锛屾垜浠彂鐜帮紝姣忔潯杈硅鍒╃敤鐨勬渶澶氭鏁版槸瀹冩墍杩炴帴鐨勪袱閮ㄥ垎鐨勭偣鏁扮殑鏈€灏忓€硷紝杩欎釜鏈€澶ф鏁板浜庢墍鏈夌偣鏉ヨ鍙互鍚屾椂杈惧埌銆備粠鍙︿竴绉嶈搴﹀叆鎵嬶紝鎴戜滑甯屾湜姣忎釜鐐瑰尮閰嶅埌涓€涓緢杩滅殑鐐癸紝浠ラ噸蹇冧负鏍癸紝閭d箞姣忎釜鐐瑰尮閰嶇殑鐐逛竴瀹氫笉鍦ㄥ師鏉ョ殑閲嶅績瀛愭爲鍐咃紝閭d箞灏卞緢鑷劧鍦板皢闂杞寲涓轰簡姹傞噸蹇冧负鏍规椂鎵€鏈夌偣鐨勬繁搴﹀拰銆�

Description

n涓汉浣忓湪涓€涓彲浠ョ敤鏁拌酱琛ㄧず鐨勫煄甯傞噷锛岀i涓汉浣忓湪涓€涓暣鏁板潗鏍噚i鐨勬埧瀛愰噷銆傜i涓汉鍙互鍜屽潗鏍噚i - 1,xi+1涓€璧锋潵瀹堕噷搴嗙鏂板勾锛屾垨鑰呭憜鍦▁i锛屾瘡涓汉鍙兘绉诲姩涓€娆°€傚浜庢埧瀛愬湪1鎴杗鐨勪汉锛屼粬浠彲浠ユ潵鍒板潗鏍�0鎴杗+1鐨勬埧瀛愩€�

渚嬪锛屽垵濮嬩綅缃负x=[1,2,4,4]銆傛渶鍚庣殑浣嶇疆鍙互鏄痆1,3,3,4]锛孾0,2,3,3]锛孾2,2,5,5]锛孾2,1,3,5]绛夌瓑銆傝鍗犵敤鐨勬埧灞嬫€绘暟绛変簬鍦ㄦ渶缁堟埧灞嬩腑涓嶅悓浣嶇疆鐨勬€绘暟銆�

鎵€鏈変汉鍙互闅忔剰閫夋嫨涓夌鎿嶄綔涔嬩竴锛岀劧鍚庤绠楁湁浜虹殑鎴垮眿鎬绘暟銆傛湁浜虹殑鎴垮眿鍙兘杈惧埌鐨勬渶灏忔暟閲忓拰鏈€澶ф暟閲忓悇鏄灏�?

Solution

鑰冭檻鏈€灏忓€硷紝鐩稿綋浜庣敤澶氬皯涓暱搴︿负 \(3\) 鐨勬鍙互妗嗕綇鎵€鏈変汉
鑰冭檻鏈€澶у€硷紝鎴戜滑鎵竴閬嶆墍鏈夌殑鎴垮瓙锛屽浜庝竴涓潪绌烘埧瀛愶紝濡傛灉鍓嶄竴涓埧瀛愪负绌猴紝灏卞線鍓嶉€佷竴涓汉锛涘鏋滆繖鏃惰繕鏈夊浣欑殑浜猴紝灏卞線鍚庨潰鐨勬埧瀛愰噷閫佷竴涓汉

Description

缁欏畾涓€妫垫爲锛岀紪鍙蜂负 i 鐨勭偣鏉冨€间负 2^i锛屽畾涔変竴鏉¤竟鐨勬潈鍊间负杩欐潯杈归摼鎺ョ殑涓や釜鐐逛腑娣卞害杈冨ぇ鐨勭偣鐨勫瓙鏍戠殑鐐规潈鍜屻€傜粰鍑烘€荤偣鏁� n锛屾寜鐓ц竟鏉冧粠澶у埌灏忕粰鍑烘瘡鏉¤竟鐨勬繁搴﹁緝娴呯殑鐐圭殑缂栧彿锛岃姹傛瀯閫犲師鏍戙€�

Solution

杈规潈鍗冲瓙鏍戝拰锛岄偅涔堝悓涓€鏉$洿閾句笂鐨勮竟鏉冨崟璋冿紝涓旀牴澶勬渶澶э紝鍙跺瓙澶勬渶灏忋€傚洜姝ゆ帓鍦ㄦ暣涓簭鍒楁湯灏剧殑涓€瀹氭槸鍙跺瓙缁撶偣鐩稿叧鐨勮竟銆備竴涓粨鐐规椂鍙跺瓙缁撶偣锛屽綋涓斾粎褰撳畠涓嶆浘鍦ㄥ師搴忓垪涓嚭鐜般€�
鑰冭檻涓€涓瀯閫犺繃绋嬶紝姣忎竴姝ユ垜浠細瀹氬嚭涓€鏉¤竟锛屾垜浠竴瀹氬笇鏈涙垜浠瀹氬嚭鐨勮繖鏉¤竟杈规潈鏈€灏忥紝鍥犳瀵逛簬鎵€鏈夊彾瀛愮粨鐐癸紙鎸傜潃浠栦滑鐨勫瓙鏍戯級锛岀淮鎶ゅ皬椤跺爢锛屾潈鍊间负瀛愭爲鐐规潈鍜岋紝浣嗘槸杩欐牱澶毦缁存姢浜嗭紝鎵€浠ョ偣鏉冨拰鐩存帴鐢ㄧ偣鑷韩鐨勭紪鍙锋浛浠o紙棰樼洰鏉′欢鐨勪娇鐢級銆�
鎴戜滑鎸夊師搴忓垪鍊掑簭閬嶅巻鎵€鏈夌殑鐐癸紝瀵逛簬姣忎釜鐐癸紝寮瑰嚭鍫嗛《涓庡叾杩炶竟锛堢浉褰撲簬涓€涓潪鍙跺瓙鍜屽彾瀛愮殑閰嶅杩囩▼锛夛紝閰嶅鍚庣殑鐐瑰叾瀹炲氨琚€滃垹闄も€濅簡锛岃繖涓椂鍊欏鏋滀骇鐢熶簡鏂扮殑鍙跺瓙锛岄偅涔堜篃闇€瑕佸皢鍏跺姞鍏ュ爢涓€�

Description

缁欏畾 \(n\) 涓尯闂村 \(([s_a,e_a],[s_b,e_b])\)锛屾眰鏄惁瀛樺湪涓€涓瓙闆嗭紝浣垮緱瀛愰泦涓墍鏈夊尯闂村鐨� \(first\) 鍖洪棿瀵逛腑浜掍笉鐩镐氦鍜� \(second\) 鍖洪棿瀵逛腑浜掍笉鐩镐氦浜岃€呮伆濂芥湁涓€涓垚绔嬨€�

Solution

鑰冭檻鍒板鏋滃瓨鍦ㄤ竴涓弧瓒虫潯浠剁殑瀛愰泦锛岄偅涔堜竴瀹氬瓨鍦ㄤ竴涓弧瓒虫潯浠剁殑浜屽厓瀛愰泦锛屽洜姝ゆ壘瀛愰泦杞寲涓烘壘涓や釜鍖洪棿瀵癸紝婊¤冻鍓嶉」鐩镐氦鍜屽悗椤圭浉浜や笉鍚屾椂鎴愮珛銆�
鑰冭檻鍓嶉」鐩镐氦鑰屽悗椤逛笉鐩镐氦鐨勬儏鍐点€傚鍓嶉」鍖洪棿鐢ㄦ壂鎻忕嚎鎵弿锛岄偅涔堝綋鍓嶇淮鎶ょ殑灏辨槸鍓嶉」鐩镐氦鐨勬墍鏈夊尯闂达紝濡傛灉杩欎簺鍖洪棿鐨勬渶澶у乏绔偣澶т簬鏈€灏忓彸绔偣锛岄偅涔堟樉鐒舵垜浠壘鍒颁簡涓€涓繖鏍风殑鍖洪棿銆�

Description

鏈変竴涓敱 $ 1 $ - $ n $ 鏋勬垚鐨勬帓鍒楋紝鍏朵腑閮ㄥ垎琚垹闄わ紙鍒犻櫎鐨勫厓绱犵敱 $ 0 $ 浠f浛锛夛紝璇风敤琚垹闄ょ殑鍏冪礌琛ュ叏杩欎釜鏁板垪锛屼娇杩欎釜鏁板垪涓浉閭诲厓绱犲鍋舵€т笉鍚岀殑瀵规暟鏈€灏戙€�\(n \le 100\)

Solution

璁� \(f[i][j][0/1]\) 琛ㄧず鐢ㄤ簡 \(i\) 涓鏁帮紝\(j\) 涓伓鏁帮紝涓婁竴浣嶆槸濂囨暟鎴栧伓鏁版椂鐨勬渶灏忓€�
缁欏畾涓€妫垫湁鏍规爲锛屾瘡涓粨鐐规湁鏉冨€� \(a_i\)锛岃 \(c_i\) 涓� \(i\) 鐨勫瓙鏍戜腑鏉冨€� \(<a_i\) 鐨勭偣鐨勪釜鏁般€傜粰瀹� \(c_i\)锛屾瀯閫� \(a_i\)銆�\(n\leq2000\)

Solution

鏌愪釜瀛愭爲鍐呯殑鍚堟硶鎬у彧鍜岃繖涓瓙鏍戝唴鏉冨€肩殑鐩稿澶у皬鏈夊叧锛屼簬鏄竴瀹氬瓨鍦ㄤ竴绉嶅悎娉曟柟妗堬紝浣垮緱鎵€鏈夌偣鐨勬潈鍊间簰涓嶇浉鍚岋紝涓嶅Θ璁句负涓€涓� \(n\) 鐨勫叏鎺掑垪
浜庢槸鎴戜滑鑰冭檻缁存姢涓€涓泦鍚� \(S\)锛屽垵鎬佷笅 \(S\) 涓寘鍚墍鏈夌偣锛岃 \(d_i\) 琛ㄧず \(i\) 鐨勫瓙鏍戜腑鏉冨€� \(<a_i\) 鐨勪粛鐒跺湪 \(S\) 涓殑鐐圭殑涓暟锛屾樉鐒跺垵鎬佷笅 \(d_i=c_i\)
鎴戜滑姣忔浠� \(S\) 涓彇鍑烘墍鏈� \(d_i=0\) 鐨勭偣锛岀粰杩欎簺鐐硅祴鏉�
杩欎簺鐐逛箣闂村瓨鍦ㄧ鍏堝叧绯伙紝閭d箞鏄剧劧娣卞害娴呯殑鐐瑰簲璇ヨ祴灏忔潈
浜庢槸鎴戜滑姣忔鍙栧嚭鎵€鏈� \(d_i=0\) 鐨勭偣鎶婂畠浠墧杩涗竴涓爢涓紝姣忔鎶婂爢椤跺彇鍑烘潵骞朵笖缁欏畠璧嬫潈锛屽悓鏃剁粰瀹冩墍鏈夌鍏堢殑 \(d_i-1\)锛屽鏋滄煇涓鍏堢殑 \(d_i=0\) 灏辨妸杩欎釜绁栧厛鎵旇繘鍫嗕腑
濡傛灉鍫嗙┖浜嗭紝浣嗘槸杩樻湁鑺傜偣娌℃湁璧嬫潈锛屽垯杈撳嚭 NO
缁欏畾涓€涓暟 \(n\) 鍜屼竴涓暟 \(m\)锛岃鏋勫缓涓や釜鏁扮粍 \(a\) 鍜� \(b\) 婊¤冻鏉′欢

  • 鏁扮粍涓墍鏈夊厓绱犵殑鍙栧€煎湪 \([1, n]\) 涔嬮棿
  • \(a\) 鍜� \(b\) 鏁扮粍闀垮害鏄� \(m\)
  • \(a\) 鏁扮粍鏄崟璋冧笉闄嶇殑锛�\(b\) 鏁扮粍鏄崟璋冧笉澧�
  • 浠绘剰鐨勪綅缃� \(i\)锛屾湁 \(a_i \leq b_i\)

Solution

棣栧厛寰堝鏄撴兂鍒板皢 \(b\) 缈昏浆鍚庢帴鍦� \(a\) 鐨勫悗闈紝閭d箞闂灏辫浆鍖栦负鐢� \([1,n]\) 濉竴涓暱搴︿负 \(2m\) 鐨勫簭鍒楋紝浣垮叾鍗曡皟涓嶉檷鐨勬柟妗堟暟

DP 瑙f硶

璁� \(f[i][j]\) 琛ㄧず濉竴涓� \(i\) 闀垮害鐨勫簭鍒楋紝鏈€鍚庝竴浣嶄负 \(j\) 鐨勬柟妗堟暟锛屼簬鏄�

\[f[i][j]=f[i-1][j]+f[i-1][j-1] \]

鏆村姏杞Щ鍗冲彲锛屾椂闂村鏉傚害 \(O(nm)\)

缁勫悎

绛変环浜庢眰 \(x_1+x_2+...+x_n=2m\) 鐨勮В鐨勬柟妗堟暟锛屼簬鏄€冭檻闅旀澘娉曪紝绛旀涓� \(C_{2m+n-1}^{n-1}\)
鏃堕棿澶嶆潅搴� \(O(n)\)
缁欏畾涓€涓� \(n\leq 3\times 10^5\) 琛� \(m \leq 8\) 鍒楃殑鏁板瓧鐭╅樀 \(a\)锛屾壘鍑轰袱琛� \(x,y\)锛屼娇寰� \(\min_{j=1}^m \max(a_{x,j},a_{y,j})\) 鏈€澶�

Solution

浜屽垎绛旀锛岃€冭檻妫€楠� \(mid\)锛屽皢姣忎竴琛屽ぇ浜庣瓑浜� \(mid\) 鐨勬暟璁句负 \(1\)锛屽弽涔嬭涓� \(0\)锛屽帇浣嶅悗鎵旇繘妗讹紝寰€ \(1\) 鏂瑰悜鍋氫竴涓嬮珮缁村墠缂€鍜岋紝鐒跺悗鎵竴閬嶆《鍗冲彲
瀹氫箟涓や釜闀垮害鐩稿悓鐨勪覆 s,t 涓轰竴瀵光€滅濂囦覆鈥濆綋涓斾粎褰� s 閲嶆柊鎺掑垪鍚庡彲浠ュ彉鎴� t銆傚浜庝竴瀵光€滅濂囦覆鈥� s,t 锛屽畾涔変粬浠负涓€瀵光€滆秴绾х濂囦覆鈥濆綋涓斾粎褰撹兘瀵瑰畠浠垝鍒嗘垚 k锛坘鈮�2锛夋锛堣涓� s1,s2...sk,t1,t2...tk锛夛紝浣垮緱鎵€鏈夌殑 1鈮鈮 閮芥弧瓒� si,ti 涓轰竴瀵光€滅濂囦覆鈥濄€傜幇鍦ㄧ粰浣犱竴涓覆 s锛屾瘡娆¤闂竴涓瓙涓诧紝闂槸鍚﹁嚦灏戝瓨鍦ㄤ竴涓覆浣垮緱璇ヤ覆涓庡瓙涓叉槸涓€瀵光€滅濂囦覆鈥濅絾涓嶆槸鈥滆秴绾х濂囦覆鈥濄€�

Solution

绁炰粰鐨勬瀯閫�
濡傛灉杩欎釜涓查暱搴︿负 \(1\)锛屾樉鐒� Yes
濡傛灉澶村熬瀛楃涓嶅悓锛屾垜浠彲浠ュ皢鎵€鏈夊拰灏惧瓧绗︾浉鍚岀殑绉诲埌寮€澶达紝澶村瓧绗︾浉鍚岀殑绉诲埌缁撳熬锛屾樉鐒� Yes
濡傛灉瀛楃绉嶇被鏁颁笉灏忎簬 \(3\)锛屽苟涓斿ご灏惧瓧绗︾浉鍚岋紝鎴戜滑鍙互灏嗛櫎澶村熬瀛楃澶栫殑浠绘剰涓ょ瀛楃鍒嗗埆鍏ㄩ儴绉诲埌澶村熬锛屾樉鐒� Yes
鍏跺畠鎯呭喌 No
缁欏畾涓€涓� \(n\times m\) 鐭╅樀锛屽叾涓厓绱犱负 \(1 \to nm\) 鐨勪竴涓帓鍒楋紝姣忔鎿嶄綔鍙互浠婚€変竴涓厓绱犲皢瀹冨彉涓轰换鎰忔暣鏁帮紝鎴栬€呴€夋嫨涓€鍒楀皢鍏跺惊鐜Щ浣嶏紙鍚戜笂锛変竴鏍硷紝姹備娇寰楃煩闃靛彉涓烘爣鍑嗗瀷鐨勬渶灏戞搷浣滄鏁�

Solution

璁� \(a[i][j]\) 涓� \(i\) 琛� \(j\) 鍒楃殑鏁帮紝\(c[i][j]\) 琛ㄧず绗� \(j\) 鍒楀惊鐜Щ浣� \(i\) 娆″悗鏈夊灏戜釜鏁板凡缁忓尮閰嶏紝鍒欑瓟妗堜负

\[\sum_{j=1}^m (\min_{i=0}^{n-1} (i+n-c[i][j])) \]

鑰冭檻濡備綍璁$畻 \(c\)锛岀敱浜庢瘡涓厓绱犲彧浼氬涓€涓� \(c[?][?]\) 浜х敓璐$尞锛屾墍浠ユ垜浠垽鏂瘡涓厓绱犳槸鍚﹀彲鑳借濉湪褰撳垪锛屽鏋滃彲鑳斤紝璁$畻搴旇琚~鍦ㄧ殑浣嶇疆锛岀畻鍑哄潗鏍囧樊鍊硷紝鐒跺悗瀵瑰搴旂殑 \(c[?][?]\) 璁$畻璐$尞灏卞ソ浜�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬帓鍒楋紝浣犲彲浠ュ皢瀹冨垏鎴愪袱娈� \(A,B\)锛屽垎鍒綔涓轰袱涓泦鍚堬紝瀵逛簬绗� \(i\) 涓厓绱狅紝鍙互鑺辫垂 \(a[i]\) 鐨勪唬浠锋妸瀹冪Щ鍔ㄥ埌瀵归潰鐨勯泦鍚堜腑銆傛眰鑷冲皯鑺辫垂澶氬皯鐨勪唬浠凤紝鎵嶈兘浣垮緱涓€涓泦鍚堜腑鐨勪换鎰忓厓绱犳瘮鍙︿竴涓泦鍚堜腑鐨勪换鎰忓厓绱犲皬銆�

Solution

鏋氫妇鍒濇€佸垎鐣岀偣 \(pos\) 鍜屽垎鐣屽€� \(val\)锛岃姝ゆ椂鐨勭瓟妗堜负 \(f(pos,lim)\)锛屾毚鍔涜绠楃殑璇濆鏉傚害涓� \(O(n^2)\)銆�
鑰冭檻鍒� \(f(pos,lim)-f(pos-1,lim)=\sum_{lim < p_{pos}} a_{pos} - \sum_{lim \ge p_{pos}} a_{pos}\)锛屾垜浠敤绾挎鏍戞潵缁存姢瀵逛簬鏌愪釜纭畾鐨� \(pos\) 鐨勬墍鏈� \(f(pos,lim)\)锛屾瘡娆′慨鏀� \(pos\) 鏃讹紝鍙渶瑕佸皢 \(1 \le lim < p_{pos}\) 閮ㄥ垎 \(+a_{pos}\)锛屽皢 \(p_{pos} \le lim \le n\) 閮ㄥ垎 \(-a_{pos}\)銆傚尯闂翠慨鏀癸紝鍖洪棿璇㈤棶鏈€灏忓€笺€�
鐗瑰埆娉ㄦ剰锛宍lim鏄彲浠�=0` 鐨勩€�

Description

鏍戜笂姣忔潯杈规湁涓€涓潈鍊� \(x_i\) 鏈煡锛岀粰瀹� \(m\) 涓檺鍒舵瘡涓檺鍒舵弿杩颁簡璺緞 \(p,q\) 涓婄殑鏈€灏忓€硷紝鏋勯€犳潈鍊兼柟妗堟垨鑰呭垽瀹氭棤瑙c€�

Solution

璐績锛屽浜庢瘡涓檺鍒讹紝璺緞涓婃墍鏈夌偣鏆村姏鍙� max 鍗冲彲銆傛渶鍚庡啀鎵竴閬嶆鏌ユ槸鍚︽墍鏈夋潯浠堕兘琚弧瓒炽€�

Description

缁欏畾涓€涓敱 $ n $ 涓偣缁勬垚鐨�涓ユ牸锛堜笉瀛樺湪涓夌偣鍏辩嚎锛夊嚫澶氳竟褰€€�
浣犺灏嗚繖涓浘褰㈠钩绉� $ n $ 娆★紝姣忔灏嗕竴涓《鐐逛笌鍘熺偣 $ (0,0) $ 閲嶅悎銆�
璇峰垽鏂繖 $ n $ 涓钩绉诲悗鐨勫杈瑰舰闄や簡涓庡師鐐归噸鍚堢殑鐐逛箣澶栫殑鐐圭粍鎴愮殑澶氳竟褰㈡槸鍚︿笌鍘熷浘褰㈢浉浼笺€�
鍦ㄨ鍏ヤ腑锛屼繚璇佽緭鍏ョ殑鐐规寜閫嗘椂閽堥『搴忔帓鍒楋紝褰㈡垚涓ユ牸鍑稿杈瑰舰銆�
$ 3\le n\le 10^5 $

Solution

鏈€缁堢殑杩欎釜鍥惧舰灏辨槸 \(S\) 涓� \(-S\) 鐨勯椀鍙か鏂熀鍜�
缁撹锛氭柊鍥惧舰涓庡師鍥惧舰鐩镐技锛屽綋涓斾粎褰撳師鍥惧舰鏄腑蹇冨绉板浘褰�

Description

缁欏畾涓€涓簭鍒楋紝鍙互杩涜鏃犻檺娆℃搷浣滐紝姣忔閫夊畾涓€涓尯闂达紝灏嗚鍖洪棿鍐呯殑鎵€鏈夋暟鍙樻垚鍖洪棿鐨勫钩鍧囨暟锛屾眰鎿嶄綔鍚庡瓧鍏稿簭鏈€灏忕殑搴忓垪銆�

Solution

鑰冭檻鍗曡皟鏍堬紝姣忔濡傛灉鏍堥《姣斿甫鍏ユ爤鍏冪礌楂樺氨鏆村姏寮规爤锛屽皢琚脊鍑虹殑鍏冪礌鍜屽甫鍏ユ爤鐨勫厓绱犲悎骞躲€�

Description

璁� \(f(s)\) 琛ㄧず \(01\) 涓� \(S\) 涓鏈夊皯涓瓙涓蹭腑鑷冲皯鏈変竴涓� \(1\)銆傚浜庨暱搴︿负 \(n\) 涓旀伆濂芥湁 \(m\) 涓� \(1\) 鐨� \(01\) 涓诧紝姹� \(f\) 鐨勬渶澶у€间负澶氬皯銆�

Solution

瑕佹渶澶у寲 \(f\)锛屽浜庣粰瀹氱殑 \(n,m\) 灏辨槸瑕佹渶灏忓寲 \(\sum x_i\)锛屽叾涓� \(x_i\) 浠h〃绗� \(i\) 娈佃繛缁� \(0\) 鐨勯暱搴︺€�
鍗冲皢 \(n-m\) 涓� \(0\) 鍒嗘垚 \(m+1\) 浠斤紝姣忎唤鐨勬暟閲忓彲浠ユ槸浠绘剰闈炶礋鏁存暟锛屾渶灏忓寲 \(\sum x_i\)锛屾樉鐒跺敖鍙兘鍧囧寑鍒嗛厤鏄渶浼樼殑锛屽嵆淇濊瘉 \(\max - \min \le 1\)銆�
CF 题解汇总

Solution

鎵惧埌杈圭晫鐒跺悗寰幆鎵竴閬嶆暟涓暟鍗冲彲
CF 题解汇总

Solution

  • \(2a>n\)锛屼竴娆℃€х粨鏉燂紝鐩存帴杈撳嚭 \(n\)
  • \(a \geq b\)锛岄偅涔堜竴鐩翠慨鍗冲彲锛岀洿鎺ヨ緭鍑� \(n\)
  • 鍚﹀垯锛�\(a\) 鍗犲急鍔匡紝鎴戜滑鑰冭檻鐢� \(a\) 淇竴鍗婇渶瑕佺殑瀹屾暣杞鏁颁负 \([(n-1)/2a]\) 锛岄偅涔堣繖浜涜疆涓紝 \(a\) 淇帀鐨勪釜鏁颁负 \([n/2a]a\)锛岃€� \(b\) 淇帀鐨勪釜鏁板垯鏄� \([n/2], [n/2a]b\) 涓殑杈冨皬鍊笺€傝绠楀墿浣欓噺鐒跺悗鏆村姏淇嵆鍙€�
CF 题解汇总 ### Solution 鏍规嵁鍘熷瓧绗︿覆寤哄浘锛屾瘡涓瓧绗︽槸涓€涓偣锛岀浉閭诲垯杩炶竟 鐒跺悗浠庢瘡涓€涓害鏁颁负 $1$ 鐨勭偣寮€濮嬬垎鎼滆繛閫氬潡锛屽悎娉曟儏鍐典笅搴旇鏄竴鏉¢摼 CF 题解汇总 ### Solution 鑰冭檻浠庝綆浣嶅線楂樹綅璐績锛岃褰撳墠鍦ㄥ鐞嗙 $i$ 浣嶏紝鏇翠綆浣嶅墿浣欑殑閮ㄥ垎涓€鍏卞彲浠ユ嫾鍑� $cnt$ 涓� $2^i$ 濡傛灉 $n$ 鐨勮繖涓€浣嶆槸 $1$ 锛岄偅涔堣繖涓€浣嶅氨闇€瑕佸鐞�
  • 濡傛灉 \(cnt>0\)锛岄偅涔堢洿鎺ヤ粠 \(cnt\) 閲屾嬁涓€涓紝绛旀涓嶅彉
  • 鍚﹀垯锛屾毚鍔涘悜鏇撮珮浣嶆壘鍒版渶灏忕殑閭d竴涓紝姣斿瀹冨湪 \(j\) 浣嶏紝閭d箞灏� \(a_j\) 鍑� \(1\)锛屽悓鏃跺皢 \(a_{j-1},...,a_{i}\) 閮藉姞涓� \(1\)锛屽苟涓旂瓟妗堝鍔� \(j-i\)

鍋氬畬姣忎竴浣嶅悗锛岀淮鎶や竴涓� \(cnt\) 鍗冲彲
锛堣繃鏅氫簡涓€鍒嗛挓锛�
CF 题解汇总

Solution

涓嶇敱鍒嗚鍦版灇涓惧垎鍓茬偣
浠� \(f[i][j]\) 琛ㄧず鍘熶覆澶勭悊鍒� \(i\) 锛�\(s_1\) 澶勭悊鍒� \(j\)锛�\(s_2\) 鏈€澶氳兘澶勭悊鍒板摢閲�

閲囩敤涓诲姩杞Щ

浠绘剰鎯呭喌锛� \(f[i][j] \to f[i+1][j]\)

濡傛灉 \(s[i+1]=s_1[j+1]\) 锛岄偅涔� \(f[i][j] \to f[i+1][j+1]\)

濡傛灉 \(s[i+1]=s_2[f[i][j]+1]\) 锛岄偅涔� \(f[i][j]+1 \to f[i+1][j]\)

鏃堕棿澶嶆潅搴� \(O(n^3)\)
鏈変竴涓� \(n \times m\) 鐭╅樀锛屽垵鎬佷笅鍏ㄦ槸 \(0\)銆�
濡傛灉涓や釜鐩搁偦鍏冪礌锛堝洓杩為€氾級鐩哥瓑锛屾垜浠氨璇村畠浠槸杩為€氱殑锛屼笖杩欑鍏崇郴鍙互浼犻€掋€�
鏈� \(q\) 娆℃搷浣滐紝姣忔鎸囧畾涓€涓綅缃� \((x_i,y_i)\) 鎶婂畠鏇挎崲涓� \(c_i\)銆�
姣忔鎿嶄綔鍚庢眰杩欎釜鐭╅樀鏈夊灏戜釜杩為€氬潡銆�
\(q \leq 2\times 10^6\), \(n,m \leq 300\)

Solution

甯﹀垹闄ょ殑骞舵煡闆嗛棶棰樺彲浠ョ绾匡紝鎵€浠ユ鐫€鍊掔潃鍚勫仛涓€娆★紝鐒跺悗灏嗙瓟妗堝仛宸氨鍙互浜�
鑰冭檻姝g潃鍋氱殑杩囩▼锛屽垰寮€濮嬪氨鏄竴鍧� \(0\) 鐨勬澘鏉�
姣忔鎴戜滑鍒涘缓涓€涓柊鑺傜偣锛岀劧鍚庤瘯鍥惧皢瀹冧笌鍛ㄥ洿鐨勮妭鐐瑰悎骞讹紝璁惧悎骞剁殑娆℃暟涓� \(t\)锛岄偅涔堣繖涓€娆″绛旀鐨勮础鐚紙鍗宠繖娆℃搷浣滄柊澧炰簡澶氬皯涓繛閫氬潡锛夊氨鏄� \(1-t\)
鍙嶅悜鎿嶄綔鏃跺悓鐞嗭紝璐$尞甯︿釜璐熷彿灏卞彲浠ヤ簡
鏈€鍚庤緭鍑虹瓟妗堢殑鏃跺€欙紝鎶婅础鐚暟缁勬眰涓墠缂€鍜屽嵆鍙�
缁欏畾涓€妫� \(n\) 涓偣鐨勫甫鐐规潈鐨勬爲锛屾眰鏍戜笂鐨勮矾寰� \(x_1,...,x_k\) 锛屾渶澶у寲 \(\sum_{i=1}^k ia_{x_i}\)

Solution

鏍戜笂璺緞闂鍙敤鐐瑰垎娌汇€�
鑰冭檻濡備綍鍚堝苟涓ゆ潯璺緞瀵规瘡鏉¤矾寰勶紝璁� \(l\) 涓洪暱搴︼紙鐐规暟锛夛紝\(v\) 涓� \(\sum_{i=1}^l ia_{x_i}\) 锛�\(s\) 涓� \(\sum a_i\) 锛岄偅涔堝浜庝袱鏉¤矾寰� \((l_1,v_1,s_1),(l_2,v_2,s_2)\)锛屽畠浠殑骞朵负 \((l_1+l_2-1,v_1+s_1l_2+v_2,s_1+s_2)\)
浜庢槸绛旀涓� \(v_1 + v_2 + s_1l_2\)锛屽叾涓� \(_1\) 鏄拰涔嬪墠鎵弿杩囩殑鏈夊叧鐨勪俊鎭紝\(_2\) 鏄拰褰撳墠姝e湪鎵弿鐨勪綅缃湁鍏崇殑淇℃伅
锛堜箣鎵€浠ヨ繖鏍峰彇鐨勫師鍥犳槸锛屼箣鍚庢潕瓒呯嚎娈垫爲涓垜浠渶瑕佹帶鍒朵笅鏍囩殑鍖洪棿锛岃€� \(l\) 鐨勮寖鍥存槸杈冨皬鐨勶級
瀵逛簬鏌愪竴娆℃煡璇㈡潵璇达紝\(v_2\) 鏄畾鍊硷紝浜庢槸鏌ヨ鍙湁涓€涓弬鏁� \(l_2\) 锛屾墍浠ョ幇鍦ㄦ垜浠鏈€澶у寲 \(l_2s_1 + v_1\)锛屼笉濡ㄨ浆鍖栦负

  • 鎻掑叆涓€鏉$洿绾� \(y=ax+b\)锛屽叾涓� \(a=s_1,b=v_1\)
  • 璇㈤棶 \(x=l_2\) 涓庢墍鏈夌洿绾夸氦鐐逛腑鏈€涓婇潰鐨勯偅涓€涓�

鏍囧噯鐨勬潕瓒呯嚎娈垫爲妯℃澘
鎴戝張鎶婄偣鍒嗘暡閿欙紝鏁扮粍寮€灏�

涓€鏉尪涓€鍖呯儫锛屼竴涓牬棰樿皟涓€澶�CF 题解汇总
缁存姢涓€鍖洪棿 \([l,r]\)
浜烘寜鐓ф椂闂村崌搴�
鑰冭檻 \((l_i, h_i, t_i)\)锛屽綋鍓嶇殑鎵€鏈夊尯闂翠笌杩欎釜鍖洪棿鍙栦氦
鎺ㄥ埌 \(t_{i+1}\) 鏃讹紝鎵€鏈夊尯闂寸殑绔偣鍚戜袱杈规墿寮犲嵆鍙�
娉ㄦ剰鎶婄┖鎺夌殑鍖洪棿鍒犳帀
CF 题解汇总
鐪嬫牱渚嬶紝>><>><锛岃鏋勯€� LIS 鏈€鐭殑锛屾垜浠渶瑕佹壘鏈€灏忛摼鍒掑垎鐨勬柟妗堬紝鍗冲寘鍚渶灏戠殑涓嬮檷鍒�
寰堝鏄撴兂鍒版妸杩炵画 < 鐨勭湅鎴愪竴娈碉紝姣斿鏍蜂緥灏辨槸

.|.|. .|.|. .

姣忎竴娈靛唴蹇呴』涓婂崌锛岃€冭檻璁╁畠杩炵画锛岀劧鍚庤娈垫湯鍙栧綋鍓嶆病鍙栬繃鐨勬渶澶у€煎嵆鍙�
瑕佹瀯閫� LIS 鏈€闀跨殑锛屽悓鐞嗭紝鎴戜滑鎶婅繛缁� > 鐨勫牚绉颁竴娈碉紝姣斿鏍蜂緥灏辨槸

. . .|. . .|.

姣忔鍐呭繀椤讳笅闄嶏紝鑰冭檻璁╁畠杩炵画锛岀劧鍚庤娈佃啘鍙栧綋鍓嶆病鍘昏繃鐨勬渶灏忓€煎嵆鍙�
CF 题解汇总
鐢变簬鍙互璧伴噸杈癸紝鎵€浠ヤ换鎰忎竴鏉¤矾寰勯暱 + 2 浠嶇劧瀵瑰簲鑷冲皯涓€鏉″悎娉曡矾寰�
寰堟樉鐒舵垜浠湁 \(3\) 绉嶅熀鏈矾寰�

涓嶇粡杩� \((x,y)\)

缁忚繃 \(x \to y\)

缁忚繃 \(y \to x\)

鍋囪鏌愪釜鍩烘湰璺緞鐨勭瓟妗堟槸 \(d\)锛岃闂槸 \(k\)锛屽鏋滃悓鏃舵弧瓒充互涓嬫潯浠讹紝鍒欒鍩烘湰璺緞鍙互浣滀负绛旀

\(d \leq k\)

\(d = k \ (mod \ 2)\)

浜庢槸鏆村姏鍋氬嵆鍙�
CF 题解汇总
璁� \(f[i][j]\) 涓虹 \(i\) 澶╁湪绗� \(j\) 涓綅缃斁缃殑鏈€澶у€硷紝璁� \(s[i][j]\) 鏄 \(i\) 琛岀殑鍓嶇紑鍜岋紝鍒�

\[\begin{align} f[i][j] & =s[i+1][j+k-1]-s[i+1][j-1]+ \\ \max_l & \begin{cases} f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (1 \leq l \leq j-k) \\ f[i-1][l]+s[i][j+k-1]-s[i][l+k-1] & (j-k+1 \leq l \leq j) \\ f[i-1][l]+s[i][l-1]-s[i][j-1] & (j+1 \leq l \leq j+k-1) \\ f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (j+k \leq l \leq m-k+1) \end{cases} \end{align} \]

濡傛灉鏆村姏杞Щ锛屽垯澶嶆潅搴� \(O(nm^2 )\)
濡傛灉 \(k\) 寰堝皬锛岄偅涔堝涓棿涓ょ鎯呭喌鏆村姏杞Щ锛屾梺杈逛袱绉嶇敱浜庡彧鏈� \(f[i-1][l]\) 涓� \(l\) 鏈夊叧锛屽彲浠ラ澶勭悊鍓嶅悗缂€ \(\max\) 鏉ヨВ鍐筹紝澶嶆潅搴� \(O(nmk)\)
褰� \(k\) 鍙樺ぇ鏃讹紝涓や晶鐨勬儏鍐典粛鐒舵毚鍔涜浆绉伙紝涓棿鐨勬儏鍐靛彲浠ユ毚鍔涚敤浠� \(l\) 涓轰笅鏍囩殑鍗曡皟闃熷垪缁存姢 \(f[i-1][l]-s[i][l+k-1]\) 鍜� \(f[i-1][l]+s[i][l-1]\)
锛堝鏋滄兂鍋锋噿涔熷彲浠ユ暡涓嚎娈垫爲缁存姢涓€涓嬶級
锛堝彂鐜板崟璋冮槦鍒椾紭鍖朌P涓嶅お鐔熺粌锛屽噯澶囪澶嶄範涓嬶級

[CF1305E] Kuroni and the Score Distribution - 鏋勯€�

Description

鏋勯€犱竴涓暱搴︿负 n 鐨勶紝鏁板瓧涓嶈秴杩� 1e9 鐨勶紝鍗曡皟閫掑鐨勶紝鎭板ソ鏈� m 涓弧瓒� \(i<j<k\) 涓� \(a_i +a_j=a_k\) 鐨勪笁鍏冪粍 \((i,j,k)\) 鐨勫簭鍒椼€�

Solution

瑕佹兂璁╀笁鍏冪粍涓暟鏈€澶氾紝鏄剧劧鎴戜滑浼氭寜鐓� 1,2,3,... 杩欐牱鐨勬柟寮忔瀯閫犮€�
娉ㄦ剰鍦ㄨ繖涓繃绋嬩腑锛岀 k 涓厓绱狅紙鏂板姞鍏ワ級浜х敓鐨勮础鐚负 \((k-1)/2\)銆�
濡傛灉鎴戜滑鎯宠娣诲姞鐨勮础鐚笉鍒� \((k-1)/2\)锛屽亣璁句负 \((k-1)/2-x\)锛岄偅涔堟垜浠彲浠ユ坊鍔犱竴涓� \(k+2x\) 鐨勫厓绱犮€�
鎸夌収浠ヤ笂鐨勬柟娉曟瀯閫犲嚭鐨勫簭鍒楁樉鐒舵槸鏈€鐭殑銆�
鑰冭檻濡備綍琛ラ綈 n 涓厓绱狅紝鎴戜滑鍙互浠� 1e9 鍚戜笅鎶撹嫢骞蹭釜鍏冪礌濉湪鏈€鍚庛€�
缁欎竴寮犺仈閫氭棤鍚戝浘锛岃竟鏉冨叏 1锛屽叾涓湁 k 涓叧閿偣锛屾眰閫夊彇涓€瀵瑰叧閿偣澧炲姞涓€鏉¤竟涔嬪悗 1~n 鐨勬渶鐭矾鐨勬渶澶у€�

Solution

浠� \(1,n\) 涓鸿捣鐐� BFS 鍑烘渶鐭矾鏁扮粍锛屽垎鍒涓� \(a[],b[]\)
瀵圭壒娈婄偣鐨勭紪鍙锋寜鐓� \(x_i\) 鍗囧簭鎺掑簭锛岄偅涔堝鏄撹瘉鏄庡浜庢瘡涓� \(x_i\)锛屽彧闇€瑕佽€冭檻 \(y_{i+1}\) 鍗冲彲
CF 题解汇总

Solution

a<b, delta=odd, ans=1
a<b, delta=even, ans=2
a=b ans=0
a>b, delta=odd, ans=2
a>b, delta=even, ans=1
CF 题解汇总

Solution

鎸夌収 \(p[i]\) 杩涜鍒嗘锛屽鏋滄煇涓� \(k\) 涓嶅瓨鍦� \(p[i]=k\)锛岄偅涔堝氨鎶� \(i,i+1\) 鍒嗗壊寮€
澶勭悊鍑烘瘡涓€娈电殑宸︾鐐瑰拰鍙崇鐐�
杩涜€屽鐞嗗嚭姣忔鐨勬渶灏忓€煎拰鏈€澶у€�
濡傛灉瀛樺湪绗� \(i\) 娈电殑鏈€澶у€煎ぇ浜庣 \(i+1\) 娈电殑鏈€灏忓€硷紝灏辫緭鍑� NO
CF 题解汇总

Solution

鍓嶇紑鍜屾悶涓€涓嬪嵆鍙�
CF 题解汇总

Solution

鏋氫妇 \(a\)锛屾灇涓� \(b\ s.t. a|b\)锛屽垯 \(c\) 涓€瀹氭槸 \([c/b]b\) 鎴� \(([c/b]+1)b\)
CF 题解汇总

Solution

棰勫鐞嗗嚭 \(i\) 涓偣缁勬垚鐨勪簩鍙夋爲鐨勬渶澶х瓟妗堝拰鏈€灏忕瓟妗�
閫掑綊鍋氾紝鐢变簬鍙渶瑕佹瀯閫犱竴绉嶆柟妗堬紝鎴戜滑璁╁乏瀛愭爲澶у皬鑳藉皬灏卞皬锛屽洜姝ゆ瘡娆′粠灏忓埌澶ф灇涓惧乏瀛愭爲鐨勭偣鏁板苟妫€楠岋紝濡傛灉妫€楠岄€氳繃灏遍€夊畾涔�
鐜板湪杩橀渶瑕佺‘瀹氬乏鍙冲瓙鏍戝悇鍒嗛厤澶氬皯绛旀涓婂幓锛屼竴绉嶆瀯閫犳€х殑鎯虫硶鏄紝瑕佷箞璁╁乏瀛愭爲閫夋渶灏忥紝瑕佷箞璁╁彸瀛愭爲閫夋渶澶с€傚浜庝换鎰忎竴绉嶅叾瀹冩柟妗堬紝鎴戜滑鍙互閫氳繃鎶婂乏瀛愭爲涓婄殑绛旀涓嶆柇绉诲埌鍙冲瓙鏍戜笂锛岀洿鍒版煇涓€杈硅揪鍒扮晫闄愶紝鏁呯瓑浠枫€�
鎵撻敊鍙橀噺鍚嶆煡鍗婂ぉ鈥︹€�
CF 题解汇总

Solution

鎸� \(x\) 鍏抽敭瀛楀崌搴忔帓搴忥紝渚濇鏋氫妇姣忎釜鐐�
鑰冭檻瀵逛换鎰� \(x_j < x_i\)锛岄偅涔堝綋 \(v_j \leq v_i\) 鏃讹紝瀹冧滑涓嶄細鐩镐氦锛屼笖 \(dis\) 灏辨槸瀹冧滑鍒濇€佺殑璺濈 \(x_i-x_j\)
寮€涓や釜鏍戠姸鏁扮粍锛屼互绂绘暎鍖栧悗鐨� \(v\) 涓轰笅鏍囷紝涓€涓淮鎶や釜鏁板拰锛屼竴涓淮鎶ゅ潗鏍囧拰
閭d箞姣忔璇㈤棶鐨勭瓟妗堝氨鏄� 涓暟鍜� $\cdot x_i - $ 鍧愭爣鍜�
鐒跺悗鎶婅繖涓偣鎻掕繘鍘诲嵆鍙�
鏈変竴涓泦鍚堬紝涓夌鍏冪礌锛屾瘡绉嶅垎鍒湁 \(a_i\) 涓紝姹傛渶澶氳兘鍒嗗嚭鐨勪笉鍚岀殑涓嶅彲閲嶉潪绌哄瓙闆嗙殑涓暟

Solution

璐績锛屽厛鍙� \(1\) 涓殑锛屽啀鍙� \(2\) 涓殑锛屾渶鍚庡彇 \(3\) 涓殑
缁欏畾涓€涓汉涓ゅ満姣旇禌鐨勬帓鍚嶅拰姣旇禌浜烘暟锛屾€绘帓鍚嶆寜鐓т袱鍦烘瘮璧涚殑鎺掑悕鍜岃繘琛岋紝闂繖涓汉鐨勬帓鍚嶏紙鍗冲皬浜庣瓑浜庡畠鐨勫寘鎷粬鑷繁鐨勪汉鏁帮級

Solution

澶у姏鐚滅粨璁猴紙瑙佷唬鐮侊級
鏈� \(n\) 涓綅缃紝鍒嗗埆鍦ㄤ笂闈㈢洊妤硷紝绗� \(i\) 涓笉鑳借秴杩� \(m_i\) 灞傦紝瀵逛换鎰忎竴鏍嬫ゼ锛屽畠鐨勫乏杈规墍鏈夋ゼ涓拰鍙宠竟鎵€鏈夋ゼ涓紝涓嶈兘閮芥湁姣斿畠楂樼殑妤硷紝姹傛渶澶у寲妤煎眰鎬绘暟鍜岀殑鏂规

Solution

Easy锛氭毚鍔涙灇涓惧嘲鍦ㄥ摢锛岀劧鍚庡悜涓や晶閫掓帹杩囧幓鍗冲彲
Hard锛氭棦鐒堕兘鍗曡皟浜嗭紝鐢ㄥ崟璋冩爤缁存姢涓€涓嬪崟鍚戠殑鍓嶇紑/鍚庣紑绛旀锛岀劧鍚庢灇涓惧嘲浣嶇疆鎷艰捣鏉ュ嵆鍙�
搴忓垪闀垮害涓� \(m\)锛屽垵鎬佷负 \(0\)锛屼綘鍙互浠� \(n\) 涓搷浣滀腑閫夋嫨鑻ュ共涓墽琛岋紝绗� \(i\) 涓搷浣滃鍖洪棿 \([l_i,r_i]\) 涓瘡涓綅缃姞涓� \(1\)锛屾渶澶у寲鏈€鍚庢槸濂囨暟鐨勫厓绱犱釜鏁般€備繚璇佸鏋滄柦鍔犱簡鎵€鏈夋搷浣滐紝涓€涓厓绱犵殑鏈€澶у€间笉浼氳秴杩� \(k \leq 8\)

Solution

棣栧厛灏嗘墍鏈夊尯闂寸鏁e寲鎴愬乏闂彸寮€鍖洪棿锛岃€冭檻鐘跺帇 dp锛屼负姣忎釜鍖洪棿鍒嗛厤缂栧彿锛岀紪鍙风殑鍒嗛厤鑼冨洿鏄� \(0\to k-1\)锛屼繚璇佹病鏈夐噸鍙犲嵆鍙紝杩欐牱鍗冲彲璁剧姸鎬佷负 \(f[i][j]\) 琛ㄧず鑰冭檻鍒颁簡绗� \(i\) 涓綅缃紝鍦� \([pos_{i-1},pos_i)\) 杩欐鍖洪棿鍐呯殑鏈夋晥鐘舵€佹槸 \(j\)锛屽湪 \([1,pos_i)\) 杩欐鍖洪棿鍐呮敹鑾风殑鏈€澶у€�
杞Щ鏃讹紝濡傛灉杩欎釜浣嶇疆鏄粨鏉熶篃鏄紑濮嬶紝閭d箞灏卞彲浠ラ€夋嫨淇濇寔鎴栬€呮敼鍙橈紱濡傛灉杩欎釜浣嶇疆鏄粨鏉燂紝閭d箞杩欎釜浣嶅氨褰掗浂锛涘鏋滆繖涓綅缃槸寮€濮嬶紝閭d箞鍐崇瓥鏄惁鎵撳紑銆備负浜嗘柟渚匡紝鎴戜滑鍦ㄧ \(i\) 涓綅缃笂鍋氬尯闂� \([pos_{i-1},pos_i)\) 鐨勫喅绛栵紝杩欐牱濡傛灉 \(popcount(j)\) 鏄鏁帮紝灏辩畻涓婅繖涓€娈电殑璐$尞锛屽惁鍒欎笉绠�
娌℃兂鍒颁竴涓姸鍘� DP 鎶婃垜鍗℃浜�
姣忎釜瀛︾敓鐨勫垎鏁版渶灏戜负 \(0\)锛屾墍浠ユ垜浠彧瑕佹妸闄や簡绗� \(1\) 鍚嶅鐢熶箣澶栫殑鎵€鏈夊鐢熺殑鍒嗘暟鍏ㄩ儴缁欑 \(1\) 涓鐢熷氨鑳戒娇浠栫殑鍒嗘暟鏈€澶с€�
CF 题解汇总

Solution

瀹炶川涓婂氨鏄暣涓瓧绗︿覆宸︾Щ鑻ュ共浣嶏紝澶氬嚭鏉ョ殑閮ㄥ垎鎸埌鍙宠竟锛屽苟鏍规嵁濂囧伓缈昏浆
缁欏畾涓や釜搴忓垪 \(a,b\)锛屼繚璇佹瘡涓簭鍒椾腑鎵€鏈夋暟瀛楃殑 GCD 涓� \(1\)锛岃 \(a*b=c\)锛岀粰瀹氳川鏁� \(p\)锛屾眰 \(t\) 浣垮緱 \(c_t\) 涓嶈兘琚� \(p\) 鏁撮櫎
\(n,m \leq 10^6, x \leq 10^9\)

Solution

瑕佷娇 \(c_i \bmod p \neq 0\)锛屽垯 \(a_0b_i, a_1b_{i-1}, \dots, a_ib_0\) 涓嚦灏戞湁涓€椤规弧瓒� \(a_xb_y \neq 0 \bmod p\)锛岃繖瑕佹眰 \(a_x,b_y \neq 0 \bmod p\)锛屼簬鏄垜浠彧闇€瑕佹寜涓嬫爣浠庡皬鍒板ぇ鎵惧埌绗竴涓� \(a_i \neq 0, b_j \neq 0 \bmod p\)锛岄偅涔� \(i+j\) 灏辨槸绛旀
鑰冭檻鍏呭垎鎬э紝璁剧涓€涓笉鑳借 \(p\) 鏁撮櫎鐨勬槸 \(a_i,b_j\)锛岄偅涔堝浜� \(c_{i+j}\)锛屽畠鐨勫叾瀹冮」涓竴瀹氶兘鍚湁 \(p\) 鍥犲瓙
瀵逛竴涓� \(n\times n\) 鐨勬鐩橈紝姣忎釜鏍煎瓙涓婃湁涓€涓瓧姣嶏紝琛ㄧず閬囧埌杩欎釜鏍煎瓙灏卞悜鐫€鏌愪釜鏂瑰悜璧版垨鑰呭仠姝€€傜幇鍦ㄧ粰瀹氫粠姣忎釜浣嶇疆寮€濮嬩細璧板埌鐨勪綅缃紝鎴栬€呮寰幆锛岃瘯鏋勯€犱竴涓悎娉曠殑妫嬬洏锛屾垨鑰呰緭鍑� INVALID銆�

Solution

闄ゅ幓姝诲惊鐜殑閮ㄥ垎锛岀粓鐐圭浉鍚岀殑鐐逛細褰㈡垚鐙珛鐨勮仈閫氬潡锛屾垜浠粠缁堢偣寮€濮嬪弽鍚� DFS 鍗冲彲
濡傛灉姝诲惊鐜槸鍗曠嫭鐨勪竴涓偣锛屽垯 INVALID
鍚﹀垯锛屾垜浠己琛屾瀯閫犲嚭涓€涓簩鍏冪幆锛岀劧鍚庡綋鍋氱涓€绉嶆儏鍐靛仛鍗冲彲
闇€瑕佸湪 \(n\) 涓汉涓€夊嚭 \(p\) 涓汉绔欑潃闃熶紞涓殑鍚勪釜浣嶇疆涓婏紝鍐嶄粠鍓╀笅鐨� \(n-p\) 涓汉涓€夊嚭 \(k\) 涓汉浣滀负瑙備紬銆傜 \(i\) 涓汉浣滀负瑙備紬鍙互鏈� \(a_i\) 鐨勫緱鍒嗭紝浣滀负闃熶紞涓 \(j\) 涓綅缃笂鐨勪汉鍙互鏈� \(s_{i,j}\) 鐨勫緱鍒嗭紝姹傚緱鍒嗙殑鏈€澶у€笺€�\(n\leq 10^5, p\leq 7\)

Solution

灏嗕汉鎸夌収 \(a\) 浠庡ぇ鍒板皬鎺掑簭锛岃繖鏍峰鏋滄暡瀹氫簡鍝簺浜烘槸闃熶紞锛岄偅涔堝墿涓嬬殑闈犲墠鐨� \(k\) 涓竴瀹氭槸瑙備紬
鑰冭檻鐘跺帇 DP锛岃 \(f[i][j]\) 琛ㄧず鑰冭檻浜嗗墠 \(i\) 涓汉锛岄槦浼嶄腑鍚勪釜浣嶇疆鐨勭姸鎬佷负 \(j\) 鐨勫緱鍒嗘渶澶у€硷紝鍐崇瓥涓嬩竴涓汉鏀惧湪闃熶紞鐨勫摢涓€涓綅缃紝鎴栬€呬笉鍏ラ槦锛屽鏋滀笉鍏ラ槦鍒欏垽瀹氬鏋� \(i-popcount(j) \leq k\) 鍒欏幓褰撹浼�
瀹氫箟涓€涓� \(n\) 鍏冨簭鍒� \(p_i\)锛屽鏋� \(n=1\)锛屽垯搴忓垪鏉冨€间负 \(0\)锛屽惁鍒欏簭鍒楁潈鍊煎氨鏄師搴忓垪鎺掑簭鍚庣浉閭讳袱椤逛箻绉殑鍜屻€傜幇鍦ㄧ瓑姒傜巼鍦伴€夊嚭涓€涓瓙搴忓垪锛岄棶瀹冪殑鏉冨€肩殑鏈熸湜鏄灏戙€傛敮鎸佸姩鎬佸崟鐐逛慨鏀广€�

Solution

瀵逛簬闈欐€佹儏鍐碉紝绛旀涓�

\[\sum_{i=1}^n \sum_{j=i+1}^n \frac{p_i p_j}{2^{j-i+1}} \]

鑰冭檻鐢ㄧ嚎娈垫爲缁存姢锛屽浜庡尯闂� \([l,r]\)锛屾垜浠 \(val\) 涓哄綋鍓嶅尯闂存潈鍊硷紝\(lv=\sum_{i=l}^r p_i2^{i-l}\)锛�\(rv=\sum_{i=l}^r p_i/2^{i-l+1}\)锛�\(sz\) 鏄綋鍓嶅尯闂村唴鏁扮殑涓暟锛屽垯

\[val=val_L+val_R+\frac{1}{2} vl_Lvr_R/2^{sz_L} \\ sz=sz_L+sz_R \\ vl=vl_L+vl_R2^{sz_L} \\ vr=vr_L+vr_R/2^{sz_L} \]

瀵逛簬鍗曠偣 \(a\)锛屽畠鐨� \(val=0, sz=1, vl=a, vr=a/2\)
鑰冭檻鍒板簭鍒椾腑鏈夐噸澶嶅厓绱狅紝鎴戜滑鍏堝皢鎵€鏈夊厓绱狅紙鍖呮嫭淇敼鐨勶級涓€璧疯杩涙潵鎺掑簭锛岀劧鍚庡皢鍘熷鐨勫厛婵€娲伙紝淇敼鍚庣殑鍏堜笉婵€娲伙紙\(val=0,sz=0,vl=0,vr=0\)锛夛紝涓€璧锋寕鍦ㄧ嚎娈垫爲涓�
灏� \(i\) 鍚� \(p[i]\) 杩炶竟锛屽垯鍦ㄦ瘡涓暱搴︿负 \(l\) 鐨勭幆閲岋紝鎴戜滑鍙互鑺辫垂 \(\mathcal{O}(l^2)\) 鐨勬椂闂村幓鏆村姏鏋氫妇绛旀
鑰岀瓟妗� \(k\) 鍚堟硶绛変环浜庣瓟妗� \((k,l)\) 鍚堟硶
浜庢槸鎴戜滑鍙渶瑕佹灇涓� \(l\) 鐨勬瘡涓洜鏁板嵆鍙紝澶嶆潅搴� \(\mathcal{O}(n \sqrt n)\)
缁欏畾涓€妫垫湁鏍规爲锛屾瘡娆¤闂粰瀹氫竴涓偣闆嗭紝闂槸鍚﹀瓨鍦ㄦ牴鍒版煇鐐圭殑閾撅紝浣垮緱鐐归泦涓墍鏈夌偣鍒伴摼鐨勮窛绂讳笉澶т簬 \(1\)銆�

Solution

灏嗘瘡娆¤闂殑缁撶偣鎸夋繁搴︽帓搴忓ソ锛岀浉閭荤殑涓や釜缁撶偣 \(p,q\) 涓€瀹氭弧瓒� \(d[p]-d[lca] \le 1 \or d[q]-d[lca] \le 1\)锛屽叾涓� \(lca=lca(p,q)\)
蹇呰鎬ф樉鐒讹紝鍏呭垎鎬ц€冭檻璁╂瘺姣涜櫕鐨勮寧涓€鐩村線宸€煎ぇ鐨勯偅杈硅蛋鍗冲彲

Solution

鏋氫妇閫夋嫨涓€涓腑闂寸偣锛岃绠楁妸杈逛笂鍘嬪埌涓棿杩欐潯绾夸笂鐨勭瓟妗�
鍘嬬殑鏃跺€欒鑰冭檻涓よ竟鍘嬪拰鍗曡竟鍘嬬殑鎯呭喌
锛堜互涓嬩唬鐮佷腑鐨勪簩鍒嗘樉寰楀緢绱禈锛岀函绮逛负浜嗗伔鎳掕€屽嚭鐜帮級

using namespace std;

const int N = 200005;

int n,k,a[N],pre[N],suf[N],ans=1e18;
map<int,int> mp;

signed main() {
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++) {
pre[i]=pre[i-1]+a[i];
}
for(int i=n;i>=1;--i) {
suf[i]=suf[i+1]+a[i];
}
for(int i=1;i<=n;i++) mp[a[i]]++;
for(auto i:mp) if(i.second>=k) {
cout<<0<<endl;
return 0;
}
for(int i=1;i<=n;i++) {
int x=a[i];
int e=upper_bound(a+1,a+n+1,x)-lower_bound(a+1,a+n+1,x);
int g=n-(upper_bound(a+1,a+n+1,x)-a)+1;
int l=lower_bound(a+1,a+n+1,x)-a-1;
int sg=suf[n-g+1];
int sl=pre[l];
int tmp=sg-gx+lx-sl-(n-k);
ans=min(ans,tmp);
if(n-l>=k) {
int tx=sg-gx-(n-l-k);
ans=min(ans,tx);
}
if(n-g>=k) {
int tx=l
x-sl-(n-g-k);
ans=min(ans,tx);
}
//cout<<l<<" "<<e<<" "<<g<<endl;
}
cout<<max(0ll,ans);
}

瀵逛竴涓� \(n\times m\) 鐨勭煩闃碉紝姣忎釜浣嶇疆鏈夋潈鍊� \(a_{ij}\)锛屾瘡娆℃搷浣滀綘鍙互灏嗕竴涓綅缃� \(+2\)锛屾垨灏嗗洓鐩搁偦鐨勪袱涓綅缃悇 \(+1\)銆傚鏋滀竴涓煩闃电粡杩囪嫢骞叉鎿嶄綔锛屽彲浠ヤ娇寰楁墍鏈変綅缃潈鍊肩浉鍚岋紝鎴戜滑绉板畠涓哄ソ鐭╅樀銆傞棶鏈夊灏戜釜濂界煩闃垫弧瓒冲ぇ灏忎负 \(n\times m\)锛屼笖姣忎釜浣嶇疆鐨勬潈鍊奸兘鍦� \([L,R]\) 鍐呫€�

Solution

棣栧厛瑙傚療鍒帮紝濡傛灉 \(nm\) 鏄鏁帮紝涓€瀹氬悎娉曪紱濡傛灉 \(nm\) 鏄伓鏁帮紝鍒欏綋涓斾粎褰� \(\sum_{(i,j)} a_{i,j}\) 鏄伓鏁版椂鍚堟硶
\(nm\) 鏄鏁扮殑鏂规鏁颁綅 \((r-l+1)^{nm}\)
\(nm\) 鏄伓鏁版椂锛岃嫢 \(r-l+1\) 鏄伓鏁帮紝鍒欐墍鏈夋柟妗堜腑鎬诲拰濂囧伓鍚勫崰鎹竴鍗婏紝鏁� \((r-l+1)^{nm}/2\)锛涜嫢 \(r-l+1\) 鏄鏁帮紝鍒欐樉鐒舵€诲拰涓哄伓鏁扮殑姣旀€诲拰涓哄鏁扮殑鏂规鏁板 \(1\)锛屼簬鏄瓟妗堜负 \(((r-l+1)^{nm}+1)/2\)

[CF1333D] Challenges in school 鈩�41 - 閫嗗簭瀵�,鍐掓场鎺掑簭

Description

缁欏畾涓€涓惈 L,R 鐨勫簭鍒楋紝涓€娆℃搷浣滃彲浠ュ皢鑻ュ共涓浉閭� R,L 瀵圭炕杞紝闂兘鍚﹂€氳繃鎭板ソ \(k\) 杞搷浣滃畬鎴愭暣涓炕杞繃绋嬨€�

Solution

棰樼洰缁欏嚭鐨勪氦鎹㈡柟娉曞緢瀹规槗鎯冲埌鍐掓场鎺掑簭銆�
鏈€澶х瓟妗堢瓑浜庨€嗗簭瀵规暟锛岃繖涓彲浠� \(O(n)\) 姹傚嚭锛屾渶灏忕瓟妗堜笉澶ソ姹傘€�
姣忔鍏堢粺璁″嚭閫嗗簭瀵规暟 x锛岀劧鍚庢毚鍔涘幓鍋氫竴杞啋娉★紝浣嗘槸鍐掓场鐨勬鏁颁笂闄愭槸 x-k銆�

Description

闆嗗悎 \(S = \{1,2,...,n\}\) 鐨勪竴涓瓙闆� \(M\) 鐨勪笉瀹岀編鍊肩瓑浜� \(\max_{a,b\in M} gcd(a,b)\) 涓� \(a \neq b\)锛屽浜� \(k =2,3,...,n\)锛屾眰婊¤冻 \(|M|=k\) 鐨勬墍鏈� \(M\) 涓笉瀹岀編鍊肩殑鏈€灏忓€笺€�

Solution

瀵逛簬涓€涓瓙闆嗭紝濡傛灉 \(a,b \in M\) 涓� \(a \bmod b \equiv 0\)锛屽垯鍒犲幓 \(a\) 涓€瀹氭瘮鍒犲幓 \(b\) 浼�
浜庢槸锛岃嫢 \(a\) 鍦ㄦ暟鍒椾腑锛屽垯 \(a\) 鐨勬墍鏈夌害鏁颁竴瀹氬湪鏁板垪涓紝浜庢槸 \((a,b)=c\) 鏃� \(c\) 涓€瀹氬瓨鍦�
浜庢槸涓€涓瓙闆嗙殑绛旀灏辨槸鍏朵腑鎵€鏈夋暟鐨勬渶澶х湡鍥犲瓙鐨勬渶澶у€�
鐩存帴 \(O(n\log n)\) 鏆村姏棰勫鐞嗘渶澶х湡鍥犲瓙锛屾帓搴忚緭鍑哄嵆鍙�

Description

缁欏畾涓€涓暟 \(D \le 10^{15}\)锛屽浜庢墍鏈� \(D\) 鐨勫洜鏁颁綔涓虹粨鐐癸紝鏋勯€犳棤鍚戝浘锛屽鏋滀袱涓偣 \(x>y\) 婊¤冻 \(x/y\) 鏄竴涓川鏁帮紝閭d箞鎴戜滑灏卞湪 \(x,y\) 涔嬮棿杩炰竴鏉¤竟锛岃竟鏉冪瓑浜� \(x\) 鏈夎€� \(y\) 娌℃湁鐨勫洜瀛愮殑涓暟銆傜粰瀹� \(q \le 3 \times 10^5\) 涓闂紝姣忔缁欏畾涓や釜鐐� \(u,v\)锛岃姹傚洖绛旇繖寮犲浘涓� \(u,v\) 鐨勬渶鐭矾寰勭殑鏉℃暟銆�

Solution

鍥句笂涓や釜鐐� \(x,y\) 濡傛灉婊¤冻 \(x | y\)锛岄偅涔� \(x,y\) 涔嬮棿鐨勮窛绂诲氨鏄� \(d(y)-d(x)\)锛屽叾涓� \(d(x)\) 琛ㄧず \(x\) 鐨勫洜瀛愪釜鏁帮紝骞朵笖鏈€鐭矾鐨勬暟閲忓氨鏄� \(y/x\) 鐨勬墍鏈夎川鍥犲瓙鏋勬垚鐨勫閲嶉泦鍚堢殑鎺掑垪鏁扮洰锛堣繖闈炲父绫讳技浜庝竴涓妸璐ㄥ洜瀛愪竴涓釜濉炶繘鍘荤殑杩囩▼锛夈€�
鍥犳 \(p,q\) 闂寸殑鏈€鐭矾涓€瀹氫細缁忚繃 \((p,q)\)锛屽苟涓斿彲浠ユ媶鎴� \(p \to (p,q) \to q\) 涓ゆ锛屾渶鐭矾闀垮害鐩稿姞锛屾渶鐭矾鏁伴噺鐩镐箻銆�
浜庢槸鎵€姹傚嵆涓� \(P(p\)p,q)) \times P(q\(p,q))\)锛岀摱棰堝湪浜� \(P\) 鐨勮绠楀嵆璐ㄥ洜瀛愬垎瑙c€�
鑰冭檻鍒拌繖閲屽嚭鐜扮殑鎵€鏈夎川鍥犲瓙閮芥槸 \(D\) 鐨勮川鍥犲瓙锛岃€� \(D\) 鐨勮川鍥犲瓙鏄剧劧涓嶄細瓒呰繃 \(O(\log D)\) 绉嶏紝鍥犳鏆村姏鏋氫妇鍗冲彲銆�

Description

缁欏畾 \(n \times m\) 鐨勬鐩橈紝姣忎釜鏍煎瓙鏈変竴涓鑹插拰鏂瑰悜銆傚鏋滀竴涓満鍣ㄤ汉姝ゆ椂鍦ㄦ煇涓牸瀛愪腑锛岄偅涔堜笅涓€鏃跺埢浠栦細绉诲姩鐨勮繖涓牸瀛愮殑鏂瑰悜鎵€鎸囧悜鐨勭浉閭荤殑鏍煎瓙涓€傝嫢骞蹭釜鏈哄櫒浜哄湪妫嬬洏涓婃棤闄愬湴璧颁笅鍘伙紝璇锋壘鍑轰竴绉嶆斁缃満鍣ㄤ汉鐨勬柟妗堬紝闇€瑕佷繚璇佷换鎰忔椂鍒讳笉浼氭湁涓や釜鏈哄櫒浜哄悓鏃跺嚭鐜板湪鍚屼竴涓牸瀛愪腑锛屽湪鏈€澶у寲鏈哄櫒浜烘€绘暟鐨勫墠鎻愪笅锛屾渶澶у寲鍒濇€佷笅浣嶄簬榛戣壊鏍煎瓙涓婄殑鏈哄櫒浜烘€绘暟銆�

Solution

寰堟樉鐒舵垜浠渶瑕佸姣忎竴涓€滆繛閫氬潡鈥濆垎鍒€冭檻锛岃繖涓繛閫氬潡涓€瀹氬寘鍚竴涓幆浠ュ強鑻ュ共涓唴鍚戦摼銆�
鏆村姏鎵剧幆鐢ㄥ苟鏌ラ泦缁存姢褰撶劧鍙互锛屼絾鏄湁鐐归夯鐑︺€�
鑰冭檻鍒板湪瓒冲闀跨殑鏃堕棿鍚庯紝鎵€鏈夋満鍣ㄤ汉涓€瀹氶兘浼氳蛋鍒扮幆涓婂幓锛屽洜姝ゆ垜浠彧闇€瑕佺粰鍑轰竴涓冻澶熷ぇ鐨� \(M\)锛屾眰鍑� \(M\) 鏃堕棿鍚庯紝姣忎釜鍒濇€佷綅缃彲浠ュ埌杈剧殑浣嶇疆锛岃繖浜涗綅缃殑骞堕泦鐨勫ぇ灏忓氨鏄瓟妗堛€�
鑰冭檻鍊嶅锛屼护 \(f[i][j]\) 琛ㄧず鐐� \(i\) 璧颁簡 \(2^j\) 姝ュ悗鐨勪綅缃紝甯歌澶勭悊鍗冲彲銆�

Description

缁欏畾涓€涓瓧绗︿覆 \(S\) 鍜屼竴涓瓧绗︿覆 \(T\)锛屾瘡娆℃搷浣滃彲浠ヤ粠 \(S\) 鐨勫紑澶村垹鍘讳竴涓瓧绗︼紝鎶婂畠鍔犲埌涓€涓垵濮嬩负绌虹殑涓茬殑寮€澶存垨缁撳熬锛屼笉蹇呭垹瀹岋紝姹傛湁澶氬皯绉嶄笉鍚岀殑鏂规硶浣垮緱 \(T\) 鏄� \(A\) 鐨勫墠缂€銆�

Solution

鎵€璋撹姹� \(T\) 鏄� \(A\) 鐨勫墠缂€锛屽嵆瑕佹眰 \(A\) 鐨勫墠 \(T\) 涓瓧绗︽槸 \(A\)銆�
鑰冭檻 dp锛岃 \(f[i][j]\) 琛ㄧず鐢� \(S\) 鐨勫墠 \(j-i+1\) 涓瓧绗︽瀯閫犲嚭 \(T[i..j]\) 鐨勬柟妗堟暟銆�
鑰冭檻杞Щ锛屾瘡娆¤嫢 \(T[i]=S[j-i+1]\)锛岄偅涔� \(f[i][j] \leftarrow f[i+1][j]\)锛屽弽杩囨潵涔熷悓鐞嗐€�
鍒濇€佹潯浠跺彲浠ョ洿鎺ヤ护鎵€鏈� \(f[i][i-1]=1\)銆�
鏈€缁堢殑绛旀鍗充负 \(\sum_{i=|T|}^{|S|} f[1][i]\)銆�

Description

缁欏畾涓€妫� $ n $ 涓偣鐨勬棤鏍规爲锛岃姹傜粰姣忔潯杈瑰垎閰嶄竴涓�姝f暣鏁�鏉冨€硷紝浣垮緱浠绘剰涓や釜鍙跺瓙鑺傜偣涔嬮棿璺緞涓婄殑杈规潈寮傛垨鍊间负 $ 0 \(銆傛眰鏈€灏戣澶氬皯绉嶄笉鍚屾潈鍊硷紝浠ュ強鏈€澶氬彲浠ヤ娇鐢ㄥ灏戠涓嶅悓鏉冨€笺€�<br> 杩欓噷锛屽~鍏ョ殑杈规潈鍊煎彲浠ヤ负浠绘剰澶с€�<br> \) 3 \le n\le 10^5 $

Solution

鑰冭檻鏈€灏忓€硷紝濡傛灉瀛樺湪涓や釜鍙跺瓙涔嬮棿鐨勮窛绂讳负濂囨暟锛屽垯绛旀涓� \(3\)锛堟病鏈夎繛鎺ュ彾鑺傜偣鐨勮竟涓婁氦鏇垮~ \(1,2\)锛岄儴鍒嗗彾瀛愯竟鍙兘濉� \(3\)锛夛紝鍚﹀垯绛旀涓� \(1\)
鑰冭檻鏈€澶у€硷紝灏嗘瘡涓粨鐐圭殑鍙跺瓙缁撶偣鍚堝苟涓轰竴涓粨鐐瑰悗锛岃绠楁爲杈圭殑鎬绘暟

Description

鎸夌収濡備笅鏂瑰紡鏋勯€犱竴涓棤绌锋暟鍒� \(S\)銆傞€夊彇涓€涓瓧鍏稿簭鏈€灏忕殑涓夊厓缁� \((a,b,c)\) 婊¤冻 \(a,b,c \notin S\)锛屽苟涓� \(a \oplus b \oplus c = 0\)锛屽皢 \(a,b,c\) 渚濇鍔犲叆鍒板簭鍒� \(S\) 鏈熬銆傜粰瀹� \(n\) 姹傛暟鍒楃殑绗� \(n\) 椤广€�

Solution

瑙傚療鍒帮紝涓変釜鎴愮粍锛岀瓟妗堝彲浠ュ垎涓鸿嫢骞叉锛岀 \(i \ge 0\) 鐨勯暱搴︿负 \(4^{i-1}\)銆�
璁惧綋鍓嶇粍鐨勫紑澶存暟瀛椾负 \(B\)锛屽垯 \(B \sim B+4^{i-1}-1\) 閮芥槸鍒嗛厤缁� \(a\) 鐨勶紝\(B \sim B+4^{i-1} \sim B + 2 \times 4^{i-1} - 1\) 閮芥槸鍒嗛厤缁� \(b\) 鐨勶紝\(c\) 鍙互鍋锋噿鐢� \(a,b\) 姹傚嚭銆�
涓轰簡姹� \(b\)锛屽彲浠ュ皢褰撳墠鍖洪棿鍒嗘垚鍥涙锛屽垎鍒彇绗� \(1,3,4,2\) 灏忕殑 \(B \sim B+4^{i-1} \sim B + 2 \times 4^{i-1} - 1\) 鍒掑垎鎴愬洓娈靛悗鐨勫瓙鍖洪棿锛岀劧鍚庨€掑綊鍒嗘不涓嬪幓锛岀洿鍒版眰鍑恒€�
鍏跺疄 \(c\) 涔熷彲浠ョ敤绫讳技 \(b\) 鐨勬柟娉曠洿鎺ユ眰鍑猴紝鍙鎶婇『搴忔崲鎴� \(1,4,2,3\) 鍗冲彲銆�
褰撶劧涔熷彲浠ヤ笉閫掑綊锛岀洿鎺ュ啓鍏ヤ簩杩涘埗鍚勪綅鐨勫€笺€�

Description

缁欏畾鏃犲悜鍥惧拰涓€涓潈鍊煎閲嶉泦锛岀敤瀹冪粰鏃犲悜鍥惧垎閰嶈竟鏉冿紝瑕佹眰鏄叏鎺掑垪锛屾眰璺緞 \(a \to b \to c\) 鏈€鐭暱搴︺€�

Solution

鑰冭檻鍒� \(a \to b\) 鍜� \(b \to c\) 鍙兘鏈変竴娈甸噸澶嶇殑 \(b - d\)锛屾灇涓� \(d\)锛岃繖鏍峰彧闇€姹傚嚭 \(a \to d, d \to b, b \to d, d \to c\) 鐨勬渶灏忓€�
璁惧鏌愪釜 \(d\)锛�\(a-d,b-d,c-d\) 闀垮害鍒嗗埆涓� \(x,y,z\)锛屽垯鎴戜滑浼氬皢鏈€灏忕殑 \(y\) 涓竟鏉冨垎閰嶇粰 \(b-d\)锛屽墿浣欎腑鏈€灏忕殑 \(x+z\) 涓垎閰嶇粰 \(a-d,c-d\)锛屽洜姝ゅ彲浠ュ湪 \(O(1)\) 涓绠楀嚭闀垮害锛屾晠鏃堕棿澶嶆潅搴︿负 \(O(n)\)

Description

鏈変竴涓� \(n \times m\) 鐨勬柟鏍煎浘锛屾牸瀛愯鏌撴垚浜嗛粦鑹叉垨鑰呯櫧鑹层€傝鍦ㄩ噷闈㈡斁涓€浜涘崟鏋佺閾侊紝涓€涓牸瀛愬唴鍙互鏀剧疆澶氫釜纾侀搧銆�
瀹氫箟纾侀搧鐨勫惛寮曪細濡傛灉 N 涓� S 澶勫湪鍚屼竴琛�/鍒椾腑锛岄偅涔� N 浼氬悜鐫€ S 鐨勬柟鍚戠Щ鍔ㄤ竴鏍笺€�
姣忚姣忓垪鑷冲皯鏈変竴涓� S銆�
瀵逛簬姣忎釜榛戣壊鏍煎瓙锛岃嚦灏戝瓨鍦ㄤ竴涓� N 浣垮緱缁忚繃涓€绯诲垪鍚稿紩鎿嶄綔鍙互缁忚繃瀹冦€�
瀵逛簬姣忎釜鐧借壊鏍煎瓙锛屼笉瀛樺湪浠讳綍涓€涓� N 浣垮緱缁忚繃绯诲垪鍚稿紩鎿嶄綔鍙互缁忚繃瀹冦€�
姹傝嚦灏戦渶瑕佸嚑涓� N 纾侀搧銆�

Solution

瀵逛簬姣忎釜榛戣壊杩為€氬潡锛屾毚鍔涙妸姣忎釜鏍煎瓙鏀句笂 S锛岄偅涔堣繖涓繛閫氬潡涓彧瑕佹斁涓€涓� N锛岃繖涓繛閫氬潡灏� OK 浜嗐€�
涓€琛�/鍒椾腑锛屼笉鑳藉瓨鍦ㄤ袱涓笉鐩搁偦鐨勯粦鑹插潡锛堝洜涓烘瘡琛屾瘡鍒楄嚦灏戞湁涓€涓� S锛夈€�
涓€涓牸瀛愬彲浠ユ斁 S锛屽綋涓斾粎褰撳畠鏄粦锛屾垨鑰呭畠鎵€鍦ㄨ鍒楀潎娌℃湁榛戙€傚悓鏃舵垜浠姹傛瘡琛屾瘡鍒楅兘鑷冲皯鏈変竴涓� S锛屽洜姝よ繕闇€瑕佹牴鎹繖涓潯浠舵楠屼竴涓嬨€�
缁间笂鎵€杩帮紝鎴戜滑棣栧厛鍒ゆ柇姣忚/鍒椾腑鏄惁瀛樺湪涓や釜涓嶇浉閭荤殑榛戝潡锛岀劧鍚庡垽鏂浜庢瘡琛屾瘡鍒楁槸鍚﹂兘鑷冲皯瀛樺湪涓€涓綅缃弧瓒冲畠鏄粦锛屾垨鑰呭畠鎵€鍦ㄨ鍒楀潎娌℃湁榛戙€傚鏋滄垚绔嬶紝閭d箞鎴戜滑杈撳嚭榛戣壊杩為€氬潡鐨勪釜鏁板嵆鍙€�

Description

鏈変竴涓川閲忎负 \(1\) 鐨勭粏鑿屻€傛帴涓嬫潵鐨勬瘡涓€澶╋紝浼氭湁鑻ュ共涓粏鑿屽垎瑁傛垚涓や釜锛�0 $ \le $ 鍒嗚鐨勭粏鑿岀殑鏁伴噺 $ \le $ 褰撳墠鐨勭粏鑿屾暟锛夛紝涓や釜缁嗚弻鐨勮川閲忕殕涓哄師鏉ョ粏鑿岀殑涓€鍗娿€傛墍鏈夌粏鑿屽垎瑁傚畬涔嬪悗姣忎釜缁嗚弻鐨勮川閲忓闀�1銆�

缁欏嚭浣犱竴涓暣鏁� $ n $锛屾瀯閫犳柟妗堣兘澶熷湪鑻ュ共澶╁悗浣垮緱缁嗚弻璐ㄩ噺鐨勫拰绛変簬 $ n $

Solution

鍒嗚涓嶄細褰卞搷鎬昏川閲忥紝鍙細褰卞搷姝ゅ悗璐ㄩ噺澧炲姞鐨勯€熷害锛岃嫢褰撳墠鏁伴噺涓� \(x\)锛屽垯 \(x \le \Delta m \le 2x\)
浜庢槸璐績鍦板彇锛屽綋涓嶅鐨勬椂鍊欏氨灏嗕笉澶熺殑涓€娆″彇璧板嵆鍙�

Description

缁欎釜n*m鐨勭綉鏍硷紝閲岄潰涓€浜涙牸瀛愪竴寮€濮嬫槸鐧借壊(0)锛屽彟涓€浜涙槸榛戣壊(1)锛屾帴涓嬫潵缃戞牸鍙繘琛岃凯浠o紝瀵逛簬姣忔杩唬锛屾牸瀛愰噷棰滆壊鐨勫彉鍖栭伒寰互涓嬭鍒欙細鑻ヨ鏍煎瓙鏈夌浉閭绘牸瀛愮殑棰滆壊涓庝箣鐩稿悓锛屽垯棰滆壊缈昏浆锛涜嫢璇ユ牸瀛愭病鏈夌浉閭绘牸瀛愮殑棰滆壊涓庝箣鐩稿悓锛屽垯棰滆壊涓嶅彉銆傛湁t娆¤闂紝姣忔璇㈤棶閮芥湁i, j, p锛岃〃绀洪棶绗琲琛岀j鍒楁牸瀛愬湪绗琾娆¤凯浠e悗鏄粈涔堥鑹层€�

Solution

濡傛灉鐩搁偦鐨勪袱涓偣鏈変竴鏍风殑棰滆壊锛屽氨浼氬湪涓嬩竴娆℃搷浣滀腑淇濇寔鍚屾牱鐨勯鑹插苟寮€濮嬪彉鑹�
鑰冭檻姹傚嚭 \(f[i][j]\) 琛ㄧず绗� \((i,j)\) 涓偣鍦ㄥ灏戞杩唬鍚庡紑濮嬪彉鑹�
濡傛灉涓€涓牸瀛愪竴寮€濮嬪氨鑳藉彉鑹诧紝璁� \(f[i][j]=0\)锛屽惁鍒欒 \(f[i][j] = \infty\)
浠庡紑濮嬪氨鑳藉彉鑹茬殑鏍煎瓙寮€濮� BFS锛屽綋鍋氳竟鏉冧负 \(1\) 鐨勬渶鐭矾闂 BFS 鍗冲彲
澶勭悊璇㈤棶鏃讹紝濡傛灉涓€涓牸瀛愮殑 \(f[i][j]=\infty\)锛屽垯鍙栧叾鍘熷棰滆壊锛涘鏋� \(time<f[i][j]\)锛屼篃鍙栧叾鍘熷棰滆壊锛涘鏋� \(time \ge f[i][j]\)锛屽垯鑰冭檻 \(time-f[i][j]\) 鐨勫鍋舵€э紝濡傛灉鏄鏁板垯涓庡師濮嬮鑹茬浉鍙嶏紝鍋舵暟鍒欑浉鍚�

Description

缁欏畾涓€涓� \(n \times m\) 鐨勭煩闃碉紝浠� \((1,1)\) 璧板埌 \((n,m)\)锛屾瘡娆″彧鑳戒粠鏉冨€间负 \(x\) 鐨勪綅缃蛋鍒版潈鍊间负 \(x+1\) 鐨勪綅缃紝鍒濇€佷笅鍙互瀵硅嫢骞蹭釜鏍煎瓙杩涜涓€浜涙搷浣滐紝姣忔浣垮緱涓€涓牸瀛愮殑鏉冨€煎噺灏� \(1\)銆傛眰鏈€灏戣鎿嶄綔澶氬皯娆′娇寰楀瓨鍦ㄥ悎娉曠殑璺緞銆�

Solution

濡傛灉璺緞涓婄涓€涓偣鐨勬潈鍊肩‘瀹氾紝閭d箞鏁存潯璺緞鐨勬潈鍊间篃闅忎箣纭畾銆�
鍥犳鎴戜滑鏆村姏鏋氫妇绗竴涓偣鐨勬潈鍊� \(h\) 鐒跺悗 dp 鍗冲彲銆�
浠� \(f[i][j]\) 琛ㄧず鍒拌揪 \((i,j)\) 涓烘鑺辫垂鐨勬渶灏忎唬浠枫€�
濡傛灉 \(a[i][j]<h+i+j-2\)锛屽垯闈炴硶锛岀洿鎺ヤ护 \(f[i][j] \to \infty\)銆�
鍚﹀垯锛岄渶瑕佽姳璐� \(a[i][j]-h-i-j+2\)锛屼粠 \((i-1,j)\) 鎴� \((i,j-1)\) 杞Щ杩囨潵銆�

Description

缁欏畾涓€涓竟闀夸负 \(1\) 鐨勬 \(2n\) 杈瑰舰锛屾眰鑳藉绾冲畠鐨勬渶灏忕殑姝f柟褰㈢殑杈归暱銆�

Solution

鏍规嵁瀵圭О鎬у緱锛屽湪杞姩 \(\pi / 4n\) 鐨勬椂鍊欏彇寰楁瀬鍊硷紝瀹规槗楠岃瘉鍏朵负鏈€灏忓€笺€�
鑰冭檻杈归暱涓� \(1\) 鏃讹紝寮﹀績璺濅负 \(\frac {1} {2 \sin(\pi / 2n)}\)锛屼簬鏄鏂瑰舰杈归暱涓� \(2 \frac {cos(\pi / 4n)} {2 \sin(\pi / 2n)}\) = $ \frac {cos(\pi / 4n)} {\sin(\pi / 2n)}$銆�

[CF1354D] Multiset

Description

缁存姢涓€涓彲閲嶉泦銆傚垵濮嬫椂閲岄潰鏈� \(n\) 涓鏁存暟 \(\{A_1,A_2,\cdots A_n\}\)锛屽畠浠殑鍊煎煙涓� \([1,n]\)銆傜幇鍦ㄦ湁 \(q\) 涓搷浣滐紝鍏辨湁涓ょ被锛氬垹闄ゆ帓鍚嶄负 \(|k|\) 鐨勬暟瀛楋紝鑻ヤ笉瀛樺湪鎺掑悕涓� \(|k|\) 鐨勬暟瀛楋紝鍒欏拷鐣ヨ繖娆℃搷浣滐紱鍔犲叆鏁板瓧 \(k\)锛屾弧瓒� \(k\in[1,n]\)銆傝緭鍑轰换鎰忎竴涓暟鍒椾腑瀛樺湪鐨勬暟瀛楁垨鍒ゅ畾闆嗗悎涓虹┖銆�

Solution

鐢变簬鍙渶瑕佽緭鍑轰竴涓暟锛屾垜浠彲浠ヨ€冭檻閽﹀畾杈撳嚭鏈€灏忕殑閭d釜鏁般€�
浜屽垎绛旀锛屽嵆姝ゆ椂鎴戜滑纭畾浜嗘渶鍚庡墿涓嬬殑鏈€灏忕殑鏁版槸澶氬皯锛岃涓� \(mid\)锛岄偅涔堝皬浜庣瓑浜� \(mid\) 鐨勬暟鎴戜滑閮藉綋鍋� \(0\)锛屽ぇ浜� \(mid\) 鐨勬暟鎴戜滑閮藉綋鍋� \(1\)銆�

Description

缁欏畾 \(n\) 涓偣鐨勬棤鍚戝浘鍜屼竴涓暣鏁� \(k \le n\)锛岃姹傝В鍐充竴涓嬮棶棰樹腑鐨勪换浣曚竴涓細姹備竴涓ぇ灏忔伆濂戒负 \(\lceil \frac n 2 \rceil\) 鐨勭嫭绔嬮泦锛涙眰涓€涓ぇ灏忎笉瓒呰繃 \(k\) 鐨勭幆銆傚凡缁忓彲浠ヨ瘉鏄庡浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓€�

Solution

鐢变簬宸茬粡淇濊瘉浜嗗浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓紝鎴戜滑涓嶅Θ鍙� \(k=n\)锛屾鏃跺鏋滃師鍥炬槸涓€妫垫爲锛岄偅涔堟垜浠洿鎺ヤ簩鍒嗗浘鏌撹壊鍗冲彲锛涘惁鍒欙紝蹇呯劧鏈変竴涓暱搴︿笉瓒呰繃 \(n\) 鐨勭幆銆�
鑰冭檻鍘熼棶棰橈紝鎴戜滑鍙渶瑕佹壘涓€涓粨鐐规暟涓� \(k\) 鐨勮繛閫氬瓙鍥撅紙鐢变簬鍘熷浘鏄繛閫氱殑鎵€浠ユ垜浠竴瀹氳兘鎵惧埌锛夛紝瀵硅繖涓瓙鍥捐繘琛屼笂闈㈢殑姹傝В鍗冲彲銆�

Description

浣犺淇悊涓€鍫靛锛岃繖鍫靛鐢� \(N\) 涓搴︿负涓€鐨勭爾鍧楁瀯鎴愶紝鍏朵腑绗� \(i\) 鍧楃爾鐨勯珮搴︿负 \(h_i\) 銆備綘闇€瑕佹墽琛屼笅鍒楁搷浣滆杩� \(N\) 鍧楃爾鐨勯珮搴﹀彉寰楀叏閮ㄧ浉绛夈€�
1銆佷娇涓€鍧楃爾鐨勯珮搴﹀姞涓€锛岃繖闇€瑕佽姳璐� \(A\) 鐨勪唬浠枫€�
2銆佷娇涓€鍧楅珮搴︿负姝g殑鐮栫殑楂樺害鍑忎竴锛岃繖闇€瑕佽姳璐� \(R\) 鐨勪唬浠枫€�
3銆佷娇涓€鍧楅珮搴︿负姝g殑鐮栫殑楂樺害鍑忎竴锛屽彟涓€鍧楃爾鐨勯珮搴﹀姞涓€锛岃繖闇€瑕佽姳璐� \(M\) 鐨勪唬浠枫€�
缁欏畾 \(N,A,R,M\) 锛屼綘闇€瑕佹眰鍑轰娇鎵€鏈夌爾鐨勯珮搴﹀彉寰楃浉鍚岀殑鏈€灏忎唬浠枫€�

Solution

棣栧厛灏� \(M\) 瀵� \(A+R\) 鍙� \(\min\)锛岀劧鍚庝笁鍒嗙洰鏍囬珮搴︼紝鑳界敤 3 鎿嶄綔灏卞厛鐢� 3 鎿嶄綔锛屽墿涓嬬殑鐢� 2 鎿嶄綔銆�

[CF1358D] The Best Vacation - 鍙屾寚閽�

Description

涓€骞存湁 \(n\) 涓湀锛岀 \(i\) 涓湀鏈� \(a_i\) 澶╋紝鍦ㄦ瘡涓湀鐨勭 \(j\) 澶╀綘灏嗗緱鍒� \(j\) 涓嫢鎶便€備綘鎯宠鍜屾煇浜哄緟鍦ㄤ竴璧� \(x\) 澶╋紙杩炵画锛夛紝姹傛渶澶氳兘寰楀埌澶氬皯涓嫢鎶便€�

Solution

褰撴垜浠€夋嫨鐨勭粨灏炬槸涓€涓湀鐨勬渶鍚庝竴澶╂椂锛屾樉鐒朵笉浼氫娇寰楃瓟妗堟洿鍔o紝鍥犳鎴戜滑鏋氫妇閫夋嫨鐨勭粨灏炬槸鍝竴澶╋紝杩欐牱鍙兘鐨勬儏鍐靛彧鏈� n 绉嶏紝棰勫鐞嗗墠缂€鍜屽悗鐢ㄥ弻鎸囬拡缁存姢鍗冲彲銆�

Description

姹� \(l,r\) 浣垮緱 \(\sum_{l \le i \le r} a_i - \max_{l \le i \le r} a_i\) 鏈€澶у寲銆�\(|a_i| \le 30\)

Solution

鑰冭檻鏋氫妇鍒犻櫎鐨勬暟鐨勫ぇ灏� \(val\)锛岄偅涔堢幇鍦ㄥ彧鏈� \(a_i \le val\) 鐨勬暟鎵嶆槸鍙敤鐨勶紝杩欐牱鍘熷簭鍒楀氨琚垎鍓叉垚浜嗚嫢骞叉锛岄€夋嫨涓嶈兘璺ㄦ銆�
鍋囧鐩搁偦鐨勪袱涓笉鍙敤浣嶇疆鏄� \(p,q\)锛岄偅涔堝彲鐢ㄥ尯闂村氨鏄� \([p+1,q-1]\)锛屽湪鍓嶇紑鍜屽簭鍒椾笂鐨勯€夋嫨浣嶇疆灏辨槸 \([p,q-1]\)銆�
鎴戜滑鑰冭檻鎵弿鍥哄畾涓€涓乏绔偣锛屽彸绔偣涓嶆柇鍚戝彸骞崇Щ锛屽鏋滅疮绉拰灏忎簬闆跺垯缃负 \(0\)锛屽悓鏃朵笉鏂洿鏂扮瓟妗堬紝閬囧埌涓嶅彲鐢ㄧ偣鏃讹紝灏嗙疮绉拰缃负 \(0\) 骞惰烦杩囥€�

Description

姹傛湁澶氬皯鍗曡皟閫掑鐨勬暟鍒� \(a_1,a_2,...,a_n\)锛屽浜庝换鎰忎竴涓� \(x\) 閮芥弧瓒筹紝瀵逛簬浠绘剰涓€绉嶆帓鍒� \(p\)锛岄兘鏈� \(x \mod a_{p_1} \mod a_{p_2} \mod ... \mod a_{p_n} = Const\) 鎴愮珛銆�

Solution

棣栧厛鑰冭檻鍙湁涓や釜鏁扮殑鎯呭喌锛�\(x \mod a \mod b = x \mod b \mod a\) 鎴愮珛褰撲笖浠呭綋 \(a,b\) 涓ぇ鐨勬槸灏忕殑鐨勫€嶆暟銆�
鐚滄兂搴忓垪涓换浣曚竴涓暟蹇呴』鏄渶灏忔暟鐨勫€嶆暟銆傚厖鍒嗘€ф槸鏄剧劧鐨勩€�
鍋囪鏈変竴涓暟涓嶆槸鏈€灏忔暟鐨勫€嶆暟锛岄偅涔堝皢鍏朵粬鏄€嶆暟鐨勬暟鎵撴垚涓€涓暣浣擄紝涓€浜涙槸鍊嶆暟鐨勬暟鐨勮繛缁鐞嗘湰璐ㄤ笂绛変环浜庡鏈€灏忕殑閭d釜鏁板彇妯★紝鍥犳杞寲涓轰笂闈㈠彧鏈変袱涓暟鐨勬儏鍐点€傝繖鏍峰氨鍙嶈瘉浜嗕竴涓暟涓嶆槸鏈€灏忔暟鐨勫€嶆暟鐨勬儏鍐垫槸涓嶅瓨鍦ㄧ殑锛屼笉姝竴涓暟鐨勬儏鍐靛悓鐞嗐€�
鎴戜滑鏋氫妇搴忓垪涓殑鏈€灏忔暟 \(i\)锛岄偅涔堝畠鐨勫€嶆暟鏈� \([n/i]-1\) 涓紝鎴戜滑瑕佷粠杩欎簺涓€夊嚭 \(k-1\) 涓紝鏆村姏璁$畻缁勫悎鏁板嵆鍙€�

Description

缁欏畾鍥涗釜姝f暣鏁� \(n,m,a,b\)锛屾瀯閫犳弧瓒虫潯浠剁殑 \(n \times m\) 鐭╅樀锛氱煩闃垫瘡琛屽寘鍚� \(a\) 涓� \(1\)锛岀煩闃垫瘡鍒楀寘鍚� \(b\) 涓� \(1\)锛岀煩闃靛墿涓嬬殑浣嶇疆鍏ㄤ负 \(0\)銆�

Solution

褰撲笖浠呭綋 \(na=mb\) 鏃讹紝鍙互鏋勯€犲嚭绗﹀悎瑕佹眰鐨勭煩闃点€傛瀯閫犳椂鎴戜滑鍙渶瑕佹寜琛屽垪鍒嗗埆寰幆鍗冲彲銆�

Description

涓€鍏辨湁 \(2^m\) 涓暱搴︿负 \(m\) 鐨� 01 瀛楃涓诧紝姹備粠涓垹鍘� \(n\) 涓悗锛屾眰鍓╀笅 \(2^m-n\) 涓簩杩涘埗鏁版寜鐓у瓧鍏稿簭鎺掑簭鍚庣殑涓綅鏁般€傝嫢鏈夊伓鏁颁釜鏁帮紝鍒欏彇涓棿闈犲乏鐨勬暟浣滀负杩� \(2^m -n\) 涓簩杩涘埗鏁扮殑涓綅鏁般€�\(T \le 1000, n \le 100, m \le 60\)

Solution

妯℃嫙涓€涓� Kth 鐨勮繃绋嬶紝鏄剧劧 \(k=[\frac {n+1} 2]\)锛屼粠楂樺埌浣庢灇涓句緷娆$‘瀹氬悇浣嶏紝鍋囪鐜板湪鏋氫妇鍒颁簡绗� \(p\) 浣嶏紝妫€鏌ョ \(p\) 浣嶄负 \(0\) 鏃舵暟瀛楃殑涓暟锛屽鏋滀釜鏁� \(\le k\) 鍒欏皢绗� \(p\) 浣嶅畾涓� \(0\)锛屽惁鍒欏畾涓� \(1\) 骞跺噺鍘昏繖涓凡缁忕粺璁″嚭鐨勪釜鏁�
鏃堕棿澶嶆潅搴� \(O(Tnm^2)\)锛屽叾瀹炰篃鍙互鐢ㄤ綅杩愮畻鍘嬪埌 \(O(Tnm \log m)\)

[CF1363D] Guess The Maximums

Description

缁欏畾搴忓垪 \(a\) 鐨勯暱搴� \(n\) 鍜� \(k\) 涓簰涓嶇浉浜ょ殑瀛愰泦 \(S_i\)锛屾瘡娆℃煡璇㈠彲浠ヨ緭鍑轰竴浜涗笅鏍� \(q_1,q_2,...,q_c\) 骞跺緱鍒板簭鍒椾腑杩欎簺浣嶇疆鐨勬暟鐨勬渶澶у€笺€傚姣忎釜瀛愰泦 \(S_i\)锛屾眰鍑哄簭鍒� a 涓笉鍦ㄨ瀛愰泦涓嬫爣鑼冨洿鍐呯殑鏈€澶у€笺€�

Solution

閫氳繃涓嶈秴杩� 11 娆¤闂壘鍑哄簭鍒椾腑鏈€澶у€肩殑涓嬫爣 m锛屽惈鏈� m 鐨勫瓙闆嗘樉鐒跺彧鏈変竴涓� \(S_x\)锛屽垯瀵逛换鎰� \(S_i, i \neq x\) 鍏剁瓟妗堟樉鐒朵负 m锛屽浜� \(S_x\)锛屾垜浠墜鍔ㄦ眰涓€娆′笉鍦ㄨ瀛愰泦鍐呯殑鏈€澶у€煎嵆鍙€�

Description

缁欏畾涓€妫垫爲锛屾瘡涓偣鏈変竴涓唬浠� \(a_i\)锛屼竴涓垵濮嬪€� \(b_i\) 鍜屼竴涓洰鏍囧€� \(c_i\)锛屾瘡娆″彲浠ラ€夋嫨浠� \(u\) 涓烘牴鐨勫瓙鏍戯紝閫夋嫨涓€涓� \(k\) 骞堕€夋嫨瀛愭爲涓� \(k\) 涓粨鐐逛氦鎹㈠叾鍊硷紝浠d环 \(k \cdot a_u\)銆傛眰鏈€灏忎唬浠枫€�

Solution

鏍戜笂鍓嶇紑 \(\min\) 鍚庯紝鏄剧劧瀵逛簬浠绘剰涓や釜闇€瑕佷氦鎹㈢殑鐐规垜浠敤涓斿彧浼氱敤瀹冪殑 LCA 澶勬潵浣滀负浜ゆ崲鎿嶄綔鐨勬牴銆�
鍥犳鎴戜滑鍙渶瑕佹妸鏁存5鏍� DFS 涓€閬嶏紝鍦ㄦ瘡涓偣澶勮椽蹇冧氦鎹㈡墍鏈夎兘浜ゆ崲鐨勶紝鍓╀綑鐨勪笂浼犲嵆鍙€�

Description

缁欏畾 \(n\) 涓偣鐨勬棤鍚戝浘鍜屼竴涓暣鏁� \(k \le n\)锛岃姹傝В鍐充竴涓嬮棶棰樹腑鐨勪换浣曚竴涓細姹備竴涓ぇ灏忔伆濂戒负 \(\lceil \frac n 2 \rceil\) 鐨勭嫭绔嬮泦锛涙眰涓€涓ぇ灏忎笉瓒呰繃 \(k\) 鐨勭幆銆傚凡缁忓彲浠ヨ瘉鏄庡浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓€�

Solution

鐢变簬宸茬粡淇濊瘉浜嗗浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓紝鎴戜滑涓嶅Θ鍙� \(k=n\)锛屾鏃跺鏋滃師鍥炬槸涓€妫垫爲锛岄偅涔堟垜浠洿鎺ヤ簩鍒嗗浘鏌撹壊鍗冲彲锛涘惁鍒欙紝蹇呯劧鏈変竴涓暱搴︿笉瓒呰繃 \(n\) 鐨勭幆銆�
鑰冭檻鍘熼棶棰橈紝鎴戜滑鍙渶瑕佹壘涓€涓粨鐐规暟涓� \(k\) 鐨勮繛閫氬瓙鍥撅紙鐢变簬鍘熷浘鏄繛閫氱殑鎵€浠ユ垜浠竴瀹氳兘鎵惧埌锛夛紝瀵硅繖涓瓙鍥捐繘琛屼笂闈㈢殑姹傝В鍗冲彲銆�

[CF1365E] Maximum Subsequence Value - 璐績

Description

缁欏嚭涓€涓暱搴︿负 \(n\) 鐨勬暟鍒� \(a\)锛屼綘闇€瑕侀€夊嚭涓€涓瓙搴忓垪锛屼娇鍏朵环鍊兼渶澶э紝杈撳嚭鏈€澶х殑浠峰€笺€傚浜庝竴涓暱搴︿负 \(k\) 鐨勫瓙搴忓垪锛岃嫢鍦ㄨ繖涓瓙搴忓垪涓湁涓嶅皯浜� \(\max(1,k-2)\) 涓暟鐨勪簩杩涘埗浣� \(i\) 涓婃槸 \(1\)锛屽垯鍏朵环鍊煎鍔� \(2^i\)銆�

Solution

鑰冭檻褰� \(k \le 3\) 鏃讹紝閫夋嫨鎵€鏈夌殑鏁颁竴瀹氭渶浼樸€�
褰� \(k > 3\) 鏃讹紝鐢变簬閫夋嫨鐨勬暟姣忓鍔犱竴涓紝姣忎竴浣嶈浜х敓璐$尞瑕佹眰鐨勬暟鐨勪釜鏁颁篃浼氬鍔犱竴涓紝杩欐牱鏃犺濡備綍閮戒笉浼氬彉寰楁洿浼橈紝鍥犳鎴戜滑鍙渶瑕佹灇涓鹃€夋嫨涓変釜鏁板嵆鍙€�
鎹㈣█涔嬶紝绠€鍗曞湴璇达紝褰撲笖浠呭綋 \(k \le 3\) 鏃舵垜浠槸鍦ㄥ仛鎴栬繍绠椼€�

Description

缁欏畾涓や釜闀垮害涓� \(n\) 鐨勬暟缁� \(a,b\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(k\)锛屼氦鎹� \(a\) 涓殑闀垮害涓� \(k\) 鐨勫悗缂€涓庨暱搴︿负 \(k\) 鐨勫墠缂€銆傛眰鏄惁鑳介€氳繃鑻ュ共娆℃搷浣滀娇寰� \(a,b\) 瀹屽叏鐩稿悓銆�

Solution

瑙傚療鍒颁换鎰忔搷浣滀腑锛屾墍鏈夋棤搴忓 \((a_i,a_{n-i+1})\) 鏋勬垚鐨勯泦鍚堟槸涓嶅彉鐨勩€傚苟涓旀垜浠彲浠ラ€氳繃澶氭鎿嶄綔鏉ュ疄鐜板浠绘剰涓€瀵� \(a_i,a_{n-i+1}\) 鐨勫璋冿紝鎴栨槸瀵规棤搴忓 \((a_i,a_{n-i+1})\),\((a_j,a_{n-j+1})\) 鐨勪綅缃簰鎹€€�
鍥犳锛屽彧闇€瑕佸垽鏂墍鏈夋棤搴忓 \((a_i,a_{n-i+1})\) 鏋勬垚鐨勯泦鍚堟槸鍚︾浉绛夊嵆鍙€�

Description

鏈� \(n\) 涓闂紝姣忔缁欏畾涓€涓暟 \(a \le 10^7\)锛屾眰鍏舵槸鍚﹀瓨鍦ㄤ袱涓笉涓� \(1\) 鐨勪笉鍚屽洜瀛� \(d_1,d_2\) 婊¤冻 \((d_1+d_2,a)=1\)銆�

Solution

璁� \(x=p_1^{q_1} p_2^{q_2} ... p_k^{q_k}\)$锛屽垯 \(k=1\) 鏃舵樉鐒舵棤瑙o紝鑰冨療 \(k>1\) 鏃讹紝鍒╃敤鍙嶈瘉娉曞彲浠ヨ瘉鏄庝护 \(a=p_1^{q_1}, b=p_2^{q_2} ... p_k^{q_k}\)锛屽垯涓€瀹氭弧瓒� \((a+b,x)=1\)銆�
浜庢槸闂杞寲涓哄鎵句竴涓暟鐨勬渶灏忚川鍥犲瓙銆�

Description

缁欏畾涓€涓暱涓� \(n\) 鐨勫簭鍒� \(a_i\) 鍜屼竴涓暱涓� \(m \le n\) 鐨勪弗鏍间笂鍗囧簭鍒� \(b_i\)锛岃姹傚皢 \(a_i\) 鍒掑垎涓� \(m\) 娈碉紝绗� \(i\) 娈电殑鏈€灏忓€兼伆濂戒负 \(b_i\)锛屾眰鍒掑垎鏂规鏁般€�

Solution

鍏抽敭鍦ㄤ簬濡備綍鍒╃敤 \(b_i\) 涓ユ牸涓婂崌杩欎釜鏉′欢銆�
鑰冭檻姹傚嚭 \(a_i\) 搴忓垪鐨勫悗缂€鏈€灏忓€� \(f_i\)锛岄偅涔堝浜庝换鎰忎綅缃� \(i\)锛屽鏋滄垜浠璁╁畠浣滀负绗� \(j\) 娈电殑棣栧厓绱狅紝閭d箞蹇呴』瑕佹弧瓒� \(f_i=b_j\)锛屽洜涓� \(b_j\) 蹇呴』瑕佸湪鍚庨潰杩欎簺鏁颁腑鑷冲皯鍑虹幇涓€娆★紝骞朵笖蹇呴』鏄悗闈㈣繖浜涙暟涓渶灏忕殑鏁般€�

Description

缁欏畾涓€涓簭鍒楋紝鍙互杩涜鑻ュ共娆℃搷浣滐紝姣忔灏嗕竴涓暟璋冨埌寮€澶存垨鑰呰皟鍒版渶鍚庛€傛眰灏嗗簭鍒楁帓搴忕殑鏈€灏忔鏁般€備繚璇佸簭鍒椾腑鏁板瓧浜掍笉鐩稿悓銆�

Solution

鍏堢鏁e寲鎴愭帓鍒楋紝鐒跺悗鍙戠幇锛屼笉鍔ㄧ殑鏁板氨鏄師鎺掑垪涓殑鏈€闀胯繛缁笂鍗囧瓙搴忓垪銆�
鍏呭垎鎬ф槸鏄剧劧鐨勩€�
鑰冭檻蹇呰鎬э紝瀵逛簬浠绘剰涓€绉嶆搷浣滄柟妗堬紝閭d簺娌℃湁琚搷浣滅殑鏁板繀鐒朵細鏋勬垚鍘熸帓鍒椾腑鐨勬渶闀胯繛缁笂鍗囧瓙搴忓垪锛屽洜涓鸿繖浜涙暟娌¤绉诲姩浠栦滑鏈€鍚庡繀鐒舵槸杩炲湪涓€璧风殑銆�

Description

涓€涓骇鍒负 \(1\) 鐨� RDB 鏄竴涓崟鐙殑鑺傜偣銆�

鎺ョ潃锛屽浜庢墍鏈� \(i > 1\)锛岀骇鍒负 \(i\) 鐨� RDB 鐨勬瀯鎴愭柟娉曞涓嬨€�

鍏堟眰鍑虹骇鍒负 \(i-1\) 鐨� RDB锛岀劧鍚庡浜庤 RDB 涓殑姣忎釜鑺傜偣 \(x\)銆�

  • 濡傛灉 \(x\) 娌℃湁瀛╁瓙锛岄偅涔堢粰浠栧姞涓婁竴涓瀛愩€�
  • 濡傛灉 \(x\) 鍙湁涓€涓瀛愶紝閭d箞缁欎粬鍔犱笂涓や釜瀛╁瓙銆�
  • 濡傛灉 \(x\) 宸茬粡鏈変簡瓒呰繃涓€涓瀛愶紝閭d箞鎴戜滑璺宠繃鑺傜偣 \(x\)銆�

鎺ヤ笅鏉ワ紝鎴戜滑瀹氫箟涓€涓� claw 锛堣涓嬪浘锛夛紝瀹冧篃鏄竴妫靛叿鏈夌壒娈婃€ц川鐨勬爲锛屽苟涓斿皢鑺傜偣 \(1\) 绉颁负杩欎釜 claw 鐨勪腑蹇冿紝鍏朵粬鐨勭О涓哄簳閮ㄨ妭鐐广€�
鐜板湪锛岀粰鍑轰竴涓骇鍒负 \(n\) 鐨� RDB锛屽垵濮嬫椂浠栦笂闈㈢殑鎵€鏈夎妭鐐归兘涓虹豢鑹诧紝浣犲彲浠ヨ繘琛屼竴浜涙搷浣溿€�

瀵逛簬姣忔鎿嶄綔锛屼綘闇€瑕佸湪缁欏嚭鐨� RDB 涓壘鍒颁竴涓� claw锛屾弧瓒虫墍鏈夊簳閮ㄨ妭鐐瑰湪 RDB 涓兘鏄腑蹇冭妭鐐圭殑鍎垮瓙锛屼笖杩欏洓涓妭鐐瑰湪 RDB 涓兘鏄豢鑹层€傜劧鍚庡皢杩欏洓涓妭鐐规煋涓洪粍鑹层€�

闂渶澶氬彲浠ュ皢澶氬皯涓妭鐐规煋鎴愰粍鑹层€�

Solution

瀹规槗鎵惧埌涓€涓€掓帹鍏崇郴锛�\(n\) 闃舵爲鐨勬牴缁撶偣鐨勪笁涓瓙鑺傜偣瀵瑰簲鐨勫瓙鏍戯紝鍏跺垎鍒负 \(n-1,n-2,n-2\) 闃剁殑鏍戯紝骞朵笖锛屽綋 \(3|n\) 鏃讹紝鏍圭粨鐐规椂琚€夋嫨鐨勶紝鍏跺畠鎯呭喌涓嬫牴缁撶偣鏄笉琚€夋嫨鐨勩€�
鍥犳鎴戜滑寰堝鏄撳緱鍒伴€掓帹鍏崇郴 \(f_n = f_{n-1} + 2f_{n-2} + 4[3|n]\)

Description

缁欏畾闀垮害涓� \(n\) 鐨勬暟鍒楋紝鍦ㄥ叾鎵€鏈夐暱搴︿负 \(k\) 鐨勫瓙搴忓垪涓紝姹傛渶灏忕殑鏉冨€兼槸澶氬皯銆備竴涓瓙搴忓垪鐨勬潈鍊煎畾涔変负鍏跺鏁颁綅缃渶澶у€煎拰鍋舵暟浣嶇疆鏈€澶у€间箣闂寸殑鏈€灏忓€笺€�

Solution

鑰冭檻浜屽垎绛旀锛岀幇鍦ㄥ鏋滄垜浠姹傝繖涓渶灏忓€� \(\le mid\)锛屼篃灏辨槸瑕佹眰涓や釜鏈€澶у€间腑鑷冲皯鏈変竴涓� \(\le mid\)銆�
鍥犳妫€楠屾椂锛屾垜浠彧闇€瑕佸垎鍒鏌ヤ竴閬嶅鏁板拰鍋舵暟鐨勬儏鍐靛嵆鍙€�

Description

缁欏畾涓や釜 0-1 涓� \(S,T\)锛屾瘡娆℃搷浣滀綘鍙互閫夋嫨 \(S\) 鐨勪竴涓瓙搴忓垪锛屽皢鍏跺惊鐜Щ浣嶄竴鏍硷紝姹傛渶灏戞搷浣滃灏戞鑳藉皢 \(S\) 鍙樻垚 \(T\)銆�

Solution

鍘绘帀閭d簺宸茬粡鐩稿悓鐨勯儴鍒嗭紝瀵逛簬鍓╀笅鐨勶紝鎴戜滑鍦ㄤ竴娆℃搷浣滀腑鏄剧劧浼氫氦鏇块€夋嫨閭d簺 1 鍙� 0 鍜� 0 鍙� 1 鐨勪綅缃紝閭d箞闇€瑕佺殑鏈€灏忔鏁板氨鏄竴涓尯闂村唴 1 鍙� 0 鍜� 0 鍙� 1 鐨勪綅缃殑鏁扮洰宸殑缁濆鍊肩殑鏈€澶у€笺€�

Description

缁欏畾涓€涓暱搴︿负濂囨暟 \(n\) 鐨勭幆褰㈠簭鍒楋紝杩涜鑻ュ共娆℃搷浣滐細閫夋嫨 \(i\)锛屽皢鍏舵浛鎹负 \(a_{i-1}+a_{i+1}\)锛屽苟鍒犻櫎 \(a_{i-1},a_{i+1}\)銆傛渶鍚庡墿涓嬩竴涓暟銆傛眰鏈€鍚庡墿涓嬬殑鏁扮殑鏈€澶у€笺€�

Solution

鎵捐寰嬪彂鐜帮紝浼氬绛旀浜х敓璐$尞鐨勶紝涓€瀹氭槸绗� \(...,i-4,i-2,i,i+1,i+3,i+5,...\) 涓暟鐨勫拰銆�
鏆村姏鏋氫妇 \(i\)锛屽墠闈㈠彧鍙栧鍋舵€т笌 \(i\) 鐩稿悓鐨勶紝鍚庨潰鍙彇濂囧伓鎬т笌 \(i\) 涓嶅悓鐨勶紝鏈€鍚庡彇鏈€澶у€煎嵆鍙€�

Description

瀵� \(n \le 150, k \le 9\)锛屾眰鏈€灏忕殑闈炶礋鏁存暟 \(x\) 婊¤冻 \(f(x)+f(x+1)+...+f(x+k)=n\)锛屽叾涓� \(f(x)\) 琛ㄧず \(x\) 鐨勫悇涓暟浣嶇殑鍜屻€�

Solution

姣忓鍔犱竴浣嶆暟锛屾暟瀛楀ぇ灏忕殑澧為暱鏄寚鏁扮殑锛岃€� \(f\) 鍊肩殑澧為暱鏄嚎鎬х殑銆�

姣斿 $k=1$ 鏃讹紝$f(8)+f(9)=17$锛岃€� $f(80)+f(81)=17$锛�$f(98)+f(99)=35$锛岃€� $f(980+981)=35$
鐚滄兂鎴戜滑鍙互灏嗘墍鏈夊悎娉曠殑 $n$ 琛ㄧず鎴� $f(x)+...+f(x+k)$ 鐨勫舰寮忥紝涓斾竴瀹氭湁 $a99..99bc$ 杩欐牱褰㈠紡鐨� $x$ 婊¤冻鏉′欢锛屾湰璐ㄤ笂鎴戜滑鐩稿綋浜庢毚鍔涙灇涓句簡 $x$ 鐨勯暱搴︼紝鏈€楂樹綅锛屾渶浣庝簩浣嶇殑鍊硷紝灏嗗畠琛ㄧず涓� $i \times 10^j - l$锛屾灇涓� $i,j,l$锛堣竟鐣屼笉澶т細璇佹槑锛� ### Description 缁欏畾涓€涓暱搴︿负 $n$ 鐨勬暟鍒楋紝鍙互杩涜涓嶈秴杩� $2n$ 娆℃搷浣滐紝姣忔鍙互閫夋嫨涓€涓綅缃紝灏嗗畠鐨勫€艰涓哄綋鍓嶆暣涓暟鍒楃殑 mex銆傛瀯閫犱竴绉嶆搷浣滄柟妗堬紝浣垮緱鏁翠釜鏁板垪鐨勫€煎崟璋冧笉闄嶃€� ### Solution 鎴戜滑鑰冭檻灏嗘暣涓暟鍒楀仛鎴� $0,1,2,...,n-1$ 鐨勫舰寮忋€傛垜浠粰鍑轰竴绉嶆瀯閫犳柟妗堜娇寰楄兘鍦ㄤ笉瓒呰繃 $2n$ 姝ュ唴灏嗕换浣曚竴涓簭鍒楀仛鎴愯繖绉嶅舰寮忋€� 褰撴暣涓暟鍒楃殑 mex 灏忎簬 n 鏃讹紝鎵ц A 绫绘搷浣滐紝鍗冲皢 $a[mex+1]$ 璧嬪€间负 $mex$锛涘惁鍒欙紝鎵ц B 绫绘搷浣滐紝浠绘剰鎵句竴涓笉婊¤冻 $a[i]=i-1$ 鐨勪綅缃紝灏� $a[i]$ 璧嬪€间负 $mex=n$銆� 鏄剧劧姣忎竴涓� B 绫绘搷浣滃悗涓€瀹氱揣璺熺潃涓€涓� A 绫绘搷浣滐紝鑰屼竴涓� A 绫绘搷浣滀細鎼炲畾涓€涓綅缃紝骞朵笖杩欎釜浣嶇疆浠ュ悗鍐嶄篃涓嶄細琚搷浣滃埌銆� ### Description 鏈� $m$ 绉嶇墿鍝侊紝姣忕鐗╁搧绗竴娆′拱浠峰€间负 $a_i$锛屼互鍚庢瘡娆′拱閮芥槸 $b_i$銆傛眰涔� $n$ 浠剁墿鍝佺殑鏈€澶ф€讳环鍊笺€�$n \le 10^9, m \le 10^5$ ### Solution 瀹规槗璇佹槑锛屾渶澶氬彧閲嶅鎷夸竴绉嶈姳锛屼竴瀹氫笉浼氭洿鍔� 鍋囪鎵€鏈夎姳宸茬粡鎸夌収 $a$ 闄嶅簭鎺掑垪 璁捐繖绉嶈姳鏄 $i$ 绉嶏紝鍒欐墍鏈夎鍗曟閫夋嫨鐨� $j$ 涓€瀹氭弧瓒� $a_j > b_i$锛堢瓑鍙峰彲鍙栧彲涓嶅彇锛� 鏁呭彧闇€姹傚嚭婊¤冻 $a_j > b_i $ 鐨� $a_j$ 涓墠锛堜笉瓒呰繃锛� $k-1$ 澶х殑鍜� 鍦ㄥ墠缂€鍜屽簭鍒椾笂浜屽垎瀹炵幇锛屾敞鎰忓鏋滀簩鍒嗗嚭鐨勯€夋 $[1,pos]$ 涓寘鍚簡 $i$锛屽垯鑻� $posb[i]$ 闇€瑕佸皢 $pos$ 棰濆 $+1$ ### Description 鑰冭檻 $[0,n+1]$ 涔嬮棿鐨勬墍鏈夋暣鐐癸紝浣犺浠� $0$ 璧板埌 $n+1$锛屾瘡绉掗挓鍙互浠� $x$ 璧板埌 $x+1$ 鎴栬€呬笉鍔ㄣ€傛瘡涓綅缃湁涓€涓珮搴� $h_i$锛屾瘡涓椂鍒绘湁涓€涓珮搴� $p_t$锛堝湪 $[0,k]$ 涔嬮棿鍧囧寑寰幆锛�$0,1,...,k-1,k,k-1,...,1,0,...$锛夈€傚鏋� $h_i+p_t>l$ 鍒欏け璐ャ€傞棶鏄惁鑳借蛋鍒� $n+1$銆� ### Solution 濡傛灉涓€涓偣姘歌繙鏄畨鍏ㄧ殑锛岄偅涔堝氨绉板畠涓哄畨鍏ㄧ偣銆傚湪姣忎釜瀹夊叏鐐癸紝鎴戜滑鍙互鏆村姏绛夊埌浠讳綍涓€涓椂鍒诲啀寰€鍚庤蛋锛屽洜姝ゆ暣涓繃绋嬭瀹夊叏鐐瑰垎鎴愪簡鑻ュ共娈碉紝鎴戜滑鍙渶瑕佽€冭檻鐩搁偦涓や釜瀹夊叏鐐逛箣闂寸殑鐐广€� 鎴戜滑鑰冭檻褰撳墠鍗冲皢璧板埌浣嶇疆 $i$ 骞朵笖褰撳墠鐨勬氮楂樹负 $tide$锛屽鏋� $dep_i+tide>l$ 閭d箞鏄剧劧鎴戜滑闇€瑕佺瓑寰� $\Delta=dep_i+tide-l$ 鐨勬椂闂磋娴疆鎺ョ潃涓嬮檷锛屼簬鏄护 $tide \leftarrow tide-\Delta$锛岃嫢 $<0$ 鍒欓潪娉曘€� 杩欓噷鍏抽敭鏄繖绉嶆柟妗堢殑缁撹瀵逛簬闈炴硶鎬ф潵璇翠负浠€涔堟槸蹇呰鐨勩€傚洜涓哄湪涓婁竴涓畨鍏ㄧ偣涔嬪悗锛屾垜浠鐞嗙殑鎵€鏈夌偣閮戒笉鑳界鍒版渶楂樹簡閭d釜浣嶇疆锛屾墍浠ユ湰璐ㄤ笂涓€浜涜繛缁殑闈炲畨鍏ㄧ偣蹇呴』瑕佸湪涓€涓氮娼潵鍥炵殑杩囩▼涓澶勭悊瀹屻€� ### Description 缁欏畾涓€妫垫爲锛屾爲涓婃瘡涓粨鐐瑰垰寮€濮嬫湁涓€涓汉锛岀幇鍦ㄦ瘡涓汉闇€瑕佽蛋鍒颁竴涓笉鍚屼簬鍘熸潵鐨勭粨鐐癸紝骞朵笖蹇呴』淇濊瘉姣忎釜缁撶偣涓婁粛鐒舵湁涓斾粎鏈変竴涓汉锛屽湪鏍戜笂璧颁竴鏉¤竟鐨勪唬浠蜂负 $1$锛屾眰鏈€灏忎唬浠枫€� ### Solution 鑰冭檻杩欐牱涓€涓繃绋嬶紝鎴戜滑閫掑綊澶勭悊鎺夎繖妫垫爲涓婄殑鎵€鏈夊彾瀛愮粨鐐癸紝濡傛灉瀹冧滑杩樻病鏈夌Щ鍔ㄧ殑璇濓紝灏嗗畠鍜屽畠鐨勭埗浜叉崲锛屾鏃朵唬浠峰鍔� $2$锛岀劧鍚庡垹闄よ繖涓粨鐐广€傞噸澶嶄笅鍘伙紝鐩村埌鏍戜负绌恒€傛敞鎰忓綋鍙墿涓嬫牴缁撶偣鐨勬椂鍊欙紝瀹冨鏋滄病鏈夎鎹㈣繃锛岄偅鎴戜滑鍙渶瑕佹寫瀹冪殑浠绘剰涓€涓瀛愯窡瀹冩崲鍗冲彲銆� ### Description 鏈夐暱搴︿负 $n$ 鐨勪袱涓暟缁� $a$ 鍜� $b$ 銆備竴寮€濮嬶紝绛旀 $ans$ 绛変簬 $0$ 銆傜幇鍦ㄦ垜浠畾涔夊涓嬫搷浣滐細閫夋嫨涓€涓綅缃� $i$ $(1\leq i \leq n)$锛涜 $ans$ 澧炲ぇ $a_i$锛涘鏋� $b_i \neq -1 $ 灏卞皢 $a_{b_i}$ 澧炲ぇ $a_i$銆傚鏋滄瘡涓€涓� $i$ $(1\leq i \leq n)$ 鍙兘閫変竴娆★紝璇烽棶 $ans$ 鏈€澶ф槸澶氬皯锛� 骞剁粰鍑� $ans$ 鏈€澶ф椂閫夋嫨 $i$ 鐨勯『搴忋€� ### Solution 瀵规瘡涓《鐐圭畻涓€涓疮绉€� $f[i]$锛屽鏋� $f[i]>0$ 灏卞悜涓婃洿鏂般€� 鏈€鍚庢壂涓€閬嶏紝瀵逛簬涓€涓偣鐨勬墍鏈夊瀛愶紝鍏堣蛋閭d簺 $f[i]>0$ 鐨勶紝鍐嶈蛋鏍癸紝鏈€鍚庤蛋閭d簺 $f[i]<0$ 鐨勩€� ### Description 鏈� $n$ 瀵圭嚎娈碉紝鍒濇€佷笅姣忓鐨勭涓€鏉¢兘鏄� $[l_1,r_1]$锛岀浜屾潯閮芥槸 $[l_2,r_2]$銆傚畾涔夋€讳氦闆嗛暱搴︿负姣忓绾挎鐨勪氦闆嗛暱搴︿箣鍜屻€傚彲浠ヨ姳璐逛唬浠� $1$ 鏉ュ欢闀夸竴鏉$嚎娈碉紝寰€宸︽垨寰€鍙冲欢浼� $1$ 涓崟浣嶃€傛眰浣垮緱鎬讳氦闆嗛暱搴﹀埌杈� $k \le 10^9$ 鐨勬渶灏忎唬浠枫€� ### Solution 瀵逛簬涓€瀵圭嚎娈� $[l_1,r_1],[l_2,r_2]$锛岀О $[\min(l_1,r_1), \max(l_2,r_2)]$ 涓鸿繖涓嚎娈靛鐨勮竟鐣岀嚎娈点€傝嫢 $[l_1,r_1] \bigcup [l_2,r_2] = [\min(l_1,r_1), \max(l_2,r_2)]$锛屽垯绉拌繖涓嚎娈靛鏄繛缁殑銆� 鑰冭檻涓€涓嚎娈靛涓庡畠鐨勮竟鐣岀嚎娈典箣闂寸殑鍏崇郴锛屾樉鐒剁嚎娈靛鐨勫疄闄呴暱搴﹀拰涓庡畠鐨勮竟鐣岀嚎娈电殑闀垮害涔嬮棿瀛樺湪涓€涓樊鍊硷紝濡傛灉鐩镐氦鍒欒繖涓樊鍊间负姝o紝鐩哥鍒欒繖涓樊鍊间负璐熴€� 灏嗕竴涓嚎娈靛閫氳繃鏈€灏忕殑姝ユ暟鎿嶄綔锛屼娇寰楀畠鐨勫苟闆嗙瓑浜庡畠鐨勮竟鐣岀嚎娈碉紝杩欎釜杩囩▼绉颁负濉弧涓€涓嚎娈点€� 鎴戜滑鏆村姏鏋氫妇瑕佸~婊� $i$ 涓嚎娈靛锛岃繖鏃惰嫢鎴戜滑鍙湪杩欎簺琚€夋嫨濉弧鐨勭嚎娈靛涓婃搷浣滃氨鍙互瀹屾垚鐩爣锛岃姳璐圭殑浠d环鏄� $k-id$锛屽叾涓� $d$ 鏄笂杩扮殑宸€硷紱鍚﹀垯锛屽湪 $k-id$ 涔嬪锛屾垜浠繕闇€瑕侀澶栬姳璐� $k-is$ 鐨勪唬浠凤紝鍏朵腑 $s$ 鐨勮竟鐣岀嚎娈电殑闀垮害銆傚垽瀹氭槸鍚﹂渶瑕佸悗鑰呯殑鏉′欢灏辨槸 $k-is$ 鏄惁涓烘銆� ### Description 鐜板湪鏈変竴浜涘北鍙戠敓浜嗗北浣撴粦鍧★紝杩欎簺灞变粠宸﹀埌鍙充緷娆℃帓甯冿紝绗� $i$ 搴у北鐨勯珮搴︿负 $h_i$锛屼笖 $\forall i\in [1,n),h_i Proof. 鑰冭檻杩欐牱涓€绉嶆柟娉曪紝姣忔鍙栫 $i$ 涓厓绱犲紑濮嬪悜宸︽帹杩涳紝鑻� $i=1$ 鎴栬€� $h_i - h_{i-1}<2$ 鍒欑粨鏉燂紝鍚﹀垯淇敼 $h_i,h_{i-1}$ 骞剁户缁悜宸︽帹杩涖€�
鍦ㄨ繖鏍蜂竴杞帹杩涗腑锛岃嫢 $i$ 宸︿晶鐨勬暟瀛楀悇涓嶇浉鍚岋紝鍒欎細涓€鐩存帹杩涘埌 $1$锛岃繖鏍峰彲鑳戒細浣垮緱鐩哥瓑鐨勫鏁板鍔� $1$锛涘惁鍒欙紝鎺ㄨ繘鎿嶄綔浼氬湪 $i+1$ 鐨勫彸杈圭粨鏉燂紝鍙兘浼氫娇寰楃浉绛夊鏁板噺灏� $1$銆� 浜庢槸 $S=\sum h_i$ 鍜� $n$ 涓や釜鍙傛暟鍗崇‘瀹氫簡涓€涓敮涓€鐨勭瓟妗堝簭鍒椼€�
鏆村姏鏋勯€犺繖涓瓟妗堝簭鍒楃殑鏂规硶鏄細浠庡簭鍒� $0,1,2,...,n-1$ 寮€濮嬶紝姣忔鏆村姏瀵瑰簭鍒楃殑涓€涓敖鍙兘闀跨殑鍓嶇紑澧炲姞 $1$銆�
缁撹涓�

\[a_i = (i-1)+[\frac {s-\frac {n(n-1)}{2}} n] + [i<({(s-\frac {n(n-1)}{2})} \mod n)] \]

Description

缁欏畾涓€涓� \(n \times m\) 鐨勭綉鏍硷紝姣忎釜鏍煎瓙鏈変竴涓鑹诧紝闂湁澶氬皯涓悓鑹茶彵褰€€�\(n,m \le 2000\)

Solution

绫讳技鈥滄渶澶ф鏂瑰舰鈥濈殑濂楄矾锛岃 \(f[i][j]\) 琛ㄧず浠� \((i,j)\) 鐐逛负涓嬮《鐐圭殑鑿卞舰鐨勬渶澶ц竟闀匡紝杞Щ鏃惰€冭檻 \((i,j),(i-1,j),(i-2,j),(i-1,j-1),(i-1,j+1)\) 杩欎簲涓偣鏄惁鐩哥瓑锛屽鏋滅浉绛夊垯浠� \(f[i-1][j],f[i-2][j],f[i-1][j-1],f[i-1][j+1]\) 涓彇鏈€灏忓€艰浆绉昏繃鏉ュ嵆鍙€�

Description

缁欏畾鏈夊悜鍥撅紝鍦ㄥ浘涓婅蛋鐨勬椂鍊欙紝鍑哄害涓� \(i\) 鐨勮竟锛屽彧鑳借蛋鍒拌竟鏉冨ぇ灏忎负绗� \(c_i\) 灏忕殑杈逛笂闈紝闂� \(c\) 鏁扮粍鏈夊灏戠锛岃姣忎釜鐐归兘婊¤冻锛氫粠杩欎釜鐐瑰紑濮嬭蛋閮藉彲浠ュ洖鍒拌繖涓偣銆傛瘡涓偣鐨勫叆搴﹂兘灏忎簬绛変簬 \(9\)銆�

Solution

鏈€缁堟瘡涓偣涓€瀹氬彧浼氭湁涓€涓嚭鐐癸紝灏� \(p\) 鐨勫嚭搴︿负 \(f[p]\)锛屽垯鏄剧劧 \(f[]\) 涓€瀹氭槸 \(1..n\) 鐨勪竴涓叏鎺掑垪
鑰冭檻鍒� \(f[]\) 鐨勫叧浜� \(c[]\) 鐨勫悇涓綅鏄嫭绔嬬殑锛屽洜姝ゅ彲浠ュ垎鍒灇涓� \(c\) 鐨勬瘡涓€浣嶏紝鐢熸垚 \(f[]\) 鐨勬煇浜涙牎楠屽€硷紙缁勫悎锛夛紝涓庡叏鎺掑垪姣旇緝鍗冲彲锛屾牎楠屽彲浠� hash锛岃繖閲屼负浜嗙渷浜嬶紝瀵规瘡涓€浣嶉鍏堢敓鎴愪竴涓殢鏈烘暟 \(w[]\)锛岀劧鍚庢眰鍜屽嵆鍙�

Description

鍔ㄦ€佺淮鎶や竴涓妧鑳介泦鍚堬紝鎶€鑳藉垎涓轰袱绉嶏紝鏅€氭妧鑳藉拰瓒呯骇鎶€鑳姐€傛墍鏈夋妧鑳戒細琚寜鐓т竴涓帓鍒楁墽琛岋紝濡傛灉鎶€鑳� \(i\) 琚墽琛屾椂瀹冪殑鍓嶄竴涓妧鑳芥槸鏅€氭妧鑳斤紝閭d箞浼氫骇鐢� \(w_i\) 鐨勮础鐚紱濡傛灉鏄秴绾ф妧鑳藉垯浼氫骇鐢� \(2w_i\) 鐨勮础鐚€傛瘡娆℃坊鍔犳垨鍒犻櫎鎶€鑳藉悗锛屾眰褰撳墠鎶€鑳介泦鍚堢殑鏈€澶ц础鐚€�

Solution

鑰冭檻缁存姢涓変釜鎶€鑳介泦鍚堬細setNormal 琛ㄧず鏅€氭妧鑳介泦鍚堬紝setHigh 琛ㄧず褰撳墠鎵€鏈夋妧鑳戒腑锛岃础鐚緝楂樼殑鎶€鑳界殑闆嗗悎锛宍setLow涓�setHigh鐨勮ˉ闆嗐€� 鍦ㄤ换鎰忔椂鍒伙紝鎴戜滑鎺у埗setHigh鐨勫ぇ灏忎负褰撳墠瓒呯骇鎶€鑳界殑鎬讳釜鏁帮紝閭d箞sum(*)+sum(setHigh)鍩烘湰灏辨槸绛旀锛屼絾闇€瑕佸仛涓€鐐逛慨姝c€� 鑰冭檻濡傛灉鎴戜滑甯屾湜灏嗘墍鏈夌殑瓒呯骇鎶€鑳界炕鍊嶏紝浣嗚繖鏃朵竴瀹氭湁涓€涓秴绾ф妧鑳芥槸涓嶈兘琚炕鍊嶇殑锛堟樉鐒舵垜浠細閫夋嫨鏈€灏忕殑閭d竴涓級銆� 鑰冭檻濡傛灉鎴戜滑甯屾湜缈诲€嶇殑鎶€鑳戒腑鏈変竴涓笉鏄秴绾ф妧鑳斤紝閭d箞杩欐椂杩欎簺鎶€鑳借鍚屾椂缈诲€嶆槸鍙互婊¤冻鐨勩€� 鍥犳锛屾垜浠粠涓婇潰鐨勮繎浼肩瓟妗堜腑锛屽噺鍘诲綋鍓�setHigh闆嗗悎鐨勬渶灏忓€硷紝鍐嶅姞涓婂綋鍓�setNormal` 闆嗗悎鐨勬渶澶у€硷紝灏辨槸绛旀銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡鏉¤竟鏈変竴涓� w 鍜屼竴涓� c锛岃杩欐5鏍戠殑鏉冨€间负鎵€鏈夊彾瀛愮粨鐐瑰埌鏍圭粨鐐圭殑璺緞涓婄殑 w 鐨勫拰鐨勬€诲拰銆傛瘡娆℃搷浣滃彲浠ラ€夋嫨涓€鏉¤竟锛屽皢鍏� w 鍙樹负 w/2锛堝悜涓嬪彇鏁达級锛岃姳璐� c 鐨勪唬浠枫€�

Solution

鍏堥澶勭悊鍑烘瘡鏉¤竟鐨勬鏁� \(d\)
濡傛灉鍙湁涓€绉嶄唬浠凤紝鎴戜滑鍙渶瑕佸皢鎵€鏈夎竟浣滀负 \((w,d)\) 鎵旇繘澶ф牴鍫嗕腑锛屼互 \((w-[\frac w 2])d\) 浣滀负鍏抽敭瀛楁帓搴忋€�
鏈変袱绉嶄唬浠锋椂锛岃€冭檻缁存姢涓や釜浼樺厛闃熷垪锛屼竴涓瓨 \(c=1\) 鐨勶紝鍙︿竴涓瓨 \(c=2\) 鐨勩€傛瘮杈冭鍔ㄥ摢涓槦鍒楁洿浼樸€�

[CF13E] Holes - 鍒嗗潡

Description

鏈� \(N\) 涓礊锛屾瘡涓礊鏈夌浉搴旂殑寮瑰姏锛岃兘鎶婅繖涓悆寮瑰埌 \(i+power[i]\) 浣嶇疆銆傚叡鏈変袱绉嶆搷浣滐細鎶� \(a\) 浣嶇疆鐨勫脊鍔涙敼鎴� \(b\)锛涘湪 \(a\) 澶勬斁涓€涓悆锛岃緭鍑烘渶鍚庝竴娆¤惤鍦ㄥ摢涓礊锛岀悆琚脊鍑哄墠鍏辫寮逛簡澶氬皯娆°€�

Solution

鍒嗗潡锛岃褰曟瘡涓潡鍐呮瘡涓綅缃脊鍑鸿鍧楃殑鏃堕棿 tim[i] 鍜屽脊鍑哄埌鐨勪綅缃� pos[i]

[CF1400D] Zigzags - 浜屽垎

Description

缁欏畾涓€涓暱搴︿负 \(n \le 3000\) 鐨勬暟鍒楋紝姹傛湁澶氬皯涓洓鍏冪粍 \((i,j,k,l)\) 婊¤冻 \(1 \le i < j < k < l \le n\) 涓� \(a_i = a_k, a_j = a_l\)銆�

Solution

鏋氫妇 \(j,k\)锛岀敤鍓嶇紑鍜岀粺璁� \(i\)锛岀敤鍚庣紑鍜岀粺璁� \(l\)銆�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鍙互閫夋嫨涓€涓尯闂� \([l,r]\) 灏嗗尯闂翠腑鐨勬瘡涓暟 \(-1\)锛屾垨鑰呴€夋嫨涓€涓綅缃� \(pos\) 鍜屼竴涓€� \(x\)锛屽皢绗� \(pos\) 涓綅缃殑鏁板噺鍘� \(x\)銆傞渶瑕佷繚鎸佹墍鏈夌殑鏁伴潪璐熴€傛眰鎿嶄綔鐩村埌鎵€鏈夋暟鍙樻垚 \(0\) 鐨勬渶灏忎唬浠枫€�

Solution

鍒嗘不璐績锛岄€掑綊姹傝В銆傚浜庡尯闂� \([l,r]\)锛屽鏋滀笉鐢ㄧ涓€绉嶆搷浣滈偅涔堢瓟妗堝氨鏄尯闂撮暱锛屽鏋滅敤绗竴绉嶆搷浣滐紝閭d箞鏄剧劧鎴戜滑鍙互鎵惧埌涓€涓渶灏忕殑浣嶇疆 \(k\)锛屽皢鍖洪棿涓墍鏈夌殑鏁板噺鍘� \(a[k]\)锛岀劧鍚庨€掑綊姹傝В鍖洪棿 \([l,k-1],[k+1,r]\)銆�

Description

缁欏畾涓€涓簭鍒楋紝姣忔鍙互浠� \(i\) 璺冲埌 \(j (>i)\) 褰撲笖浠呭綋婊¤冻浠ヤ笅涓変釜鏉′欢涔嬩竴锛�

\(i+1=j\)

\(\max(h[i+1,j-1])<\min(h_i,h_j)\)

\(\min(h[i+1,j-1])>\max(h_i,h_j)\)

姹備粠涓嬫爣涓� \(1\) 鐨勪綅缃烦鍒颁笅鏍囦负 \(n\) 鐨勪綅缃姳璐圭殑鏈€灏忔鏁般€�

Solution

鑰冭檻 dp锛岃 \(f_i\) 琛ㄧず璺冲埌绗� \(i\) 涓牸瀛愮殑鏈€灏忔鏁帮紝閭d箞寰堟樉鐒� \(f_i\) 搴忓垪涓€瀹氭槸鍗曡皟鐨勶紝杩欐槸鐢辩涓€涓浆绉绘潯浠朵繚璇佺殑銆�
鍏堣€冭檻绗簩涓潯浠讹紝鍒嗘瀽 \(i\) 鐘舵€佸彲浠ヤ粠鍝簺鐘舵€佽浆绉昏繃鏉ャ€�
缁存姢涓€涓崟璋冮€掑噺鐨勬爤锛岄偅涔堟湁涓斾粎鏈夊姞鍏� \(i\) 鐨勫脊鏍堣繃绋嬩腑缁忓巻鐨勬墍鏈夋爤椤舵槸鍚堟硶鐨� \(j\)銆�
鎵€浠ユ垜浠彧闇€瑕佸湪鍔犲叆 \(i\) 鐨勮繃绋嬩腑锛屽姣忔寮规爤鍚庣殑鏍堥《 \(j\)锛屽仛涓€娆� \(j \to i\) 鐨勮浆绉诲嵆鍙€�
瀵圭涓変釜鏉′欢涔熸槸鍚岀悊鐨勩€�

Description

鏈� \(n\) 涓潗鏍囦负 \((a_i,b_i)\) 鐨勪汉锛屾湁 \(m\) 涓潗鏍囦负 \((c_i,d_i)\) 鐨勭伅銆�
姣忔鎿嶄綔锛岃涔堣鎵€鏈� \(a_i+1\)锛岃涔堣鎵€鏈� \(b_i+1\)銆�
濡傛灉涓€涓汉鐨勬í绾靛潗鏍囬兘涓嶅ぇ浜庣伅鐨勬í绾靛潗鏍囷紝閭d箞杩欎釜浜烘槸瀹夊叏鐨勩€�
姹傛渶灏忕Щ鍔ㄥ灏戞浣垮緱鎵€鏈変汉閮芥槸瀹夊叏鐨勩€�

Solution

璁句汉鐨勭紪鍙蜂负 \(i\)锛岀伅鐨勭紪鍙蜂负 \(j\)锛屽垯瀵逛簬浠绘剰 \(i,j\)锛屼互涓嬩袱寮忓繀椤昏鏈夎嚦灏戜竴涓垚绔嬶細\(x+a[i] > c[i],y+b[i] > d[i]\)
鍋囪灏嗕竴涓汉绉诲姩鍒� \((x,y)\)锛岃 \(x \le c[j]-a[i]\)锛岄偅涔� \(y \ge d[j]-b[i]+1\)銆�
浜庢槸鎴戜滑鍦� \(x=c[j]-a[i]\) 鐨勪綅缃笂鎵撲竴涓� \(d[j]-b[i]+1\) 鐨� \(\max\) 鏍囪锛屾渶鍚庡鎵€鏈夋爣璁板仛涓€娆″悗缂€ \(\max\) 鍗冲彲銆�

Description

缁欏畾涓€涓暱搴︿负 \(n \le 200\) 鐨勫瓧绗︿覆 \(S\)锛屽拰涓€涓暱搴︿负 \(2\) 鐨勫瓧绗︿覆 \(T\)锛屽彲浠ュ湪 \(S\) 涓换鎰忎慨鏀逛笉瓒呰繃 \(m\) 涓瓧绗﹀緱鍒� \(S'\)锛屾眰 \(S'\) 涓笌 \(T\) 鐩哥瓑鐨勫瓙搴忓垪鐨勬渶澶ф暟閲忋€�

Solution

璁� \(T\) 涓蹭负 ab锛屽垯瀹氫箟 \(f[i][j][k]\) 琛ㄧず瀵� \(S'\) 涓殑鍓� \(i\) 浣嶏紝鍏朵腑鏈� \(j\) 涓� a锛屼笖淇敼浜� k 娆$殑鎯呭喌涓嬶紝瀛愬簭鍒楃殑鏈€澶ф暟閲忋€傝浆绉绘椂鍙渶瑕佹灇涓炬槸鍚︿慨鏀瑰綋鍓嶅瓧绗﹀嵆鍙€�

Description

娓告垙鍙傛暟鎻忚堪涓� \(a,b,c,d\)锛岃〃绀烘湁涓€涓妧鑳斤紝鍗曟鏀诲嚮鐨勪激瀹充负 \(a\)锛岄殢鍚庣殑 \(c\) 绉掍腑姣忕鎭㈠ \(b\)锛屾瘡娆℃敾鍑诲悗 \(d\) 绉掑悗鎵嶈兘杩涜涓嬩竴娆℃敾鍑汇€傛眰鑳介€犳垚鐨勭灛鏃舵渶澶т激瀹充负澶氬皯锛屾棤瑙h緭鍑� \(-1\)銆�

Solution

鏃犺В鐨勫厖瑕佹潯浠舵槸 \(a>bc\)銆�
瀵逛簬涓€娆℃敾鍑伙紝鍦ㄥ畠鎵ц鍚庣殑姣忎竴绉掞紝鍏跺奖鍝嶅垎鍒负 \(a, a-b, a-2b, ...\)锛岃 \(t(a,b)\) 涓烘渶澶х殑婊¤冻 \(a-tb \ge 0\) 鐨勬暣鏁� \(t\)锛屾樉鐒� \(t=[\frac a b]\)锛屽垯涓€涓妧鑳界殑瀛樺湪鏃堕棿濡傝秴杩� \(t\) 绉掑垯涓嶅涓嶇敤銆�
寰堟樉鐒舵垜浠渶瑕佷娇寰楃涓€涓妧鑳藉瓨鍦ㄤ笉瓒呰繃 \(t\) 绉掞紝鍥犳鎴戜滑鍙互瀹圭撼 \(n=[\frac t d]\) 缁勬妧鑳界殑闂撮殧鏃堕棿銆傚洜姝ゆ垜浠墽琛� \(n\) 缁勫畬鏁寸殑鎶€鑳斤紝澶栧姞涓€涓妧鑳界殑寮€澶达紝鍥犳閫犳垚鐨勬€昏础鐚负 \((n+1)a - \frac {n(n+1)} 2 bd\)銆�

Description

鏁拌酱涓婃湁 \(n\) 涓偣锛屾瘡娆℃搷浣滀綘鍙互灏嗘墍鏈変綅浜� \(x\) 鐨勭偣绉诲姩鍒� \(x+1\) 鎴栬€� \(x-1\)銆傛眰灏嗘墍鏈夌偣绉诲姩鍒颁笉瓒呰繃涓や釜鏁寸偣鐨勬渶灏忔搷浣滄鏁般€傜幇鍦ㄥ鐐归泦鍋氬嚭 \(q\) 娆′慨鏀癸紝姣忔娣诲姞涓€涓偣锛屾垨鑰呭垹闄や竴涓偣锛屼綘闇€瑕佸姩鎬佺淮鎶ょ瓟妗堛€�

Solution

鍋囪浠绘剰鏃跺埢鐨勭偣鐨勫潗鏍囧崌搴忔帓搴忓悗鐨勫簭鍒椾负 \(\{a_i\}\)
鑰冭檻鍒扮瓟妗堜竴瀹氱瓑浜� \(\max a_i - \min a_i - \max |a_i - a_{i-1}|\)锛屾垜浠彧闇€瑕佸姩鎬佺淮鎶ゆ渶澶х殑鐩搁偦鐐硅窛绂诲氨鍙互浜嗐€�
鍙互缁存姢涓€涓浜庢墍鏈� \(|a_i - a_{i-1}|\) 鐨� multiset锛屾瘡娆℃毚鍔涙彃鍏ュ垹闄ゅ嵆鍙�

Description

缁欏畾涓€涓鏁存暟 n锛屽皢瀹冪殑鎵€鏈夊ぇ浜庝竴鐨勫洜鏁版寜鐓т换鎰忛『搴忔帓鍒楀湪涓€涓幆涓婏紝浣犳瘡娆″彲浠ラ€夋嫨鍦堜笂鐩搁偦鐨勪袱涓暟锛屽湪瀹冧滑涓棿鎻掑叆浠栦滑鐨勬渶灏忓叕鍊嶆暟锛屼娇寰楁渶鍚庣殑鐜笂涓嶅瓨鍦ㄤ袱涓浉閭讳笖浜掕川鐨勬暟銆備綘闇€瑕佹壘鍒颁竴涓渶瑕佽繘琛屾搷浣滄鏁版渶灏戠殑鎺掑垪銆�

Solution

涓€绉嶇‘瀹氱殑鎬濊矾鏄紝鏋氫妇鏈€灏忚川鍥犲瓙锛岀敤鎺夋墍鏈夊畠鐨勫€嶆暟锛屽苟娉ㄦ剰鎶婁笅涓€涓川鍥犲瓙鐣欎竴涓暟鐢ㄦ潵浣滀负浠庤繖涓渶灏忚川鍥犲瓙鍒颁笅涓€涓渶灏忚川鍥犲瓙鐨勮繃娓°€傝繖绉嶆柟娉曟槸瀹规槗璇佹槑鐨勩€�
鍙︿竴绉嶆€濊矾鏄紝浠庢渶灏忔暟寮€濮嬶紝姣忔閫夋嫨涓€涓笌涓婁竴涓緭鍑虹殑鏁颁笉浜掕川鐨勬湭琚娇鐢ㄧ殑鏈€灏忕殑鏁拌緭鍑恒€傦紙闈炲父浼樼編浣嗘槸涓嶄細璇佹槑锛�

Description

缁欏畾涓€涓暱搴︿负 n 鐨勫簭鍒� a锛屾湁 q 娆℃搷浣滐紝姣忔鎿嶄綔浜ゆ崲 a[l],a[r]锛屽湪鎿嶄綔鍓嶅拰姣忔鎿嶄綔鍚庢眰鍑� a 涓墍鏈夊瓙搴忓垪鐨勪氦鏇垮拰锛�\(s_1-s_2+s_3-s_4+...\)锛夌殑鏈€澶у€笺€�

Solution

寰堝鏄撴兂鍒扮嚎娈垫爲缁存姢鍖洪棿淇℃伅锛屽彲鏄繖鏍峰お鏆村姏浜嗐€�
鍙戠幇鎵€璋撳瓙搴忓垪鐨勪氦鏇垮拰锛屽疄闄呬笂灏辨槸鍦ㄥ師鏁板垪鐨勫樊鍒嗘暟鍒椾腑閫夊嚭涓€浜涙锛屼娇寰椾粬浠殑鍜屾渶灏�/鏈€澶с€�
鍩轰簬涓婇潰杩欎釜鎰熸€х殑缁撹锛屾垜浠彲浠ュ皢鍘熼棶棰樿浆鍖栦负锛岄€夊彇鑻ュ共涓綅缃� \(i\)锛屼娇寰� \(\sum_i \max(0,a[i]-a[i-1])\) 鏈€澶с€�
鏄剧劧鎴戜滑鍙渶瑕侀€夋嫨閭d簺 \(>0\) 鐨勯儴鍒嗗嵆鍙€�
璁� \(f(i)=\max(0,a[i]-a[i-1])\)锛屽垯姣忔淇敼 \(l,r\) 鏈€澶氬彧浼氬奖鍝嶅埌 \(l,l+1,r,r+1\) 鍥涗釜浣嶇疆锛屾垜浠厛鍑忓幓瀹冧滑鐨勮础鐚紝淇敼瀹屾瘯鍚庯紝鍐嶆妸浠栦滑鍔犲洖鍘诲嵆鍙€�

Description

缁欏畾涓€鏈瓧鍏哥殑鑻ュ共椤碉紝姣忛〉涓婁細鏈夎嫢骞蹭釜鍗曡瘝锛岃繖鏈瓧鍏哥殑瀛楁瘝椤哄簭鏄爣鍑嗛『搴忕殑涓€涓帓鍒椼€傛眰鍑轰换鎰忎竴绉嶆帓鍒楁垨鑰呭垽瀹氶潪娉曘€�

Solution

棣栧厛鑰冭檻鍘绘帀椤电殑闄愬埗锛屽姣忎釜鍗曡瘝锛屽畾涔変竴涓爣鍙� \(iM+j\)锛�\(i\) 鏄畠鐨勯〉鐮侊紝\(j\) 鏄畠鏄繖涓€椤典腑鐨勭鍑犱釜锛屽垯鎴戜滑鎸夎繖涓爣鍙峰鎵€鏈夊崟璇嶆帓搴忓嵆鍙�
瀵逛簬鐩搁偦鐨勫崟璇嶏紝鎴戜滑鎵惧埌瀹冧滑绗竴涓笉鍚岀殑瀛楃锛堝鏋滄湁鐨勮瘽锛夛紝鍦ㄤ竴寮犲浘涓婂杩欎袱涓瓧姣嶄箣闂磋繛杈癸紝琛ㄧず璋佸湪璋佺殑鍓嶉潰
瀵硅繖寮犲浘姹傛嫇鎵戝簭锛屾嫇鎵戝簭灏辨槸 DFS 鐨勯€€鏍堝簭
鍙互杈规眰杈瑰垽锛屼篃鍙互姹傚畬浠ュ悗鎵竴閬嶆墍鏈夎竟鐪嬩竴涓嬫槸鍚﹂潪娉�

Description

缁欏畾涓€涓覆锛屽寘鍚瓧绗� a,b,c,?锛屽叾涓� ? 浠h〃閫氶厤绗︼紝鍗宠繖涓綅缃彲浠ユ槸浠绘剰涓€涓瓧绗︺€傛眰鎵€鏈夎兘涓庤繖涓覆鍖归厤鐨勭‘瀹氫覆涓紝瀛愬簭鍒� abc 鐨勬暟閲忎箣鍜屻€�

Solution

璁� \(f[i][j]\) 琛ㄧず瀵逛簬 \(s[1..i]\)锛屽寘鍚瓙搴忓垪 a,ab,abc 鐨勬暟閲忎箣鍜屽悇涓哄灏戯紝鍒欏浜� \(s[i] \neq ?\)锛屾湁
\(f[i][1] = f[i-1][1] + (s[i]==a) \cdot 3^{cnt}, f[i][2] = f[i-1][1] + (s[i]==b) \cdot f[i-1][1], f[i][3] = f[i-1][3] + (s[i]==c) \cdot f[i-1][2]\)
瀵逛簬 \(s[i] = ?\)锛屽垯
\(f[i][1] = 3f[i-1][1] + 3^{cnt}, f[i][2] = 3f[i-1][1] + f[i-1][1], f[i][3] = 3f[i-1][3] + f[i-1][2]\)

Description

缁欏畾涓€涓瓧绗︿覆 \(s\)锛屾眰鑷冲皯瀵� \(s\) 杩涜澶氬皯娆$浉閭诲瓧绗︿氦鎹㈡搷浣滄墠鑳戒娇寰� \(s\) 鍙樻垚 \(s\) 鐨勭炕杞覆銆�

Solution

濡傛灉灏嗘暣涓氦鎹㈣繃绋嬬湅鍋氫竴涓疆鎹紝鏄剧劧鏈€灏戠殑鐩搁偦浜ゆ崲娆℃暟绛変簬缃崲鐨勯€嗗簭瀵逛釜鏁般€�
閭d箞鎴戜滑灏嗗悓涓€绉嶅瓧绗﹀湪姝e簭鍜屽€掑簭涓蹭腑鐨勫嚭鐜颁綅缃兘璁板綍涓嬫潵锛岀劧鍚庨『搴忓尮閰嶅嵆鍙€�
杩欐牱灏卞彲浠ョ畻鍑轰竴涓帓鍒楋紝鎴戜滑鍙渶瑕佽绠楄繖涓帓鍒楃殑閫嗗簭瀵规暟鍗冲彲銆傛眰閫嗗簭瀵规暟鐩存帴鏍戠姸鏁扮粍鍗冲彲锛屽€掑簭鎵弿鏁翠釜缃崲锛屾妸杩欎釜鏁板悗闈㈡瘮瀹冨皬鐨勬暟鐨勬暟鐩姞鍏ョ瓟妗堝嵆鍙€�

Description

缁欏畾涓€涓ぇ灏忎负 \(n \times m\) 鐨勭煩闃碉紝瑕佹眰姣忚鍙兘閫夊彇涓嶈秴杩囦竴鍗婄殑鍏冪礌锛屼娇寰楁墍鏈夐€夊嚭鍏冪礌鐨勬€诲拰鏄� \(k\) 鐨勫€嶆暟锛屼笖杩欎釜鎬诲拰鏈€澶с€傛眰杩欎釜鏈€澶у€笺€�\(n,m,k \le 70\)銆�

Solution

鑰冭檻 dp锛屽浜庢瘡涓€琛� \(i\)锛岄鍏堥澶勭悊鍑� \(f[i][j][l][res]\) 琛ㄧず鍦ㄧ \(i\) 琛屼腑锛屼粠鍓� \(j\) 涓暟涓€夋嫨浜� \(l\) 涓暟锛屽拰 \(\mod k = res\) 鐨勬渶澶у拰涓哄灏戙€傛嵁姝わ紝鎴戜滑鍙互瀵� \(f[i][*][*][res]\) 鍙� \(\max\) 寰楀埌 \(g[i][res]\)锛屽嵆浠庣 \(i\) 琛屼腑閫変笉瓒呰繃涓€鍗婄殑鏁帮紝涓旀弧瓒虫€诲拰 \(\mod k = res\) 鐨勯檺鍒舵潯浠舵椂锛岃兘澶熻揪鍒扮殑鏈€澶х殑鍜屾槸澶氬皯銆�
璁� \(h[i][res]\) 琛ㄧず鑰冭檻鍓� \(i\) 琛岋紝浠庨噷闈㈤€夊彇鑻ュ共涓暟锛堝綋鐒舵暟閲忚鍚堟硶锛夛紝涓旀弧瓒虫€诲拰 \(\mod k = res\) 鐨勯檺鍒舵潯浠舵椂锛岃兘澶熻揪鍒扮殑鏈€澶х殑鍜屾槸澶氬皯銆傚埄鐢� \(g[i][res]\) 鏄剧劧鍙互杞绘澗璁$畻銆�

Description

缁欏畾涓€寮犲浘 \((n \le 1000, m \le 1000)\)锛屽浘涓婃湁 \(k\) 瀵圭偣 \((a_i,b_i)\) 琛ㄧず鏈変竴涓繍杈撻」鐩粠 \(a_i\) 杩愯緭鍒� \(b_i\)銆傜幇鍦ㄤ綘鍙互閫夋嫨涓€鏉¤竟灏嗗畠鐨勬潈鍊煎彉涓洪浂锛岃姹傛渶灏忓寲鎵€鏈夎繍杈撻」鐩殑鏈€鐭窛绂荤殑鍜屻€�

Solution

鑰冭檻灏嗘瘡鏉¤竟 \(e(u,v)\) 鐨勬潈鍊煎彉涓� \(0\) 瀵圭粨鏋滅殑褰卞搷锛屽浜庤繍杈撹鍒� \((a,b)\)锛屽叾鑻ヤ笉缁忚繃 \((u,v)\) 鍒欎负鍏跺師绛旀锛岃涔堢粡杩� \((u,v)\) 鍒欑瓟妗堜负 \(\min(d_{a,u}+d_{v,b}, d_{a,v}+d_{u,b})\)锛屼簩鑰呭彇鏈€灏忓€煎嵆鍙€�
浜庢槸鎴戜滑鍙渶瑕侀澶勭悊鍑烘墍鏈夌偣瀵逛箣闂寸殑鏈€鐭矾锛岀劧鍚庢ā鎷熶笂杩拌繃绋嬪嵆鍙€傛眰鎵€鏈夌偣瀵规渶鐭矾鐨勮繃绋嬪彲浠ョ敤 Dijkstra 鍋氬埌 \(O(nm \log n)\)銆�

Description

缁欏畾浠� \(1\) 涓烘牴鐨� \(n\) 涓粨鐐圭殑涓€妫垫爲锛屾瘡涓粨鐐逛笂鏈� \(a_i\) 涓汉锛屾瘡涓汉鍙互閫夋嫨浠绘剰鐨勫瓙鑺傜偣璧帮紝鐩村埌璧板埌鍙跺瓙缁撶偣涓烘锛岄棶鏈€鍚庝汉鏈€澶氱殑鍙跺瓙缁撶偣鏈€灏戞湁澶氬皯浜恒€�

Solution

鑰冭檻涓€涓€掓帹鍏崇郴锛屽浜� \(p\) 鐨勬墍鏈夊瀛� \(q_i\)锛岄鍏� \(p\) 鐨勭瓟妗堜竴瀹氫笉灏忎簬 \(q_i\) 鐨勭瓟妗堬紝涔熶笉灏忎簬瀛愭爲鏉冨€煎拰闄や互鍙跺瓙缁撶偣鎬绘暟锛屽悓鏃讹紝\(q_i\) 涓渶澶х瓟妗堣嫢涓嶅皬浜庡钩鍧囧垎閰嶇殑缁撴灉锛屽垯杩欎釜鏈€澶х瓟妗堜竴瀹氬彲浠ヨ \(p\) 鍙栧埌
鍥犳璁� \(f[p]\) 涓� \(p\) 鐨勭瓟妗堬紝\(sum[p]\) 涓� \(p\) 鐨勫瓙鏍戞潈鍊煎拰锛�\(cnt[p]\) 涓� \(p\) 瀛愭爲涓殑鍙跺瓙涓暟锛屽垯 \(f[p]=\max(q_1,...,q_k,sum[p]/cnt[p])\)

Description

鏈� n 閬撹彍鍝佽鏀惧叆浜嗕竴涓儰鐐変腑锛屾瘡鍒拌彍鍝侀兘鏈変竴涓渶浣冲彇鍑虹殑鏃堕棿 \(t_i\)銆傜幇鍦ㄦ寜鐓т竴瀹氶『搴忔妸鑿滃搧浠庣儰鐐変腑鍙栧嚭锛屾瘡鍒拌彍鍝侀兘鏈夊彲鑳藉洜涓轰笉鍦ㄦ渶浣虫椂闂磋鍙栧嚭鑰岄€犳垚涓嶇編鍛筹紝瀹氫箟杩欎釜涓嶇編鍛冲害涓� \(|T-t_i|\)锛屽叾涓� T 鏄彇鍑虹殑鏃跺埢銆傛眰鎶婃墍鏈夎彍鍝侀兘鍙栧嚭鏉ョ殑鏈€灏忎笉缇庡懗搴︺€�\(n \le 200\)

Solution

鑰冭檻鍒板彇鍑烘墍鏈夎彍鍝佺殑椤哄簭涓€瀹氫笌浠栦滑瀹屾垚鐨勬椂闂村厛鍚庨『搴忕浉鍚岋紝璁� \(f[i][j]\) 琛ㄧず鍒颁簡鏃跺埢 \(i\) 鍙栧嚭浜嗗墠 \(j\) 涓彍鍝侊紝閭d箞寰堟樉鐒舵湁杞Щ \(f[i][j]=\min (f[i-1][j],f[i-1][j-1]+|i-t[j]|)\)锛屽彲浠ュ帇鎺変竴缁村€掑簭杞Щ銆�

Description

缁欏畾涓€涓暟鍒楋紝鍏朵腑涓€浜涘厓绱犲浐瀹氾紝鍙︿竴浜涘厓绱犲彲浠ヤ慨鏀广€傝姹備慨鏀规渶灏戠殑鍏冪礌浣垮緱杩欎釜搴忓垪鍙樻垚涓ユ牸鍗曞鐨勫簭鍒椼€�

Solution

棣栧厛閫氳繃 \(a_i \leftarrow a_i-i\) 灏嗗師搴忓垪鍙樹负闈炰弗鏍煎崟澧炵殑搴忓垪銆�
鍥哄畾鍏冪礌灏嗗師搴忓垪鍒嗗壊鎴愪簡鑻ュ共娈碉紝姣忔鍐呮眰涓€涓� LCS锛屽墿涓嬬殑灏辨槸闇€瑕佺Щ鍔ㄧ殑銆傛敞鎰忥紝濡傛灉瓒呭嚭浜嗗乏鍙充袱渚х殑鍥哄畾鍏冪礌闄愬埗鐨勫€煎煙锛岄偅涔堣繖涓厓绱犱篃蹇呴』琚Щ鍔ㄣ€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾瘡娆″彲浠ラ€夋嫨 \(3\) 涓笉鐩稿悓鐨勪笅鏍� \(i,j,k\)锛岃绠� \(a_i \oplus a_j \oplus a_k\)锛岃祴鍊肩粰 \(a_i,a_j,a_k\)銆傞棶鏄惁鑳介€氳繃涓嶈秴杩� \(n\) 娆℃搷浣滐紝浣垮緱鎵€鏈夋暟鐩稿悓锛屾瀯閫犳柟妗堛€�

Solution

鏋勯€犵殑鏍稿績鎬濊矾鏄垜浠彂鐜帮紝濡傛灉鏈� \(x,x,y\) 杩欐牱鐨勬儏鍐碉紝閭d箞鎿嶄綔涓€娆″氨鍙互鍙樻垚 \(y,y,y\)銆�
瀵逛簬濂囨暟闀垮害鐨勬儏鍐碉紝姣斿 \(a,b,c,d,e \to x,x,x,d,e \to x,x,y,y,y \to y,y,y,y,y\)銆�
瀵逛簬鍋舵暟闀垮害鐨勬儏鍐碉紝鎴戜滑鍙互鎸夌収绫讳技鐨勬柟娉曡繘琛屾瀯閫狅紝浣嗘槸鏃犺濡備綍閮戒細鍓╀笅涓€涓暟銆�
鑰冭檻鍒拌繖鏍风殑鎿嶄綔鏄笉浼氬奖鍝嶆暣涓簭鍒楃殑寮傛垨鍜岀殑锛屽洜姝ゆ垜浠彧闇€瑕佸鍓嶉潰 \(n-1\) 涓暟鏋勬垚鐨勫簭鍒楄繘琛屾搷浣滐紝鏈€鍚庡垽瀹氭渶鍚庝竴涓暟涓庝粬浠槸鍚︾浉绛夊嵆鍙€�

Description

缁欏畾涓€涓� \(n\times m\) 鐨� \(01\) 鐭╅樀锛屾瘡娆℃搷浣滃彲浠ュ皢鏌愪釜 \(2\times2\) 鐨勭煩闃靛唴鐨� \(3\) 涓暟鍙栧弽锛岃鍦� \(n\times m\) 姝ュ唴灏嗙煩闃靛彉涓哄叏 \(0\)銆�

Solution

鎴戜滑鐨勫熀鏈€濊矾鏄紝浠讳綍涓€涓� \(2 \times 2\) 鐨勭煩闃甸兘鍙互缁忚繃涓嶈秴杩� \(4\) 娆℃搷浣滄秷鍘诲緱鍒扮洰鏍囩姸鎬侊紝鍥犳瀵逛簬浠讳綍涓€涓竟闀夸负鍋舵暟鐨勭煩闃碉紝鎴戜滑鍙渶瑕佸浜庢瘡涓� \(2 \times 2\) 鐨勫皬鏂瑰潡鎵ц涓€娆℃搷浣滃嵆鍙紱瀵逛簬涓€涓竟闀夸负濂囨暟鐨勭煩闃碉紝鎴戜滑鍏堟妸瀹冪殑鏈€鍚庝竴琛岋紙鍒楋級鏆村姏娑堝幓锛岀劧鍚庤浆鍖栦负鍋舵暟鐨勬儏鍐佃繘琛屽鐞嗐€�
瀵逛簬涓€涓� \(2 \times 2\) 鐨勬柟鍧楃殑涓嶈秴杩囧洓姝ユ搷浣滐紝骞朵笖鏄剧劧鎿嶄綔鏈€澶氬彧浼氭湁 \(4\) 绉嶏紝姣忕瑕佷箞杩涜 \(0\) 娆★紝瑕佷箞杩涜 \(1\) 娆★紝鍥犳鎬诲叡鍙湁 \(16\) 绉嶅彲鑳斤紝鏆村姏鏋氫妇杩欎簺鍙兘鍗冲彲銆�

Description

缁欏畾闀垮害涓� \(n\) 鐨勯潪閫掑搴忓垪銆傚湪涓€娈佃矾涓婁緷娆℃湁 \(n\) 涓晢搴楋紝绗� \(i\) 涓晢搴楁湁涓€绉嶅晢鍝侊紝浠锋牸涓� \(a_i\)銆傛湁 \(q\) 娆℃搷浣滐紝姣忔鎿嶄綔鏈変袱绉嶃€�
1 x y 琛ㄧず瀵逛簬浠绘剰 \(i \in [1,x]\)锛屼护 \(a_i = \max(a_i, y)\)銆�
2 x y 琛ㄧず浠庢嬁鐫€ \(y\) 鍏冮挶浠庣 \(x\) 涓晢搴楀紑濮嬶紝濡傛灉鑳借喘涔板氨璐拱涓€浠斤紝骞跺線鍙宠蛋锛屾眰璐拱浜嗗灏戜欢鍟嗗搧銆�

Solution

鐢变簬搴忓垪鏄崟璋冪殑锛屾瘡涓汉鐨勮喘涔板簭鍒椾竴瀹氭瀯鎴愪笉瓒呰繃 \(\log n\) 涓繛缁锛屽悓鏃舵瘡娆′慨鏀规搷浣滅浉褰撲簬鍖洪棿瑕嗙洊銆�
鍥犳鑰冭檻绾挎鏍戜笂浜屽垎銆�
瀵逛簬鎿嶄綔 \(1\)锛屾垜浠渶瑕佹壘鍒扮涓€涓笉澶т簬 \(y\) 鐨勫厓绱狅紝璁捐繖涓厓绱犵殑浣嶇疆涓� \(pos\)锛屽垯鎴戜滑灏� \([pos,x]\) 鍖洪棿瑕嗙洊涓� \(y\) 鍗冲彲锛屽洜姝ょ嚎娈垫爲闇€瑕佷竴涓〃绀哄尯闂磋鐩栫殑鏍囪銆�
瀵逛簬鎿嶄綔 \(2\)锛屾垜浠粠浜屽垎鍑轰笅涓€涓彲浠ヨ喘涔扮殑鍏冪礌鍦ㄥ摢閲岋紙鍗充簩鍒嗘壘鍒扮涓€涓笉澶т簬 \(key\) 鐨勫厓绱犵殑浣嶇疆锛夛紝鍐嶆壘鍒拌兘浠庤繖涓綅缃繛缁喘涔板埌鍝釜浣嶇疆涓烘锛堝嵆鎵惧埌鏈€鍚庝竴涓繚鎸佽繖娈电殑鍜屼笉瓒呰繃 \(key\) 鐨勪綅缃級锛岃喘涔拌繖涓€娈碉紝鐒跺悗缁х画杩涜涓婅堪杩囩▼锛岀洿鍒板埌杈惧簭鍒楁湯灏俱€�
鍥犳锛岀嚎娈垫爲闇€瑕佹敮鎸佸尯闂存眰鍜岋紝浜屽垎绛旀鎵剧涓€涓笉澶т簬 \(key\) 鐨勫厓绱狅紙鍦ㄥ崟璋冨簭鍒椾笂锛夛紝浜屽垎绛旀鎵炬渶鍚庝竴涓墠缂€鍜屼笉澶т簬 \(key\) 鐨勫厓绱狅紝鍖洪棿瑕嗙洊锛屽洜姝ら渶瑕佸浜庢瘡涓粨鐐圭淮鎶や竴涓粨鐐瑰搴斿尯闂翠腑鐨勬渶澶у€兼渶灏忓€笺€佸尯闂村拰 \(sum\)銆佸尯闂磋鐩栨爣璁� \(tag\)锛屽綋鏍囪涓� \(0\) 鏃惰〃绀烘棤鏍囪锛屽惁鍒欒〃绀哄尯闂磋鐩栦负澶氬皯銆�
棣栧厛鎴戜滑瀹炵幇涓€涓敮鎸佷互涓婂姛鑳界殑绾挎鏍戯紝鐒跺悗閬嶅巻鎵€鏈夋搷浣滐紝瀵逛簬鎿嶄綔 \(2\) 寰幆澶勭悊锛屽叾瀹冩搷浣滅洿鎺ヨ皟鐢ㄥ嵆鍙€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鍙互瀵逛竴涓墠缂€鎴栧悗缂€ \(-1\)锛屾眰鑳藉惁浣垮緱鏁翠釜鏁板垪涓� \(0\)銆�

Solution

灏嗗簭鍒楁媶鍒嗕负涓€涓笉涓婂崌搴忓垪鍜屼竴涓笉涓嬮檷搴忓垪鐨勫拰锛屽彲浠ヨ涓嶄笅闄嶅簭鍒椾粠 \(0\) 寮€濮嬶紝姣忔閬囧埌涓€涓� \(a_i-a_{i-1} > 0\) 鐨勪綅缃紝灏卞皢杩欎釜宸€煎姞杩涘幓锛屾渶鍚庡垽瀹氬師搴忓垪鍑忓幓杩欎釜涓嶄笅闄嶅簭鍒楁槸鍚︿负涓€涓笉涓婂崌搴忓垪銆�

Description

缁欏畾涓や釜鏁扮粍 \(a,b\)锛岄暱搴﹀垎鍒负 \(n,m( m \le n)\)銆�\(a\) 鏄� \(1..n\) 鐨勫叏鎺掑垪锛�\(b\) 鏄竴涓� \(1..n\) 鐨� \(m\) 鎺掑垪銆�\(b\) 鏄洰鏍囧簭鍒楋紝鍗虫垜浠渶瑕侀€氳繃浠ヤ笅鐨勬搷浣滄潵鏋勯€犱竴涓瓟妗堝簭鍒椾娇鍏剁瓑浜� \(b\)銆傛瘡娆℃搷浣滈€夋嫨涓€涓� \(t\)锛屽皢 \(a_{t-1}\) 鎴� \(a_{t+1}\) 鎻掑叆绛旀搴忓垪鏈熬骞跺皢 \(a_t\) 鍒犻櫎銆傞棶鏈夊灏戠涓嶅悓鐨勬瀯閫犳柟妗堛€�

Solution

鑰冭檻瀵逛簬鍑虹幇鍦� \(b\) 涓殑姣忎竴涓� \(a_i\)锛屾垜浠繀鐒惰鍒犻櫎 \(a_{i-1}\) 鍜� \(a_{i+1}\) 涓殑鑷冲皯涓€涓€�
璁� \(f(a_i)\) 琛ㄧず \(a_i\) 鍦� \(b\) 涓殑鍑虹幇浣嶇疆銆�
濡傛灉 \(a_{i-1}\) 瀛樺湪锛屽苟涓� \(f(a_{i-1}) \le f(a_{i})\)锛岄偅涔堟垜浠О杩欎釜 \(a_{i-1}\) 瀵逛簬 \(a_i\) 鏄悎娉曠殑銆�\(a_{i+1}\) 鍚岀悊銆�
瀵逛簬 \(a_i\)锛屾湁濡備笅涓夌鎯呭喌锛�

濡傛灉 \(a_{i-1},a_{i+1}\) 鍧囧悎娉曪紝閭d箞鎴戜滑鍙互鍒犻櫎浠绘剰涓€涓紝鏂规鏁颁箻 \(2\)銆備箣鎵€浠ョ幇鍦ㄥ彲浠ュ垹闄や换鎰忥紝鏄洜涓� \(a_{i-1},a_i,a_{i+1}\) 鐨勫嚭鐜颁綅缃繀鐒堕兘鍦� \(b\) 涓悗闈㈡墍鏈夋暟涔嬪墠锛屽洜姝や粬浠苟娌℃湁鍖哄埆銆�

濡傛灉 \(a_{i-1},a_{i+1}\) 涓伆濂芥湁涓€涓悎娉曪紝閭d箞鎴戜滑鎶婂畠鍒犻櫎鍗冲彲銆�

濡傛灉 \(a_{i-1},a_{i+1}\) 鍧囦笉鍚堟硶锛屽垯鏃犺В銆�

Description

缁欏畾涓€涓暱搴︿负 \(2n\) 鐨勫簭鍒楋紝浣犻渶瑕佹妸瀹冨垎鎴愪袱涓暱搴﹂兘鏄� \(n\) 鐨勫瓙搴忓垪锛屼袱閮ㄥ垎鍒嗗埆浠ラ檷搴忓拰鍗囧簭鎺掑垪锛屽畾涔変竴绉嶆柟妗堢殑鏉冨€间负 \(\sum_i |x_i - y_i|\)锛屾眰鎵€鏈夋柟妗堢殑鏉冨€肩殑鍜屻€�

Solution

灏嗙粷瀵瑰€艰涓哄樊鐨勫舰寮忥紝閭d箞鏃犺濡備綍鍒掑垎锛屾潈鍊奸兘鏄緝澶х殑 \(n\) 涓暟鐨勫拰鍑忓幓杈冨皬鐨� \(n\) 涓暟鐨勫拰銆�

Description

缁欏畾涓や釜涓� \(s,t\)锛岄暱搴� \(\le 5000\)锛屾眰瀵规墍鏈� \(s\) 鐨勫瓙涓� \(p\) 鍜� \(t\) 鐨勫瓙涓� \(q\)锛�\(4LCS(p,q)-|p|-|q|\) 鐨勬渶澶у€笺€侺CS 鎸囨渶闀垮叕鍏卞瓙搴忓垪銆�

Solution

璁� \(f[i][j]\) 琛ㄧず \(s\) 鑰冭檻鍒扮 \(i\) 涓瓧绗︼紝\(t\) 鑰冭檻鍒扮 \(j\) 涓瓧绗︼紝涓や釜鍓嶇紑涓墍瀛樺湪鐨� LCS 鐨勬渶澶ч暱搴︺€�
杞Щ鏃朵富瑕佺粨鍚堜竴涓� LCS 涓庢渶澶у瓙娈靛拰鐨勬€濇兂锛屽嵆 if(s[i]==t[j]) f[i][j]=max(f[i-1][j-1],0ll)+2;else f[i][j]=max(f[i][j-1],f[i-1][j])-1;

Description

缁欏畾 \(n\) 涓嚜鐒舵暟锛屾瘡涓暟浼氫笌鑷繁寮傛垨鏈€灏忕殑鏁帮紝鍚戝畠杩炰竴鏉¤竟銆傛眰鑷冲皯鍒犲幓澶氬皯涓暟锛屾墠鑳戒娇杩欎釜鑷劧鏁伴泦鍚堢粡杩囪繖鏍风殑鎿嶄綔鏋勬垚鐨勫浘鏄竴妫垫爲銆傝竟閮芥槸鏃犲悜鐨勶紝閲嶈竟鑷姩鍚堝苟銆�

Solution

鑰冭檻鍦� 0-1 Trie 涓紝濡傛灉缁撶偣 \(p\) 鐨勫瓙鏍戜腑鏈� \(1\) 涓湁鏁堝彾瀛愮粨鐐癸紝閭d箞杩欎釜缁撶偣涓€瀹氫細涓庡瓙鏍戝鐨勭粨鐐硅繛杈癸紝鍥犳鎴戜滑鍙互璇� \(p\) 鐨勫瓙鏍戞槸瀹夊叏鐨勩€�
鐩稿弽鍦帮紝濡傛灉 \(p\) 鐨勫瓙鏍戝唴鏈� \(\ge 2\) 涓湁鏁堝彾瀛愮粨鐐癸紝閭d箞杩欎簺缁撶偣涔嬮棿涓€瀹氫細鐩镐簰鍖归厤杩炶竟锛屽洜姝� \(p\) 瀛愭爲鍐呯殑杩欎簺鑺傜偣灏变細涓庡墿浣欑殑閮ㄥ垎鏂紑銆�
鍥犳锛屽浜庝竴涓粨鐐� \(p\)锛屽畠鐨勫乏瀛愭爲鍜屽彸瀛愭爲鍒嗗埆涓� \(x,y\)锛屽鏋滀袱杈圭殑鍙跺瓙缁撶偣鏁扮洰閮藉ぇ浜� \(1\)锛岄偅涔堟垜浠渶瑕佸皢涓€杈圭殑鏈夋晥鍙跺瓙缁撶偣鏁扮洰鍒犲噺鍒颁笉瓒呰繃 \(1\)锛屾墠鑳戒娇寰楁暣涓繃绋嬫槸鏈夋晥鐨勩€傝嚦浜庡垹闄ゅ摢涓€杈癸紝闇€瑕侀€掑綊鍋氫笅鍘汇€�
鍏蜂綋鍦帮紝鎴戜滑瀹氫箟 \(f(p)\) 琛ㄧず缁撶偣 \(p\) 鐨勫瓙鏍戝唴鐨勬湁鏁堝彾瀛愮粨鐐规渶澶氬彲浠ヤ繚鐣欏灏戜釜銆�
濡傛灉 \(p\) 鐨勫乏瀛愭爲涓殑鏈夋晥鍙跺瓙缁撶偣涓暟涓洪浂锛岄偅涔� \(f(p) = f(p.rightChild)\)銆�
濡傛灉 \(p\) 鐨勫彸瀛愭爲涓殑鏈夋晥鍙跺瓙缁撶偣涓暟涓洪浂锛岄偅涔� \(f(p) = f(p.leftChild)\)銆�
濡傛灉 \(p\) 鐨勫乏鍙冲瓙鏍戜腑鐨勬湁鏁堝彾瀛愮粨鐐逛釜鏁伴兘闈為浂锛岄偅涔� \(f(p) = \max(f(p.leftChild), p.(rightChild)) + 1\)锛屽嵆鎴戜滑灏嗕竴杈瑰垹闄ゅ埌鍙墿涓嬩竴涓€�
浣滀负閫掑綊鐨勮竟鐣岋紝褰撳瓙鏍戝唴鍙湁涓€涓粨鐐癸紙鎴栬€呭眰鏁拌揪鍒板彾瀛愶級鐨勬椂鍊欙紝杩斿洖涓€涓€煎嵆鍙€�

[CF1450C1] Errich-Tac-Toe (Easy Version) - 鏋勯€�

Description

缁欏畾涓€涓綉鏍硷紝鏈夌殑鏍煎瓙濉簡 X锛岃姹備笉鑳芥湁涓変釜妯潃鎴栬€呯珫鐫€鐨� X 鎴� O 鐩歌繛锛屼綘鍙互鎶� X 鏀规垚 O銆傛瀯閫犱竴绉嶆柟妗堛€�

Solution

妯′豢榛戠櫧鏌撹壊鐨勬€濊矾锛岃€冭檻瀵规墍鏈夌殑鏍煎瓙鎸� \((i+j) \bmod 3\) 鏌撹壊锛岄偅涔堟棤璁烘í绔栵紝鐩搁偦鐨勪笁涓牸瀛愪竴瀹氭í璺ㄤ簡涓夌棰滆壊銆�
鎴戜滑鍙湅鎵€鏈夋煇涓€绉嶉鑹诧紙涓€瀹氬瓨鍦ㄤ竴绉嶉鑹茬殑鏁伴噺婊¤冻瑕佹眰锛夌殑鏍煎瓙锛屽鏋滃叾涓槸 X 灏辨敼鎴� O锛岃繖鏍锋瀯閫犲嚭鏉ョ殑涓€瀹氭槸鍚堟硶鐨勩€�

[CF1450C2] Errich-Tac-Toe - 鏋勯€�

Description

缁欏畾涓€涓綉鏍硷紝鏈夌殑鏍煎瓙濉簡 X 鎴� O锛岃姹備笉鑳芥湁涓変釜妯潃鎴栬€呯珫鐫€鐨� X 鎴� O 鐩歌繛锛屼綘鍙互鎶� X 鏀规垚 O锛屾妸 O 鏀规垚 X銆傛瀯閫犱竴绉嶆柟妗堬紝鎿嶄綔娆℃暟涓嶈秴杩� \(k/3\)銆�

Solution

娌跨敤 easy 鐗堟湰鐨勬€濇兂锛屼絾闇€瑕佽€冭檻涓€浜涙€ц川
鎴戜滑鍙渶瑕佽 3 涓浉閭荤殑鏈� 2 涓笉鍚屽氨鍙互浜�
涓€瀹氬瓨鍦ㄦ煇涓€绫伙紝鍏朵腑鐨勪釜鏁颁笉灏戜簬鎬讳釜鏁扮殑 1/3锛屾垜浠挦瀹氳繖涓€绫讳笉鍙橈紝淇敼鍏跺畠涓ょ被
鍦ㄥ叾浠栦袱绫讳腑锛岀敱浜庨挦瀹氫竴绫讳负 X 涓€绫讳负 O锛屾鍙嶄袱绉嶆柟妗堜腑锛屼竴瀹氭湁涓€绉嶇殑淇敼閲忎笉浼氳秴杩囨€绘暟鐨勪竴鍗�
涓轰簡鐪佷簨锛屾垜浠湪瀹炵幇鏃讹紝瀵逛簬姣忎竴涓被锛岀敤 3 绉嶆ā寮忕鎻忚堪锛�0 琛ㄧず涓嶄慨鏀癸紝O 琛ㄧず寮鸿淇敼鎴� O锛孹 琛ㄧず寮鸿淇敼鎴� X锛岀劧鍚庢灇涓惧嵆鍙�

Description

鍧愭爣杞翠笂锛屾湁涓€涓互 \((0,0)\) 涓哄渾鐐癸紝\(d\) 涓哄崐寰勭殑鍦嗐€傜幇鍦� Ashish 鍜� Utkarsh 鐜╂父鎴忥紝Ashish 鏄厛鎵嬨€傚湪 \((0,0)\) 澶勬湁涓€棰楁瀛愶紝涓や汉杞祦灏嗘瀛愬悜涓婃垨鍚戝彸绉诲姩 \(k\) 涓崟浣嶏紝妫嬪瓙涓嶈兘绉诲嚭鍦嗭紝璋佹棤娉曠Щ鍔ㄨ皝杈撱€�

Solution

棣栧厛锛屽悓涓€鏍瑰瑙掔嚎涓婄殑绛旀鐩稿悓锛屽洜涓哄悗鎵嬫€诲彲浠ラ€氳繃涓庡厛鎵嬬浉鍙嶇殑鍔ㄤ綔鏉ヤ娇寰楄儨璐熸€т笉鍙樸€�
鍥犳鎴戜滑鍙渶瑕佸垽鏂� \((n,n)\) 鐨勭姸鎬佸嵆鍙€�
\((n,n)\) 涓嶆槸蹇呰触鐐癸紝褰撲笖浠呭綋 \((n+1,n)\) 鍦ㄥ渾鍐呫€�

Description

浜や簰棰橈紝鐢ㄤ笉瓒呰繃 \(n+2\) 娆℃搷浣滅寽鍑轰竴涓暱搴︿负 \(n\) 鐨勬暟缁勶紝姣忔鍙互鎸囧畾涓や釜涓嶅悓鐨勪笅鏍囷紝璇㈤棶杩欎袱涓綅缃殑鏁扮殑 AND 鎴� OR 鎴� XOR銆�

Solution

涓€涓洿瑙傜殑鎬濊矾鏄厛鐚滃嚭涓€灏忛儴鍒嗘暟锛岃繘鑰岄€氳繃寮傛垨鎿嶄綔寰楀嚭鍓╀笅鐨勩€�
鐚滀竴涓槸涓嶈鐨勶紝鐚滀袱涓技涔庝篃鏄笉琛岀殑銆�
鑰冭檻鐚滀笁涓紝鎴戜滑鍙互鐢ㄤ簲涓€滄柟绋嬧€濆幓姹傝В鍓嶄笁涓暟锛岃嚦浜庨€夊彇鎬庢牱鐨勭粍鍚堟湁寰堝绉嶆柟妗堬紝鍙互鍐欎釜鏆村姏绋嬪簭灏濊瘯鍑犳鎴栬€呮墜鐜╀竴涓嬨€�

Description

鏈� \(n\) 涓棶棰橈紝鏈� \(m\) 涓€夋墜锛屾瘡涓€夋墜鏈変竴涓枩娆㈢殑闂鍖洪棿 \([l_i,r_i]\)锛岀幇鍦ㄦ湁涓や釜璁查浜哄彲浠ラ€夋嫨涓や釜鍖洪棿闀垮害涓� \(k\) 鐨勫尯闂存潵璁查锛屾瘡涓€夋墜鍙兘鍚竴涓棰樹汉鐨勮棰橈紝骞朵骇鐢熶粬鍚埌鐨勫枩娆㈢殑闂鏁伴噺鐨勫垎鏁般€傞€氳繃閫夋嫨璁查浜鸿棰樼殑鍖洪棿锛屾渶澶у寲鍒嗘暟鍜屻€�\(n,m \le 2000\)

Solution

灏嗛€夋墜鎸夌収宄板€肩偣 \(l_i + r_i\) 鎺掑簭銆傛毚鍔涙灇涓惧皢閫夋墜鍒掑垎鎴愪袱浠界殑鍒嗙晫绾匡紝鍓嶅崐閮ㄥ垎鍚涓€涓棰樹汉锛屽悗鍗婇儴鍒嗗惉绗簩涓棰樹汉銆�
鍋囪鐜板湪宸茬粡鍒掑垎濂戒簡 \([1,p], [p+1,m]\)锛屽浜庡墠鍗婇儴鍒嗙殑閫夋墜锛岃绠楀嚭姣忎釜棰樼洰琚鍏ョ殑娆℃暟锛堝埄鐢ㄥ樊鍒嗗墠缂€鍜岋級锛岀劧鍚庢壂涓€閬嶇畻鍑鸿棰樹汉璇ユ斁鍦ㄥ摢銆傚浜庡悗鍗婇儴鍒嗕篃鍚岀悊銆�

[CF1454F] Array Partition - ST琛�,浜屽垎

Description

缁欏畾搴忓垪 \(a\)锛岃姹傚皢鍏跺垝鍒嗕负涓変釜闈炵┖瀛愪覆锛堣涓変釜瀛愪覆闀垮垎鍒负 \(x,y,z\)锛夛紝浣垮緱 \(\max\limits_{i=1}^x a_i = \min\limits_{i=x+1}^{x+y} a_i = \max\limits_{i=x+y+1}^n a_i\)銆�

Solution

鏋氫妇 x锛岄偅涔� y 浼氬彈鍒颁袱涓尯闂寸殑闄愬埗
min 鐨勯檺鍒跺尯闂寸敤 ST 琛� + 浜屽垎瑙e嚭
max 鐨勯檺鍒跺尯闂寸敤鍚庣紑 max + 浜屽垎瑙e嚭

Description

缁欏嚭涓€涓敱 \(n\) 涓暟瀛楃粍鎴愮殑鏁扮粍銆傜幇鍦ㄥ畾涔変竴绉嶅瓙闆嗕负 \(\{A_1, A_2, A_3, ..., A_m\}\) 浣垮緱杩欎釜瀛愰泦涓殑鏈€澶у€煎拰鏈€灏忓€肩殑宸€间笉瓒呰繃 \(k\)锛屽叾涓� \(m\) 鍜� \(k\) 鏄粰鍑虹殑銆傜幇鍦ㄩ棶浣犺繖绉嶅瓙闆嗘湁鍑犱釜銆�

Solution

鏈€鍒濈殑鎯虫硶鏄皢姣忎釜鏁扮殑閲嶆暟缁熻鍑烘潵锛岀劧鍚庢灇涓炬渶澶х殑鏁颁互鍙婃渶澶ф暟閫夊灏戜釜锛屽墿涓嬬殑鐢ㄧ粍鍚堟暟璁$畻銆�
鏇寸畝鍗曠殑鏂规硶鏄紝鐩存帴鎺掑簭锛岀劧鍚庢灇涓炬渶澶ф暟鐨勪綅缃紝鍒╃敤鍓嶇紑鍜岀粺璁¤繖涓暟鍓嶉潰鏈夊灏戜釜涓嶅皬浜庡畠 \(-k\) 鐨勬暟锛岀劧鍚庣敤缁勫悎鏁拌绠楀嵆鍙€�

[CF1466F] Euclid's nightmare - 骞舵煡闆�

Description

缁欏畾 n 涓簩杩涘埗 m 浣嶄覆 ai锛屾眰浠栦滑鐨勭嚎鎬у熀鐨勫ぇ灏忥紝淇濊瘉姣忎釜鍏冪礌鍙湁涓嶈秴杩囦袱涓� 1 鍏跺畠閮芥槸 0锛堜互鍙婃寜鐓ч『搴忓皢鍏冪礌閫夊叆绾挎€у熀寰楀埌鐨勫簭鍒楋級

Solution

濡傛灉鎵€鏈変覆閮芥伆濂芥湁 2 涓� 1锛岄偅涔堟垜浠彲浠ュ姣忎釜浣嶅缓绔嬩竴涓粨鐐癸紝浠讳綍涓€涓覆灏辫浆鍖栨垚浜嗕竴鏉¤竟锛岀幆鎰忓懗鐫€绾挎€х浉鍏筹紝鍥犳姹傝繖涓浘鐨勭敓鎴愭爲鍗冲彲
鑰冭檻閭d簺鏈変竴涓� 1 鐨勪覆鎬庝箞鍔烇紝鎴戜滑娣诲姞涓€涓櫄鐐癸紝鎵€鏈夊彧鏈変竴涓� 1 鐨勪覆鍚戣櫄鐐硅繛杈瑰嵆鍙紝杩欐牱濡傛灉鍑虹幇浜� 01,11,10 鐨勬儏鍐碉紝灏变細鎴愮幆

[CF1467C] Three Bags - 鎬濈淮

Description

缁欏畾 3 涓泦鍚堬紝姣忎釜闆嗗悎閲屾湁鑻ュ共涓暟锛屾瘡娆″彲浠ヤ粠涓€涓泦鍚堥€夋嫨涓€涓暟 a锛屼粠鍙︿竴涓泦鍚堥€夋嫨涓€涓暟 b锛屼护 a=a-b锛屽苟涓斿垹闄� b銆傛搷浣滃埌鍙墿涓嬩竴涓暟涓烘銆傛眰鍓╀笅鐨勮繖涓暟鐨勬渶澶у€笺€�

Solution

棣栧厛寰堝鏄撴兂璞″嚭涓€涓爲褰㈢粨鏋勶紝濂囨暟灞備负姝o紝鍋舵暟灞備负璐�
鏈変竴绉嶄笉閿欑殑鎯呭喌鏄紝绗竴灞傚~涓€涓暟锛岀浜屽眰鏄袱涓潵鑷笉鍚岄泦鍚堢殑鏁帮紝杩欐牱绗笁灞傚氨鍙互濉墿涓嬬殑鎵€鏈夋暟
鑰冭檻渚嬪锛屽鏋滄垜浠彧甯屾湜鍑忓幓涓€涓泦鍚堜腑鐨勬暟锛岃繖鏍锋槸鍙互鍋氬埌鐨勶紝鍗冲湪绗簩灞傚~涓婅繖涓泦鍚堢殑鎵€鏈夋暟锛堝鏋滀笉濉墍鏈夛紝閭d箞浼氭帀鍒扮鍥涘眰锛岀粨鏋滄槸涓€鏍风殑锛屾€讳箣涓嶅彲鑳藉~鍦ㄥ鏁板眰涓級锛岀涓夊眰濉墿涓嬬殑鎵€鏈夋暟锛岃繖鏍疯础鐚负璐熺殑鎭板ソ鏄煇涓€涓泦鍚堝唴鐨勬墍鏈夋暟

[CF1467D] Sum of Paths - dp

Description

缁欏畾涓€涓暱搴︿负 \(n\) 涓簭鍒楋紝绗� i 涓綅缃潈鍊间负 \(a_i\)锛屾湁 \(k\) 娆$Щ鍔紝姣忔绉诲姩寰€宸︽垨鑰呭線鍙崇Щ鍔ㄤ竴鏍硷紝涓嶈兘鍑鸿竟鐣岋紝瀵逛簬杩欐牱涓€涓繛缁Щ鍔� k 娆″悗寰楀埌鐨勯暱搴︿负 k+1 鐨勪綅缃簭鍒楋紝鎴戜滑绉颁负濂藉簭鍒楋紝瀹冪殑鏉冨€兼槸缁忚繃鐨勬瘡涓€涓綅缃殑 \(a_i\) 鐨勫拰锛屽娆$粡杩囬渶瑕佺疮鍔犮€傜幇鍦ㄥ鎵€鏈夎捣濮嬩綅缃紝姹傛墍鏈夊ソ搴忓垪鐨勬潈鍊煎拰锛屾湁 q 娆″搴忓垪鏉冨€肩殑淇敼銆傜瓟妗堝 \(10^9+7\) 鍙栨ā銆�

Solution

璁� \(f[i][j]\) 涓哄埌杈剧偣 j 璧颁簡 i 姝ョ殑鏂规鏁帮紝涔熸槸浠� j 鍑哄彂璧颁簡 i 姝ョ殑鍚堟硶搴忓垪鏁�
杞Щ涓� \(f[i][j]=f[i-1][j-1]+f[i-1][j+1]\)
閭d箞绗� i 姝ョ粡杩� j 鐨勬柟妗堟暟灏辨槸 \(f[i][j] \cdot f[k-i][j]\)
璁� \(g[j]=\sum_i f[i][j]\)锛屽嵆姣忎釜鐐硅缁忚繃鐨勬€绘鏁帮紝杩欎釜鍊兼槸涓嶄細鍙樼殑
鐒跺悗鍔ㄦ€佺淮鎶や竴涓瓟妗堝嵆鍙�

[CF1470A] Strange Birthday Party - 甯︽挙閿€璐績

Description

浣犳湁 \(n\) 涓湅鍙嬶紝\(m\) 绉嶇ぜ鐗╋紝绗� \(i\) 绉嶇ぜ鐗╃殑鑺辫垂涓� \(c_i\)锛屽浜庢瘡涓汉锛岄兘瑕侀€� \([1,k_i]\) 涓殑涓€涓ぜ鐗╃粰浠栵紝鎴栬€呯粰浠� \(c_k_i\) 鐨勯挶锛屾瘡绉嶇ぜ鐗╁彧鑳借閫佷竴娆★紝闂渶灏忚姳璐广€�

Solution

涓€涓緢璐圭敤娴佺殑妯″瀷锛屾墍浠ュ簲璇ユ槸甯︽挙閿€璐績鍋氫簡
鍩烘湰璐績锛氭墍鏈� \(k_i\) 鎺掑簭锛屽皢鎵€鏈夊皬浜庡綋鍓� \(k_i\) 鐨勭ぜ鐗╂斁鍦ㄤ竴涓爢涓紝濡傛灉褰撳墠鐨勬渶灏忓厓绱犳瘮 \(c_k_i\) 澶э紝灏辩粰閽憋紝鍚﹀垯鎶婄ぜ鐗╃粰浠�
鎾ら攢锛氬亣璁惧皢 \(c_i\) 鐨勭ぜ鐗╅€佺粰 a锛屽鏋滈€佺粰 b锛岄偅涔堝氨瑕佺粰 \(c_k_a\) 鐨勯挶缁� a锛岀浉褰撲簬缁� b 閫佷簡涓€涓环鍊间负 \(c_k_a\) 鐨勭ぜ鐗╋紝鍥犳瀵规瘡涓汉 \(i\)锛岀粰浠栧彂浜嗙ぜ鐗╁悗锛岄兘鍦ㄥ爢涓姞鍏ヤ竴涓� \(c_k_i\) 鐨勫厓绱犺〃绀烘挙閿€瀵硅繖涓汉鐨勬搷浣滃苟涓旂粰浠栭挶

[CF1470B] Strange Definition - 鏁拌

Description

绉颁袱涓暣鏁� \(x,y\) 鐩稿叧褰撲笖浠呭綋鍏� LCM/GCD 涓哄畬鍏ㄥ钩鏂规暟銆傜粰瀹氫竴涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾瘡涓€绉掓墍鏈� \(a_i\) 閮戒細鍙樻垚搴忓垪涓墍鏈変笌瀹冪浉鍏崇殑鏁帮紙鍖呮嫭鑷繁锛夌殑涔樼Н銆備护 \(d_i\) 琛ㄧず搴忓垪涓笌 \(a_i\) 鐩稿叧鐨勬暟鐨勪釜鏁帮紝鏈� \(q\) 娆¤闂紝姣忔缁欏畾涓€涓� \(w\)锛岄棶 \(w\) 绉掑悗鏈€澶х殑 \(d_i\) 鏄灏戙€�

Solution

濡傛灉 \(x,y\) 鐩稿叧锛岄偅涔堣川鍥犲瓙鍒嗚В鍑烘潵姣忎釜鍥犲瓙鐨勬寚鏁扮殑濂囧伓鎬х浉鍚�
鍥犳璐ㄥ洜鏁板垎瑙d互鍚庢瀯鎴愮殑鎸囨暟搴忓垪妯� 2 鍙互鐪嬪仛涓€涓� 01 涓诧紝鎵€鏈� 01 涓茬浉绛夌殑鏋勬垚涓€涓泦鍚堬紝浠ヤ笅绉板叾涓轰竴涓泦鍚堢殑鐗瑰緛涓�
濡傛灉涓€涓泦鍚堢殑鐗瑰緛涓蹭腑鍏ㄦ槸 0锛岄偅涔堣繖涓泦鍚堟槸涓嶄細鍙樼殑
濡傛灉涓€涓泦鍚堢殑澶у皬涓哄鏁帮紝閭d箞杩欎釜闆嗗悎鏄笉浼氬彉鐨�
鍥犳锛屽彧鏈夌涓€绉掓椂锛岄偅浜涚壒寰佷覆绉嶅惈鏈� 1 涓斿ぇ灏忎负鍋舵暟鐨勯泦鍚堬紝浼氬皢瀹冧滑鐨勭壒寰佷覆鍙樹负 0锛屽悗闈㈠皢姘歌繙淇濇寔涓嬪幓

Description

褰撲竴涓汉 A 鐨勮韩楂樻瘮鍙﹀涓€涓汉 B 鐨勮韩楂樼煯锛屼笖瀹藉害姣斾粬灏忔椂锛孉 鍙互绔欏湪 B 鐨勫墠闈紝鎴栬€呭綋 A 韬珮姣� B 瀹藉害灏忔椂锛屼笖瀹藉害姣� B 韬珮灏忔椂锛孉 鍙互韬哄湪 B 鍓嶉潰銆傛兂鐭ラ亾姣忎釜浜烘槸鍚︽湁瀵瑰簲鐨勪汉鍙互绔欐垨韬哄湪浠栫殑鍓嶉潰锛屽鏋滄湁锛屽垯杈撳嚭閭d釜浜虹殑缂栧彿锛岃嫢鏈夊涓紝鍒欒緭鍑轰换鎰忎竴涓紝濡傛灉娌℃湁鍒欒緭鍑� -1銆�

Solution

灏嗘墍鏈夌殑鏁板璋冩暣鎴� \(w \le h\) 涓嶄細褰卞搷缁撴灉锛岃繖鏍峰氨鍙樻垚浜嗕竴涓畝鍗曠殑浜岀淮鍋忓簭锛屾壂鎻忎竴閬嶅嵆鍙€�
锛堝お涔呮病鍋氶浜嗗崱鍗婂ぉ銆�

[CF1472G] Moving to the Capital - 鏈€鐭矾

Description

鏈� n 涓粨鐐圭殑鏈夊悜鍥撅紝杈归暱涓� 1锛屽凡鐭� di 琛ㄧず 1 鍒� i 鐨勬渶鐭矾闀匡紝鐜板湪鍦ㄧ s 涓粨鐐逛笂锛屾湁涓ょ鎿嶄綔锛氭部鐫€鏌愭潯杈癸紝璧板埌涓€涓� d 鏇村ぇ鐨勭偣锛涙部鐫€鏌愭潯杈癸紝璧板埌涓€涓� d 灏忎簬绛変簬褰撳墠鐨勭偣锛堝彧鑳借蛋涓€娆★級銆傛眰姣忎釜鐐瑰嚭鍙戯紝鑳借蛋鍒扮殑鐐逛腑锛宒i 鏈€灏忕殑鏄灏戙€�

Solution

涓€涓樉鐒剁殑鎬ц川鏄紝鐗规畩鎿嶄綔涓€瀹氫細鐣欏湪鏈€鍚庣敤
鐢变簬閭g鍙互浣跨敤澶氭鐨勮浆绉昏竟鏋勬垚鐨勪竴瀹氭槸涓€涓� DAG锛屾墍浠ュ彲浠ヨ€冭檻鐢ㄨ蹇嗗寲鎼滅储鏉ュ鐞嗘渶鍚庣殑闂
鎴戜滑鍏堟眰鍑烘瘡涓偣鑳界洿鎺ュ埌杈剧殑 d 鏈€灏忕殑鐐圭殑 d锛岀劧鍚庝互杩欎釜涓烘潈鍊硷紝璺戜竴娆℃悳绱㈠嵆鍙�

[CF1473D] Program - 绾挎鏍�

Description

鏈変竴涓彉閲� x 鍒濆涓� 0锛屾垜浠寜瀛楃涓查『搴忚繘琛屸€�+1鈥濇垨鈥�-1鈥濇搷浣溿€傛湁 m 涓闂紝姣忔璇㈤棶鎴戜滑鍒犲幓瀛楃涓茬殑 l 鍒� r 鐨勭鍙峰悗锛寈 鍦ㄥ畬鎴愭墍鏈夋搷浣滀腑鍑虹幇鐨勪笉鍚屾暟鍊肩殑鎬绘暟銆�

Solution

绾挎鏍戞瘡涓粨鐐圭淮鎶� sum 琛ㄧず杩欎竴娈电殑鎿嶄綔鍜岋紝maxsum 琛ㄧず鎵ц杩欎竴娈垫搷浣滆繃绋嬩腑鍒拌揪鐨勬渶澶у€硷紝minsum 琛ㄧず鎵ц杩欎竴娈垫搷浣滆繃绋嬩腑鍒拌揪鐨勬渶灏忓€笺€�

[CF1473E] Minimum Path - 鍒嗗眰鍥炬渶鐭矾

Description

缁欏畾涓€涓棤鍚戝浘锛屽畾涔夎矾寰勭殑鏉冨€间负璺緞涓婃墍鏈夎竟鏉冪殑鍜屽噺鍘昏竟鏉冪殑鏋佸樊銆傛眰 1 鍒板叾瀹冩墍鏈夌偣鐨勬渶鐭矾銆�

Solution

寰堝鐨勮浆鍖栵細涓€鏉¤竟鏉冨€煎彉鎴� 0锛屼竴鏉¤竟鏉冨€煎姞鍊嶏紝姹傛渶鐭矾
杞寲鍚庣殑鏉′欢鍔犱笂鏈€鐭殑鏉′欢锛屽氨寰楀埌浜嗚浆鍖栧墠鐨勬潯浠�
浜庢槸鍒嗗眰鍥炬渶鐭矾鍗冲彲

[CF1475F] Unusual Matrix

Description

瀵� \(n \times n\) 鐨� 01 鐭╅樀锛屾瘡娆℃搷浣滃彲浠ュ弽杞竴琛屾垨鑰呬竴鍒椼€傜粰瀹� \(a,b\) 涓や釜鐭╅樀锛岄棶 \(a\) 鏄惁鍙互缁忚繃鏈夐檺娆℃搷浣滃彉涓� \(b\)銆�

Solution

鍙鎴戜滑纭畾浜嗘煇涓€琛岋紙鍒楋級鐨勬搷浣滄儏鍐碉紝鎵€鏈夌殑鎿嶄綔鎯呭喌閮戒細琚‘瀹氾紝鍥犳鍙渶鏋氫妇绗竴琛屾槸鍚︽搷浣滐紝鍚庨潰鐨勯€掓帹璁$畻鍗冲彲锛屽鏋滅畻涓嬫潵杩樻湁鍓╀綑锛岄偅涔堝氨鏃犺В銆�

[CF1475G] Strange Beauty - 鏁拌

Description

鏈� \(n\) 涓暟锛屼粠涓寫閫変竴涓瓙闆嗭紝浣垮緱闆嗗悎涓换鎰忎袱涓笉鍚岀殑鏁� \(x,y\)锛屾湁 \(x|y\) 鎴� \(y|x\)銆�

Solution

瀛愰泦涓渶灏忕殑鏁板繀椤昏鑳芥暣闄ゆ墍鏈夌殑鏁帮紝鎵€鏈夌殑鏁板繀椤昏鑳借鏈€澶х殑鏁版暣闄�
鎶婃暣闄ゅ叧绯荤敾鎴愭湁鍚戣竟锛屽垯鏄竴涓湁鍚戞棤鐜畬鍏ㄥ浘锛屾垜浠彇鍏朵腑鐨勬渶闀胯矾鑰冭檻
鍋囧畾 \(a[]\) 鍗囧簭
璁� \(f[x]\) 涓烘渶澶ф暟閫変负 \(x\) 鏃剁殑鏂规鏁帮紝閭d箞 \(f[y]=\max_{x \in S \and x | y} f[x]\)
鏆村姏鏋氫妇鍥犲瓙杞Щ鍗冲彲

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勪富涓� \(S\)锛屾湁 \(m \le 100\) 涓闂紝姣忔缁欏畾涓€涓闂覆 \(p_i\)锛岄暱搴︿笉瓒呰繃 \(10^3\)銆傝緭鍑烘湁澶氬皯涓闂覆锛屾弧瓒冲瓨鍦� \(S\) 鐨勪袱涓笉鐩镐氦鐨勫瓙涓叉嫾璧锋潵涓� \(p_i\) 鐩哥瓑銆�

Solution

涓€涓闂覆鍙锛屽綋涓斾粎褰撳瓨鍦� \(k\) 浣垮緱 \(p[1..k]\) 鍦ㄤ富涓蹭腑鐨勬渶灏忕粨鏉熶綅缃� \(pre[k]\) 灏忎簬 \(p[k+1,l]\) 鍦ㄤ富涓蹭腑鐨勬渶澶у紑濮嬩綅缃� \(suf[k+1]\)锛屼笅闈㈣€冭檻濡備綍姹傝В \(pre[],suf[]\)
瀵� \(S\) 鐨勬涓插弽涓插垎鍒缓绔嬪悗缂€鑷姩鏈猴紝棰勫鐞嗗嚭姝d覆鑷姩鏈轰腑姣忎釜缁撶偣瀵瑰簲鐨� \(endpos\) 闆嗗悎鐨勬渶灏忓€硷紝鍙嶄覆鑷姩鏈轰腑姣忎釜缁撶偣瀵瑰簲鐨� \(endpos\) 闆嗗悎鐨勬渶灏忓€�
鍏蜂綋鍦帮紝鍦ㄥ閲忔瀯閫犳椂璁板綍涓€涓� \(firstpos[p]\) 璧峰垵灏辩瓑浜� \(p\) 鐨勭粨灏句綅缃紙鏂板缓缁撶偣鐨勬椂鍊欒缃竴涓嬶紝褰撶粨鐐硅寤虹珛鏃舵槸鍞竴鐨勶級锛屽湪鏋勯€犲畬姣曞悗鎸夌収鎷撴墤搴忔部鐫€鍚庣紑鏍戜笂浼犲彇 \(\min\)锛�\(lastpos\) 鍚岀悊
鐜板湪锛屽皢 \(p\) 鐨勬涓叉墧鍒� \(S\) 鐨勬涓茶嚜鍔ㄦ満涓婅窇锛屽彧璧拌浆绉昏竟涓嶈蛋鍚庣紑閾炬帴锛屽亣璁捐窇鍒颁簡 \(p[1..i]\) 閭d箞鎴戜滑灏卞緱鍒颁簡 \(pre[i]\)锛屽悓鐞嗗緱鍒� \(suf[i]\)

Description

缁欏畾鏁板垪 \(a[]\)锛屽姣忎釜 \(a[i]\) 鎵惧埌浠绘剰涓€涓� \(a[j]\) 浣垮緱 \(a[i] \& a[j]=0\)锛屾棤瑙e垯 \(-1\)銆�

Solution

鑰冭檻灏嗘暟瑁呭叆妗� \(b[]\) 涓苟璁$畻楂樼淮鍓嶇紑鍜岋紝閭d箞姹� \(a[i]\) 瀵瑰簲鐨� \(a[j]\) 鍙渶瑕佹煡璇� \(b[j \oplus mask]\) 鍗冲彲锛屽叾涓� \(mask=2^{22}-1\)

Description

缁欏畾涓や釜鍑稿杈瑰舰 \(A,B\)锛岃闂� \(B\) 鏄惁涓ユ牸鍦� \(A\) 鍐呫€�

Solution

瀵� \(A,B\) 鐨勬墍鏈夌偣鏋勯€犻潪涓ユ牸鍑稿寘锛屽鏋滆繖涓嚫鍖呯瓑浜� \(B\)锛屽垯绗﹀悎鏉′欢銆�
锛堟柟娉曠湡鐨勬尯濡欑殑锛�

Description

鏈変竴棰� \(n\) 涓妭鐐圭殑鏍戯紝\(k\) 娆℃梾琛岋紝闂瘡涓€鏉¤竟琚蛋杩囩殑娆℃暟銆�

Solution

妯℃澘棰橈紝澶嶄範涓€涓� LCA 涓庢爲涓婂樊鍒嗙殑鍩烘湰鐢ㄦ硶銆�
棣栧厛锛屽浜庢瘡鏉¤竟琚蛋杩囩殑娆℃暟锛屾垜浠妸瀹冭浆鍖栦负娣卞害杈冨ぇ鐨勯偅涓偣琚粡杩囩殑娆℃暟銆�
瀵逛簬姣忎竴娆℃梾琛� \(begin,end\)锛岃绠� \(lca=LCA(begin,end)\)锛屽垯姣忔鎿嶄綔杞寲涓哄 \(lca \sim begin\) 淇敼涓€娆★紝瀵� \(lca \sim end\) 淇敼涓€娆★紝瀵� \(lca\) 鑷韩鍙嶅悜淇敼涓ゆ銆�
LCA 鐨勬眰娉曞緢澶氾紝杩欓噷澶嶄範涓€涓� ST 琛ㄦ眰 LCA銆�
棣栧厛鎴戜滑闇€瑕侀澶勭悊鍑烘瘡涓偣鍦ㄥ畠鐨� Euler 閬嶅巻搴忎笂绗竴娆″嚭鐜扮殑浣嶇疆 \(first_occur[p]\) 鍜屾渶鍚庝竴娆″嚭鐜扮殑浣嶇疆 \(last_occur[p]\)锛岄偅涔堝浜庝竴 \((p,q)\)锛屽叾 LCA 鍗充负 \(last_occur[p] \sim first_occfur[q]\) 杩欎竴鐨� Euler 閬嶅巻搴忓垪涓嚭鐜拌繃鐨勬繁搴︽渶灏忕殑鐐广€�
鎵€璋� Euler 閬嶅巻搴忓垪鏄繖鏍蜂竴绉� DFS 搴忓垪锛屾瘡娆℃垜浠闂竴涓偣锛堝寘鎷洖婧埌鍒板畠锛夐兘灏嗗叾鎵旇繘闃熷垪鐨勫熬閮紝鍥犳杩欐牱鎴戜滑寰楀埌鐨勫簭鍒楅暱搴︽槸鎬荤殑搴︽暟 \(+1\)銆�
ST 琛ㄥ氨琚敤鏉ユ敮鎸� Euler 閬嶅巻搴忓垪鐨� RMQ 闂锛岀浉褰撲簬鎴戜滑鏋勯€犱簡涓€绉� Sequence锛屽叾鏀寔瀵瑰叾浠绘剰涓€娈典互瀵瑰簲鍏抽敭瀛楃殑 RMQ锛屽叾 key 鍗充负鏍戜笂鐨勬繁搴� depth锛屾樉鐒舵垜浠渶瑕佺淮鎶ょ殑鏄繁搴︽渶灏忕殑鐐广€�
鍦� Sequence 鐨勫疄鐜颁腑锛屾垜浠澶勭悊鍑� \(f[i][j]\) 琛ㄧず鍦� \([i,i+2^j)\) 杩欎釜鍖洪棿涓殑 \(key\) 鏈€灏忕殑鐐规槸鍝竴涓€�
鏁翠釜瀹炵幇鐨勭粨鏋勬槸杩欐牱锛孲equence 鎻愪緵涓€涓敮鎸佸尯闂存渶灏忓叧閿瓧浣嶇疆璇㈤棶鐨勬搷浣滄帴鍙o紝Tree 绫荤敤浜庢爲鐨勫瓨鍌紝鑷繁杩涜 DFS锛屽苟鏋勫缓涓€涓� Euler 閬嶅巻搴忓垪浠� Sequence 褰㈠紡瀛樺偍锛岄澶勭悊鐨勬椂鍊欒皟鐢� Sequence 绫荤殑棰勫鐞嗭紝鍦ㄩ亣鍒� LCA 璇㈤棶鐨勬椂鍊欏幓璋冪敤 Sequence 鎻愪緵鐨� RMQ 鎺ュ彛銆傚绛旀鐨勮绠楁斁鍦ㄤ富绋嬪簭涓繘琛屻€�

[CF1C] Ancient Berland Circus

Description

涓€涓鍒� (绛夎) 澶氳竟褰紝寰楀埌浜嗚繖涓夋牴鏌卞瓙鐨勫潗鏍囷紝杈撳嚭鍙や唬绔炴妧鍦虹殑鍙兘鐨勬渶灏忓尯鍩熼潰绉€�

Solution

濮嬬粓鍥寸粫鐫€璇ュ杈瑰舰鐨勫鎺ュ渾鏉ュ仛锛屽亣璁句笁涓《鐐� A,B,C 瀵瑰簲鐨勫渾鍛ㄨ涓� A,B,C锛屽搴旂殑瀵硅竟闀垮害涓� a,b,c銆�
鐢ㄦ捣浼﹀叕寮忔眰鍑轰笁瑙掑舰闈㈢Н S锛岀敤姝e鸡瀹氱悊姹傚嚭澶栨帴鍦嗗崐寰� R锛岀敤浣欏鸡瀹氱悊姹傚嚭鍚勮竟瀵瑰簲鐨勫渾鍛ㄨ oa,ob,oc锛堝叾瀹炲彧闇€瑕佹眰鍏朵腑涓や釜锛夛紝鐒跺悗姹傛渶澶у叕绾︽暟寰楀埌姝e杈瑰舰姣忚竟瀵瑰簲鐨勫渾蹇冭 theta锛岃繘鑰屽緱鍒版暣涓浘褰㈢殑闈㈢Н ans銆�
绮惧害寰堢巹瀛︹€︹€�

[CF208E] Blood Cousins - dsu on tree, LCA

Description

缁欎綘涓€鐗囨.鏋楋紝姣忔璇㈤棶涓€涓偣涓庡灏戜釜鐐规嫢鏈夊叡鍚岀殑 K 绾х鍏堛€�

Solution

dsu on tree
棣栧厛锛屾眰鍑轰竴涓偣鐨� k 绾х鍏堬紝骞朵笖鎶婅闂寕鍦ㄤ粬韬笂锛岄棶鐨勫氨鏄繖涓偣 p 瀛愭爲鍐呮湁澶氬皯涓繁搴︿负 d 鐨勭偣
鍦� dfs 杩囩▼涓紝瀵规瘡涓偣锛岄€掑綊澶勭悊鍚勪釜瀛╁瓙锛屽悓鏃朵繚鐣欏叾閲嶅瀛愮殑璐$尞锛屽啀鍔犱笂杞诲瀛愮殑璐$尞锛屽緱鍒拌嚜韬殑璐$尞
鎬荤粨涓€涓嬫垜浠渶瑕佹敮鎸佸摢浜涗簨鎯咃細姹� k 绾х鍏堬紙鍊嶅澶勭悊锛夛紝灏嗚闂寕鍦ㄧ鍏堜笂锛屾爲涓婂惎鍙戝紡鍚堝苟澶勭悊鎵€鏈夎闂�
鎵惧埌3涓笉瓒呰繃n鐨勬鏁存暟锛堝彲浠ョ浉鍚岋級锛屼娇寰楀畠浠殑lcm锛堟渶灏忓叕鍊嶆暟锛夋渶澶с€�

Solution

鍙互鍋氬緱寰堜紭闆呭惂锛屼絾鎴戝枩娆紙鍙細锛夋毚鍔涗竴鐐�
鏍规嵁璐ㄦ暟瀵嗗害鍒嗗竷鎬ц川锛屾渶鍚庢墍鍙栫殑杩欎笁涓暟涓€瀹氫笉浼氭瘮 \(n\) 灏忓お澶氾紙瀹炲湪涓嶈灏卞彇涓変釜璐ㄦ暟鍛€锛夛紝鎵€浠ユ垜浠挦瀹氫竴涓晫锛岀劧鍚庢毚鍔涙灇涓惧彇鏈€浼樺嵆鍙�
缁欏嚭 N 涓鐗╋紝姣忎釜妞嶇墿閮藉睘浜庝竴涓搧绉嶏紝鍏辫 m 涓搧绉嶏紝鍒嗚惤鍦ㄤ笉鍚岀殑浣嶇疆涓婏紙鍦ㄤ竴涓暟杞翠笂锛岃€屼笖鏁拌酱鏄棤闄愰暱搴︾殑锛夛紝淇濊瘉璇诲叆鐨勪綅缃槸鎸夌収鍗囧簭璇诲叆鐨勩€�
鐜板湪鎴戜滑鍙互杩涜涓€涓搷浣滐細鍙栦换鎰忎竴涓綅缃笂鐨勬鐗╋紝绉诲姩鍒颁换鎰忎竴涓病鏈夋鐗╃殑浣嶅瓙涓婂幓銆�
闂垜浠渶灏戣繘琛屽灏戞鎿嶄綔锛岃兘澶熶娇寰椾粠宸﹀埌鍙筹紝鏄寜鐓у搧绉嶅崌搴忔帓鍒楃殑锛�1 ~ m锛夛紙鍗曡皟涓嶉檷锛夛紝鑰屼笖姣忕妞嶇墿閮界浉閭汇€�

Solution

姹備竴涓嬫渶闀块潪涓ユ牸涓婂崌瀛愬簭鍒楀嵆鍙�

[CF276B]

Description

缁欏畾瀛楃涓� \(S\) 锛屼袱浜鸿疆娴侊紝姣忔浠庡瓧绗︿覆涓换鎰忓彇鍑轰竴涓瓧绗﹀苟浠庡師涓蹭腑鍒犲幓銆傚鏋滄煇浜烘煇娆℃搷浣滃墠锛屼覆绉嶅墿浣欑殑瀛楃闆嗗悎缁忚繃鎺掑垪鍙互寰楀埌鍥炴枃涓诧紝閭d箞杩欎釜浜哄氨鑳滃埄銆傛眰鑳滆礋銆�

Solution

鏄剧劧杩欎釜瀛楃涓插彲浠ョ湅鎴愪竴涓瓧姣嶅閲嶉泦鍚堛€傞偅涔堟垜浠粺璁″嚭姣忕瀛楃鍑虹幇鐨勬鏁般€傝€冭檻鏈夊灏戠瀛楁瘝鍑虹幇娆℃暟涓哄鏁版锛岃涓� \(m\) 銆傚鏋� \(m \le 1\) 锛岄偅涔堝厛鎵嬭儨鍒┿€�
\(k=2\) 鏃讹紝鍏堟墜鍙互灏嗗皢涓€涓鏁版杞寲涓哄伓鏁版锛岄偅涔堝悗鎵嬭儨鍒╋紱鍏堟墜涔熷彲浠ュ皢涓€涓伓鏁版杞寲涓哄鏁版锛屽亣濡傚彲浠ヨ繘琛岃繖鏍风殑鎿嶄綔锛岄偅涔堝悗鎵嬪皢杩欎釜鏂拌浆鍖栫殑濂囨暟娆¤浆鍖栦负鍋舵暟娆★紝灞€闈㈠洖褰掑埌涓庡紑灞€绛変环鐨勭姸鎬侊紝鐩村埌鏌愪釜鏃跺埢鍏堟墜涓嶈兘鍐嶅埗閫犲嚭鏂扮殑濂囨暟娆★紝姝ゆ椂蹇呯劧鍚庢墜鑳溿€�
\(k=3\) 鏃讹紝鍏堟墜鍏堝皢涓€涓鏁版杞负鍋舵暟娆★紝杩欐牱灏辫浆鍖栧埌浜� \(k=2\) 鐨勭姸鎬侊紝鍏堝悗鎵嬬姸鎬佸亸绉伙紝浜庢槸鍏堟墜鑳滃埄銆�
\(k=4\) 鏃讹紝鍏堟墜鍙互鍏堝皢涓€涓鏁版杞寲涓哄伓鏁版锛岄偅涔堣繖鏃跺€欒浆鍖栦负 \(k=3\) 鏁呭悗鎵嬭儨鍒╋紱鍏堟墜涔熷彲浠ュ厛灏嗕竴涓鏁版杞寲涓哄伓鏁版锛岀劧鍚庝豢鐓� \(k=2\) 鎯呭喌杩涜鍚庣画锛屽埌鏌愪釜鏃跺埢鍏堟墜涓嶈兘鍐嶅埗閫犲嚭鏂扮殑濂囨暟娆★紝姝ゆ椂蹇呯劧鍚庢墜鑳溿€�
鍚岀悊鍙緱鍚庣画鎯呭喌銆�

Description

鏈変竴鍙浇閲嶄负 \(k \le 5\times10^3\) 鐨勮埞鍦ㄤ袱宀镐箣闂村線杩旓紝鏈� \(n \le 50\) 涓汉瑕佽繃娌筹紝姣忎釜浜虹殑浣撻噸鍙兘浣� \(50\) 鎴� \(100\)锛岄棶鏈€灏戠殑鏉ュ洖娆℃暟浠ュ強瀵瑰簲鐨勬柟妗堟暟銆�

Solution

璁� \(f[i][j][0/1]\) 琛ㄧず瀵瑰哺宸茬粡鏈� \(i\) 涓� \(50\) 鍜� \(j\) 涓� \(100\) 鏃舵渶灏戠殑鑸娆℃暟锛�\(g[i][j][0/1]\) 涓哄搴旂殑鏂规鏁�
鏋氫妇鏈璧扮殑 \(k,l\) 涓暟锛屽埄鐢ㄧ粍鍚堟暟杩涜杞Щ鍗冲彲
鏈€澶氳浆绉� \(2n\) 杞竴瀹氳兘瀹屼簨锛屽鏉傚害 \(O(n^5)\)
缁欏畾鐢遍潪璐熸暣鏁扮粍鎴愮殑n脳n 鐨勬鏂瑰舰鐭╅樀锛屼綘闇€瑕佸鎵句竴鏉¤矾寰勶細
浠ュ乏涓婅涓鸿捣鐐�
姣忔鍙兘鍚戝彸鎴栧悜涓嬭蛋
浠ュ彸涓嬭涓虹粓鐐� 骞朵笖锛屽鏋滄垜浠妸娌胯矾閬囧埌鐨勬暟杩涜鐩镐箻锛岀Н搴斿綋鏄渶灏忊€渞ound鈥濓紝鎹㈠彞璇濊锛屽簲褰撲互鏈€灏忔暟鐩殑0鐨勭粨灏�.

Solution

鑰冭檻鍒版渶缁堢瓟妗堝彧鍙栧喅浜� \(2,5\) 鍥犲瓙鏁颁腑鏈€灏忕殑閭d竴涓紝鎵€浠ュ彲浠ユ媶寮€鑰冭檻锛岀劧鍚庡氨鏄竴涓湸绱犵殑鏈€灏忓拰璺緞dp浜�
娉ㄦ剰濡傛灉鍘熺煩闃典腑鍖呭惈闆讹紝绛旀瑕佸拰 \(1\) 鍙� min 涓€涓�

Description

缁欏畾闀垮害涓� \(n\) 鐨勬暟鍒楋紝姣忎釜鏁伴兘鍦� \([1,n]\) 闂达紝鍥炵瓟 \(m\) 涓闂紝姣忔缁欏畾涓€涓尯闂� \([l,r]\)锛岄棶鍏朵腑鏈夊灏戝鏁伴棿瀛樺湪鍊嶆暟鍏崇郴銆�

Solution

鑰冭檻绂荤嚎澶勭悊锛屽皢鎵€鏈夎闂尯闂存寜鍙崇鐐规帓搴�
鐢ㄦ爲鐘舵暟缁勶紙鍗曠偣淇敼锛屽尯闂存眰鍜岋級鍔ㄦ€佺淮鎶ゆ瘡涓綅缃殑璐$尞锛屽浜庝竴瀵规暟锛屾垜浠缁堝皢璐$尞璁板綍鍦ㄤ綅缃潬鍓嶇殑閭d釜鏁拌韩涓婏紝璁颁负 \(f[i]\)
浠庡乏鍒板彸鎵弿鏁翠釜搴忓垪锛屽浜庡綋鍓嶄綅缃� \(i\) 涓婄殑鏁� \(p_i\)锛屾垜浠€冭檻瀹冪殑鎵€鏈夊€嶆暟 \(p_j\)
鑻� \(j<i\)锛屽垯 \(f[ j ]+=1\)
鑻� \(j>i\)锛屽垯闇€瑕佸欢杩熷鐞嗭紝鎴戜滑瀵规瘡涓綅缃淮鎶や竴涓棤搴忛泦鍚堬紙瀹炵幇鐢� vector锛夛紝閬囧埌杩欐牱鐨勬儏鍐碉紝灏卞皢 \(i\) 鍔犲叆 \(j\) 鐨勯泦鍚堜腑锛岃€屾瘡涓偣琚壂鎻忔椂锛屽垯浼氬鐞嗗畠闆嗗悎涓殑鎵€鏈� \(k\)锛屽皢 \(f[k]+=1\)

Description

鐮嶄紣楂樺害涓� \(a_1,a_2,...,a_n\) 鐨� \(n\) 妫垫爲銆傛瘡娆′粬浠缂栧彿涓� \(i\) 鐨勬爲浣跨敤鐢甸敮锛屼細浣跨 \(i\) 涓爲鐨勯珮搴﹂檷浣� \(1\)銆傛瘡娆′娇鐢ㄧ數閿悗闇€瑕佺粰瀹冨厖鐢点€傚厖鐢垫垚鏈彇鍐充簬宸插畬鍏ㄩ敮鎺夌殑鏍戞湪鐨勭紪鍙凤紙鏍戞湪楂樺害绛変簬 \(0\) 鏃讹紝鎴戜滑璇存爲鏈ㄨ瀹屽叏閿帀 锛夈€傚鏋滃凡缁忚瀹屽叏閿帀鐨勬爲鐨勬渶澶х紪鍙锋槸 \(i\) 锛屽垯瀵圭數閿厖鐢典竴娆$殑鎴愭湰灏嗘槸 \(b_i\) 銆傜數閿湪寮€濮嬫椂鏄厖濂界數鐨勩€備繚璇佸浜� \(a,b\) 鐨勪弗鏍煎崟璋冩€т互鍙� \(b_n = 0,a_1 = 1\) 銆傝浠ユ渶浣庢垚鏈畬鍏ㄩ敮鎺夋墍鏈夌殑鏍戯紝璁$畻杩欎釜鏈€灏忎唬浠枫€�

Solution

鍙鎴戜滑閿帀绗� \(n\) 妫垫爲閭d箞鍓╀笅鐨勯儴鍒嗕唬浠烽兘鏄� \(0\)锛屽洜姝ゆ垜浠彧闇€瑕佽€冭檻閿帀绗� \(n\) 妫垫爲鐨勬渶灏忎唬浠�
璁� \(f[i]\) 琛ㄧず閿帀绗� \(i\) 妫垫爲鐨勬渶灏忎唬浠凤紝鍒欐湁

\[f[i]=\min_{1\le i <j } (f[i]+a[i]b[j]) \]

瀵逛簬 \(j \le k\)锛岃嫢 \(k\) 浼樹簬 \(j\) 鍒欐湁 \(f[j]+a[i]b[j] > f[k]+a[i]b[k]\)锛屽寲涓烘枩鐜囧舰寮忎负

\[\frac {(-f[k])-(-f[j])} {b[k]-b[j]} < a[i] \]

鑰� \(a[i]\) 鍗曡皟閫掑锛屽洜姝ゆ垜浠敤鍗曡皟闃熷垪缁存姢涓嬪嚫鍖呭嵆鍙�

[CF321A] Ciel and Robot

Description

浣犵幇鍦ㄥ湪涓€涓糠瀹殑 \((0,0)\) 澶勶紝缁欏畾涓€涓寘鍚� \(\texttt{U,D,L,R}\) 鐨勬搷浣滃簭鍒� \(s\)锛屽叾涓� \(\texttt{U}\) 琛ㄧず鍚戜笂璧颁竴鏍硷紝\(\texttt{D}\) 琛ㄧず鍚戜笅璧颁竴鏍硷紝\(\texttt{L}\) 琛ㄧず鍚戝乏璧颁竴鏍硷紝\(\texttt{R}\) 琛ㄧず鍚戝彸璧颁竴鏍笺€備綘灏嗕細鎸夌収 \(s\) 浠庡乏寰€鍙崇殑鎿嶄綔绉诲姩锛屽苟涓旈噸澶嶈嫢骞叉銆傞棶浣犳槸鍚﹁兘澶熷埌杈� \((a,b)\) 澶勩€�

Solution

灏嗕竴杞腑鑳藉埌杈剧殑鎵€鏈変綅缃嵆涓� \(p_1,p_2,...,p_i\)锛岀洰鏍囦綅缃涓� \(target\)锛屾瘡鍋氬畬涓€杞殑鍋忕Щ閲忎负 \(offset\)銆傝嫢瀛樺湪 \(i\)锛屼娇寰� \(offset | (target-p_i)\)锛屽垯杈撳嚭 Yes銆�

[CF321C] Ciel the Commander - 鐐瑰垎娌�

Description

缁欏畾涓€妫垫爲锛岀粰姣忎釜鐐瑰垎閰嶄竴涓瓑绾х敤鑻辨枃瀛楁瘝琛ㄧず锛屾弧瓒充换鎰忎袱涓瓑绾х浉鍚岀殑鐐� x,y 鐨勮矾寰勪笂蹇呯劧鏈変竴涓瓑绾ф洿楂樼殑鐐� z銆�

Solution

鑰冭檻閫夋嫨鐐� p 骞跺垎閰嶇粰瀹冩渶澶х殑鏉冮噸锛屾鏃惰嫢鍒犻櫎鐐� p锛岀暀涓嬬殑鑻ュ共妫靛瓙鏍� t1,t2,...,tm 浠栦滑涔嬮棿鐨勯棶棰樺凡缁忚В鍐充簡锛屽彧闇€瑕佽В鍐充粬浠箣鍐呯殑闂銆�
杩欐瀯鎴愪簡涓€涓ぉ鐒剁殑鍒嗘不缁撴瀯锛屾垜浠笇鏈涗娇寰楀垎娌荤粨鏋勭殑鏍戦珮鏈€灏忥紝閲囩敤鐐瑰垎娌荤殑绛栫暐锛屾瘡娆¢€夋嫨閲嶅績浣滀负鍒嗘不鐐瑰嵆鍙€�
鍥炲繂涓€涓嬫垜浠槸鎬庢牱瀹炵幇鐐瑰垎娌荤殑銆傛瘡涓偣璁剧疆涓€涓闂爣璁帮紝浠h〃杩欎釜鐐规槸鍚﹀凡缁忚浣滀负鍒嗘不鐐瑰鐞嗚繃锛岄偅涔堟垜浠綋鍓嶈澶勭悊鐨勫氨鏄敱鏈爣璁扮偣鏋勬垚鐨勪竴涓繛閫氬潡銆傛垜浠鍏堣绠楀嚭姣忎釜鐐圭殑瀛愭爲澶у皬浠ュ強鏈€澶у瓙鏍戝ぇ灏忥紙閫氳繃涓€娆� DFS + 涓€娆¢亶鍘嗗疄鐜帮級锛屽苟鎵惧埌鍏锋湁鏈€灏忕殑鏈€澶у瓙鏍戝ぇ灏忕殑鐐癸紝鏍囪杩欎釜鐐癸紝缁欏畠鍒嗛厤绾у埆锛岀劧鍚庡鐞嗗叾鎵€鏈夋湭鏍囪杩囩殑閭诲眳鎵€寮曞鐨勮繛閫氬潡銆�

[CF321E] Ciel and Gondolas - 鍐崇瓥鍗曡皟鎬p

Description

鏈� n 涓汉鍦ㄩ槦鍒楅噷锛屾湁 k 鏉¤埞锛岀 i 鏉¤埞鍒版椂锛屽墠鑻ュ共涓汉鍙互涓婅埞銆傛渶鍚庝竴鏉¤埞灏嗚浇璧版墍鏈夌殑浜恒€傜 i 涓汉鍜岀 j 涓汉澶勫湪鍚屼竴鏉¤埞涓婁細浜х敓 uij 鐨勬伯涓у€硷紝姹傚嚭鏈€灏忕殑娌抚鍊煎拰銆�\(n \le 4000, k \le 800\)

Solution

O(nnk) 鐨� dp 鏄樉鐒剁殑锛岀敱浜庢弧瓒冲洓杈瑰舰涓嶇瓑寮忥紝鍏锋湁鍐崇瓥鍗曡皟鎬�

[CF342E] Xenia and Tree - 鍒嗗潡,ST琛�,LCA

Description

缁欏畾涓€棰� \(n\) 涓粨鐐圭殑鏍戯紝鍒濆鏃� \(1\) 鍙风粨鐐逛负绾㈣壊锛屽叾浣欎负钃濊壊銆傝姹傛敮鎸佸皢涓€涓粨鐐瑰彉涓虹孩鑹诧紝鎴栬€呰闂竴涓偣鍒版渶杩戠殑绾㈣壊鐐圭殑璺濈銆�

Solution

瀵规暣涓搷浣滃簭鍒楀垎鍧楋紝鍒欐墍鏈夌殑褰卞搷鍒嗕负鍧楅棿鐨勫拰鍧楀唴鐨勩€傚潡鍐呯殑鐢� ST 琛� LCA 鏉ュ鐞嗭紝鍧楅棿鐨勯澶勭悊濂斤紝鍗虫瘡澶勭悊瀹屼竴涓潡锛屾垜浠氨鐢� BFS 璁$畻濂借繖涓潡鐨勫悗缁奖鍝嶃€傚鏉傚害 \(O(n \sqrt n)\)

Description

缁欏畾涓€妫垫爲锛屾彁渚� \(3\) 绉嶆搷浣滐紝姣忔鎸囧畾涓€涓偣锛屽皢瀹冪殑鎵€鏈夊瀛愭煋鑹蹭负 \(1\)锛屾垨瀹冨埌鏍圭殑璺緞鏌撹壊涓� \(0\)锛屾垨璇㈤棶瀹冩槸鍚﹁鏌撹壊銆�

Solution

澶嶄範涓€涓嬫爲閾惧墫鍒嗐€備富瑕佹槸鍏充簬璇㈤棶鐨勯儴鍒嗐€�
鎴戜滑鎸夌収杩欐牱鐨勬柟寮忓幓澶勭悊涓€涓闂細濡傛灉 top[p] 鍜� top[q] 涓嶇浉绛夛紝閭d箞鎴戜滑灏变粠 top 娣卞害杈冨ぇ鐨勯偅涓紙璁句负 \(p\)锛夊悜涓婃煋涓€娈� \([top[p],p]\)锛岀劧鍚庡皢 \(p\) 淇敼涓� \(fa[top[p]]\)銆傛渶鍚庡浜庡墿涓嬬殑锛屾繁搴﹁緝澶х殑 \(x\) 鍜屾繁搴﹁緝灏忕殑 \(y\)锛屾垜浠繕闇€瑕佹煋涓€娈� \([y,x]\)銆傛墍鏈夋搷浣滀緷鎹� DFS 搴忚繘琛屻€�
绾挎鏍戦渶瑕佹敮鎸佸尯闂磋鐩栧拰鍗曠偣璇㈤棶锛屽綋鐒朵篃鍙互杞寲涓哄樊鍒嗙殑鍗曠偣淇敼鍖洪棿姹傚拰銆�

[CF354C] Vasya and Beautiful Arrays

Description

瀹氫箟涓€涓暟缁勭殑缇庝附搴︿负杩欎釜鏁扮粍鎵€鏈夊厓绱犵殑鏈€澶у叕绾︽暟锛屽浜庢瘡涓厓绱犲彲浠ュ噺涓€涓� \(0 \sim k\) 鐨勬暟锛屽噺瀹屼互鍚庤鍏冪礌蹇呴』闈炶礋锛屾眰鍑鸿繖涓暟缁勭殑鏈€澶х編涓藉害銆�

Solution

鏄剧劧 ans 涓嶄細澶т簬鏈€灏忔暟锛岃 ans 绛変簬鏈€灏忔暟锛屽惊鐜亶鍘嗘瘡涓暟锛屽鏋滀笉绗﹀悎鏉′欢灏卞皢 ans 鍑忎竴缁х画寰幆閬嶅巻

Description

缁欏畾 \(n\) 鏉$嚎娈� \([l_i,r_i]\)锛屾湁 \(m\) 涓闂紝姣忔缁欏畾鑻ュ共涓偣锛岄棶澶氬皯绾挎鑳借嚦灏戣鐩栬繖浜涚偣涓殑涓€涓€�

Solution

琛ラ泦杞寲锛屾眰澶氬皯绾挎涓€涓偣涔熶笉鑳借鐩栥€�
鐐瑰皢鏁拌酱鍒嗗壊鎴愪簡涓€涓嚎娈甸泦锛屽嵆姹傛湁澶氬皯鍘熷绾挎鏄寘鍚湪璇㈤棶绾挎闆嗕腑鐨勪竴涓嚎娈典腑鐨勩€�
瑕佽闂竴涓嚎娈靛寘鍚殑鍘熷绾挎涓暟锛岃€冭檻绂荤嚎澶勭悊锛岀敤鏍戠姸鏁扮粍缁存姢鍗冲彲銆�
鍏蜂綋鍦帮紝鎸夊彸绔偣鎺掑簭鍚庢壂鎻忥紝鎵埌涓€涓師濮嬬嚎娈靛氨鍦ㄦ爲鐘舵暟缁勭殑宸︾鐐逛綅缃姞涓€锛屾壂鍒颁竴涓闂嚎娈靛氨鐩存帴鎵弿閮ㄥ垎鐨勫悗缂€鍜屾潵缁熻绛旀锛堟壂鎻忛『搴忎繚璇佷簡鍙崇鐐归『搴忥紝鍚庣紑鍜屼繚璇佷簡宸︾鐐瑰叧绯伙紝鏁呰闂嚎娈靛寘鍚簡鍘熷绾挎锛�

[CF375D] Tree and Queries - dsu on tree

Description

缁欏畾涓€妫垫爲锛屾牴涓� \(1\)锛屾瘡涓偣涓婃湁棰滆壊 \(c_i\)锛屾湁 \(m\) 娆¤闂紝姣忔鎸囧畾 \(u,k\)锛岄棶 \(u\) 涓烘牴鐨勫瓙鏍戜腑锛屽嚭鐜版鏁� \(\ge k\) 鐨勯鑹叉湁澶氬皯绉嶃€�

Solution

dsu on tree锛屾瘡娆℃壘鍒板厛澶勭悊鎵€鏈夎交鍎垮瓙锛屾渶鍚庡鐞嗛噸鍎垮瓙锛屽鐞嗗畬閲嶅効瀛愬悗涓嶆竻绌猴紝鏆村姏鍔犱笂鎵€鏈夎交鍎垮瓙鐨勮础鐚紝寰楀埌璇ュ瓙鏍戝唴鎵€鏈夌偣鐨勮础鐚€�
鐢变簬瑕佺淮鎶ょ殑鏄湁澶氬皯棰滆壊鏁� \(\ge k\)锛屾垜浠緢瀹规槗鎯冲埌鐢� BIT 鐨勫仛娉曪紝浣嗗叾瀹炲苟涓嶉渶瑕併€�
璁� \(cnt[i]\) 琛ㄧず棰滆壊 \(i\) 鍑虹幇浜嗗灏戞锛岃 \(sum[i]\) 琛ㄧず鍑虹幇娆℃暟澶т簬绛変簬 \(i\) 鐨勯鑹叉暟閲忔湁澶氬皯锛岄偅涔堝湪姣忔鍋囪鐜板湪 \(cnt[i]\) 浠� \(x\) 鍙樹负 \(x+1\)锛屾垜浠彧闇€瑕佸湪 \(sum[x+1]\) 涓婂姞涓€鍗冲彲锛屽弽涔嬩害鐒躲€�

Description

缁欏畾涓€涓嫭鍙峰簭鍒楋紝姣忔璇㈤棶涓€涓尯闂达紝姹傝繖涓尯闂寸殑鎵€鏈夊瓙搴忓垪涓紝鍚堟硶鎷彿搴忓垪鐨勬渶澶ч暱搴︺€�

Solution

鑰冭檻绾挎鏍戯紝瀵逛簬涓€涓尯闂达紝鍏跺唴閮ㄧ浉浜掑尮閰嶅悗锛屼竴瀹氫細鍓╀笅鑻ュ共鐨勫乏鎷彿鍫嗙Н鍦ㄥ彸渚э紝鑻ュ共鐨勫彸鎷彿鍫嗙Н鍦ㄥ乏渚с€�
鍚堝苟鍖洪棿鏃讹紝宸﹁竟鍓╀綑鐨勫乏鎷彿鍜屽彸杈瑰墿浣欑殑鍙虫嫭鍙蜂細鐩镐簰娑堝幓涓€閮ㄥ垎銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡娆℃搷浣滀竴涓粨鐐癸紙灏嗗畠鍔犱笂 \(v\)锛屽瀛愬噺鍘� \(v\)锛屽瀛愮殑瀛╁瓙鍔犱笂 \(v\)锛屼互姝ょ被鎺級锛屾垨鑰呮煡璇竴涓粨鐐圭殑鍊笺€�

Solution

鑰冭檻缁存姢涓や釜搴忓垪锛屼竴涓簭鍒椾腑鎵€鏈夋繁搴︿负濂囨暟鐨勭偣鏄湁鏁堢殑锛屽彟涓€涓簭鍒椾腑鎵€鏈夋繁搴︿负鍋舵暟鐨勭偣鏄湁鏁堢殑銆傚鏋滄搷浣滅殑涓€涓偣鏄鏁版繁搴︾殑锛岄偅涔堝氨鍦ㄥ墠鑰呬腑鍔狅紝鍚庤€呬腑鍑忥紝鑻ユ槸鍋舵暟娣卞害鍒欐伆濂界浉鍙嶃€傚綋鎴戜滑鍙栧嚭涓€涓偣鐨勬潈鍊肩殑鏃跺€欙紝鏍规嵁瀹冩槸濂囨暟娣卞害鐨勭偣杩樻槸鍋舵暟娣卞害鐨勭偣鍒板搴旂殑搴忓垪涓彇鍗冲彲銆�
閫氳繃 DFS 搴忚浆鍖栦负鍖洪棿鎿嶄綔鍗曠偣璇㈤棶锛屽啀閫氳繃宸垎杞寲涓哄崟鐐逛慨鏀瑰尯闂磋闂紝浜庢槸鐢ㄦ爲鐘舵暟缁勫鐞嗗嵆鍙€�
鏈変竴杈嗚浇閲嶉噺涓� v 鐨勮揣杞︼紝 鍑嗗杩愰€佷袱绉嶇墿鍝併€� 鐗╁搧 A 鐨勯噸閲忎负 1锛� 鐗╀綋 B 鐨勯噸閲忎负 2锛� 姣忎釜鐗╁搧閮芥湁涓€涓环鍊笺€� 姹傝揣杞﹀彲浠ヨ繍閫佺殑鐗╁搧鐨勬渶澶т环鍊笺€�

Solution

鑰冭檻鎶婄墿鍝佸垎涓轰袱绫伙紝鏋氫妇 B 绫婚€夊灏戜釜锛岃€冭檻鍒版瘡涓€绫讳腑涓€瀹氫細浼樺厛閫夋嫨浠峰€兼渶楂樼殑閭d簺锛屾帓搴忓嵆鍙�

Description

姹傚湪涓や釜缁欏畾瀛楃涓蹭腑鍚勫彧鍑虹幇涓€娆$殑鏈€鐭殑鍏叡瀛愪覆銆�

Solution

瀵逛袱涓粰瀹氫覆寤虹珛骞夸箟 SAM锛屽姣忎釜缁撶偣锛屽垎鍒褰曟簮浜庡悇涓覆鐨� \(endpos\) 闆嗗悎鐨勫ぇ灏� \(cnt[i][0], cnt[i][1]\)
閬嶅巻鎵€鏈夎妭鐐� \(p\)锛岃嫢 \(cnt[p][0] = 1 \and cnt[p][1] = 1\) 鍒欒鐐瑰悎娉曪紝鐢ㄥ畠鐨� \(minlen\) 鏇存柊绛旀

Description

姹傛弧瓒� \(n+1\sim 2n\) 涔嬮棿鎭版湁 \(m\) 涓暟浜岃繘鍒惰〃绀轰腑鏈� \(k\) 涓� \(1\) 鐨� \(n\)锛岃緭鍑轰换鎰忎竴涓В鍗冲彲銆�

Solution

瀹规槗璇佹槑 \(n+1 \sim 2n\) 涓湁 \(k\) 涓� \(1\) 鐨勪釜鏁伴殢鐫€ \(n\) 澧炲ぇ鑰屽崟璋冧笉闄�
浜庢槸浜屽垎 \(n\)锛岄棶棰樿浆鍖栦负姹� \(n+1 \sim 2n\) 涓湁 \(k\) 涓� \(1\) 鐨勬暟鐨勪釜鏁帮紝瀵逛簬姣忎竴娆℃眰 \(sum(i)\) 鍗� \(1 \sim i\) 涓湁 \(k\) 涓� \(1\) 鐨勬暟鐨勪釜鏁�
浠� \(f[i][j][0/1]\) 琛ㄧず鑰冭檻鍒板簳 \(i\) 浣嶏紝\(1\) 鐨勬暟閲忎负 \(j\) 鐨勬暟锛屽墠 \(i\) 浣嶆槸鍚﹀凡缁忚揪鍒版渶澶ф椂鐨勪釜鏁帮紝鍒�
濡傛灉 \(a[i]=1\)

\[f[i][j][0]=f[i-1][j][0]+f[i-1][j-1][0]+f[i-1][j][1] \\ f[i][j][1]=f[i-1][j-1][1] \]

濡傛灉 \(a[i]=0\)

\[f[i][j][0]=f[i-1][j][0] + f[i-1][j-1][0] \\ f[i][j][1]=f[i-1][j][1] \]

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勯暱瀛楃涓诧紝瀹岀編瀛愪覆鏃㈡槸瀹冪殑鍓嶇紑涔熸槸瀹冪殑鍚庣紑锛屾眰瀹岀編瀛愪覆鐨勪釜鏁颁笖缁熻杩欎簺瀛愪覆鐨勫湪闀垮瓧绗︿覆涓嚭鐜扮殑娆℃暟銆�

Solution

KMP 姹傚嚭 next 鏁扮粍锛屽垯 next 鏁扮粍浠庢渶鍚庝竴浣嶅紑濮嬭烦鍑犳鍒� 1 灏辨槸涓暟
瀵逛簬鍑虹幇娆℃暟锛岃涓� f[]锛屽垯 f[next[i]]+=f[i] 杞Щ鍗冲彲锛屽垵濮嬪€� f[i]=1

[CF438D] The Child and Sequence - 绾挎鏍�

Description

缁欏畾鏁板垪锛屾煡璇㈠尯闂村拰锛屽尯闂村彇妯★紝鍗曠偣淇敼銆�

Solution

绾挎鏍戯紝璁板綍鍖洪棿鏈€澶у€硷紝濡傛灉澶т簬瑕佸彇妯$殑鏁板氨鎶婁慨鏀规毚鍔涢€掑綊涓嬪幓銆�

Description

鏈変竴涓ぇ灏忎负 \(n\) 鐨勯泦鍚� \(S\)锛岄棶鎵€鏈夌偣鏉冮兘鍦ㄩ泦鍚堜腑锛屽苟涓旂偣鏉冧箣鍜屽垎鍒负 \([0,m]\) 鐨勪簩鍙夋爲鐨勪釜鏁般€�

Solution

鍏堣€冭檻鏅€氱殑璁℃暟缁勫悎鍋氭硶銆傝 \(f(i)\) 琛ㄧず鐐规潈鍜� \(i\) 鐨勪簩鍙夋爲涓暟锛堟敞鎰� \(f(0)=1\)锛夛紝\(c(i)\) 鏄泦鍚堜腑鏁扮殑鐢熸垚鍑芥暟锛岄偅涔堝 \(f(n)\) 鑰冭檻灏� \(n\) 浣滄墍鍒掑垎锛屾牴缁撶偣鐢ㄥ幓 \(i\)锛屽乏瀛愭爲鐢ㄥ幓 \(j\)锛屽垯

\[f(n)=\sum_{i=1}^{n}c(i)\sum_{j=0}^{n-i}f(j)f(n-i-j) \]

寰�$$F(x)=F(x) F(x) C(x)+1$$锛屼簬鏄湁

\[F(x)=\frac{2}{1+\sqrt{1-4C(x)}} \]

Description

\(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屽彟鏈� \(k\) 鏉$壒娈婅竟杩炴帴 \(1-i\)锛岄棶鏈€澶氬垹闄ゅ灏戞潯鐗规畩杈癸紝浣垮緱姣忎釜鐐瑰埌 \(1\) 鐨勬渶鐭窛绂讳笉鍙樸€�

Solution

鑰冭檻鍏堣绠楀埌姣忎釜鐐圭殑鏈€鐭矾鏉℃暟锛岀劧鍚庡垽鏂€�
濡傛灉 \(1 \to i\) 鏈夌壒娈婅竟锛岃嫢鐗规畩杈归暱搴� \(>\) 璺濈锛岄偅涔堟樉鐒惰繖鏉$壒娈婅竟娌℃湁璐$尞锛岀洿鎺ュ垹闄ゃ€傝嫢绛変簬璺濈锛屽苟涓旀渶鐭矾鏉℃暟 \(>1\)锛屽垯鍒犻櫎杩欐潯鐗规畩杈癸紝骞跺皢鏈€鐭矾鏉℃暟 \(-1\)銆�
娉ㄦ剰杩欓噷 \(-1\) 浠ュ悗鎴戜滑骞朵笉闇€瑕佸幓鑰冭檻瀹冨鍏跺畠鐨勭偣鐨勫奖鍝嶃€�

Description

缁欏畾 \(n\) 涓偣锛�\(m\) 鏉¤竟缁勬垚鐨勬.鏋楋紝鏈� \(q\) 娆℃搷浣滐紝姣忔鎿嶄綔瑕佷箞璇㈤棶鏌愮偣鎵€鍦ㄨ繛閫氬潡鐨勭洿寰勶紝瑕佷箞灏嗕袱涓笉鍚岀殑杩為€氬潡杩炴帴锛岃繛鎺ユ柟寮忚浣垮緱杩炴帴鍚庣殑鐩村緞鏈€鐭€�

Solution

璁句袱涓繛閫氬潡鐨勭洿寰勯暱搴﹀垎鍒负 \(l_1,l_2\)锛屽垯杩為€氬悗鐨勭洿寰勯暱搴︿负 \(\max(l_1,l_2,\lceil l_1/2 \rceil + \lceil l_2/2 \rceil + 1)\)
骞舵煡闆嗙淮鎶ゅ嵆鍙�
鐗瑰埆娉ㄦ剰鍒濇€佺殑鐩村緞鏄渶瑕佸缓鍥炬眰瑙g殑
锛堟嵁璇翠竴鏉¢摼鐨� Test 121 鍙互鍗″父锛燂級

[CF463C] Gargari and Bishops - 缁撹

Description

缁欏畾涓€涓� \(n \times n\) 鐨勫浗闄呰薄妫嬫鐩橈紝姣忎釜鏍煎瓙鏈変竴涓緱鍒嗭紝浣犻渶瑕佸湪妫嬬洏涓婃斁缃袱涓薄锛堝彲浠ユ部鐫€瀵硅绾胯璧帮級锛岃姹備笉鑳芥湁浣嶇疆鍚屾椂琚袱涓薄鏀诲嚮鍒帮紝鑰屾伆濂借兘琚竴涓薄鏀诲嚮鍒扮殑浣嶇疆鍙互鑾峰緱鏍煎瓙瀵瑰簲鐨勫緱鍒嗐€傛眰寰楀垎鐨勬渶澶у€硷紝浠ュ強鏀剧疆璞$殑鏂规銆�

Solution

棣栧厛锛屽鏄撹瘉鏄庯紝鑻ユ垜浠鏍煎瓙榛戠櫧鏌撹壊锛屽垯涓や釜璞′竴瀹氭斁鍦ㄥ紓鑹茬殑鏍煎瓙涓€�
浜庢槸鎴戜滑鍙互澶勭悊鍑烘瘡鏉″瑙掔嚎鐨勫拰锛岃繖鏍锋垜浠氨鍙互 \(O(1)\) 璇㈤棶灏嗚薄鏀惧湪涓€涓牸瀛愪腑鎵€鑳借幏寰楃殑寰楀垎銆傚悓鏃舵垜浠敞鎰忓埌锛屽湪婊¤冻涓婅堪鏉′欢鐨勬儏鍐典笅锛岃繖涓ょ鏂规鎵€鑳借幏寰楃殑绛旀鍏跺疄鏄嫭绔嬬殑锛屽洜姝ゆ垜浠彧闇€瑕佸垎鍒眰鍑烘渶澶у€煎嵆鍙€�
鎵惧埌鍚屾椂瀛樺湪浜� \(k \leq 5\) 涓帓鍒椾腑鐨� LCS

Solution

璁板綍姣忚涓瘡涓厓绱犵殑鍑虹幇浣嶇疆锛岄偅涔堟湰璐ㄤ笂鏄竴涓� \(k\) 缁村亸搴忛棶棰�
瀵逛簬 \(j<i\)锛屾垜浠毚鍔涙鏌� \(pos[a[j]] < pos[a[i]]\) 鏄惁瀵瑰叾瀹� \(k-1\) 涓淮搴︿篃鎴愮珛锛屽鏋滄槸灏辫浆绉�

Description

缁欏畾涓€涓暟缁� \(a\)锛屽寘鍚� \(n\) 涓暟瀛� \(a[1],a[2],a[3],...,a[n]\)銆傜幇鍦ㄤ綘瑕佹壘鍒版妸瀹冨垎鎴愪笁浠界殑鏂规硶锛屼娇寰楁瘡涓€浠戒箣鍐呮墍鏈夋暟鐨勫拰鐩哥瓑銆�

Solution

璁炬€诲拰涓� \(sum\)锛屽彧鑰冭檻 \(3|sum\) 鐨勬儏鍐碉紝璁� \(k=sum/3\)锛屽垯缁熻 \(s[i]=\sum_{j=1}^{i} [a[i]=k]\)锛屽垯 \(ans=\sum_{a[i]=2k} s[i-1]\)銆�

Description

鍏徃涓湁 \(n\) 鍚嶅憳宸ワ紝寮€濮嬫椂鍛樺伐涔嬮棿娌℃湁浠讳綍鑱旂郴锛屾帴涓嬫潵浼氫緷娆″彂鐢� \(m\) 鏉′簨浠讹紝绫诲瀷鏈変笁绉嶃€�

  • \(y\) 鎴愪簡 \(x\) 鐨勪笂鍙�
  • \(x\) 寰楀埌浜嗕竴浠芥枃浠讹紝\(x\) 鎶婃枃浠朵紶缁欎簡浠栫殑涓婂徃锛屼粬鐨勪笂鍙稿張浼氫紶缁欎笂鍙哥殑涓婂徃锛岀洿鍒版煇浜烘病鏈変笂鍙革紝姝ゆ椂鏂囦欢琚攢姣�
  • 璇㈤棶 \(x\) 鏄惁鐪嬭繃绗� \(i\) 浠芥枃浠�

Solution

鑰冭檻绂荤嚎澶勭悊锛屾椂搴忔壂鎻忥紝绗竴杞鐞� 1,2 鎿嶄綔锛岀浜岃疆澶勭悊璇㈤棶
瀵逛簬鎿嶄綔 1锛屽湪骞舵煡闆嗕腑鍚堝苟 \(x,y\)锛堥『搴忥紒锛夛紝鍦ㄦ.鏋椾腑鍔犺竟
瀵逛簬鎿嶄綔 2锛屾垜浠皢杩欎唤鏂囦欢璁板綍涓嬫潵锛屽叾淇℃伅涓� \(x\) 鍜屽畠鍦ㄥ苟鏌ラ泦涓殑鏍�
鏃跺簭鎵弿杩囩▼涓紝璁剧 \(i\) 浠芥枃浠舵秹鍙婄殑涓や釜鐐规槸 \(p_i,q_i\)锛屾垜浠彧闇€瑕佹鏌� \(x\) 鏄惁鍦� \(p,q\) 鏋勬垚鐨勯摼涓婂嵆鍙�
绠€鍗昫p + 鍓嶇紑鍜�

浣犺胺杩欎贡鏍囬毦搴︾殑椋庢皵鐪熸槸鈥︹€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝鏈� \(q\) 缁勮闂紝姣忔璇㈤棶缁欏畾涓€涓笅鏍囧尯闂� \([l,r]\)锛岄棶杩欎釜鍖洪棿涓紝鏈夊灏戞暟鍙互鏁撮櫎鍖洪棿涓殑鎵€鏈夋暟銆�

Solution

瀵逛簬鍖洪棿 \([l,r]\)锛�\(a_i\) 鏁撮櫎鎵€鏈夋暟鍗� \(a_i | \textrm{gcd}(a_l,a_{l+1},...,a_r)\)
浠� \(g=\textrm{gcd}(a_l,a_{l+1},...,a_r)\)锛屽彲浠ョ敤绾挎鏍戝湪 \(O(\log n)\) 鏃堕棿鍐呮眰鍑�
鑰� \(a_i | g \and a_i \le g \Rightarrow a_i = g\)锛屼簬鏄彧闇€瑕佺粺璁″尯闂翠腑绛変簬 \(g\) 鐨勪釜鏁板嵆鍙�
瀵规墍鏈夋暟瀛楃鏁e寲鍚庯紝瀵规瘡绉嶆暟鐢� vector 瀛樺偍鍏跺嚭鐜颁綅缃紝鏌ヨ鏃跺湪 vector 涓婁簩鍒嗗嵆鍙�

Description

鏈夌孩鑹层€佺豢鑹蹭袱绉嶇爾鍧楋紝鍒嗗埆鏈� \(r,g\) 鍧楋紝瑕佺敤浠栦滑鎼缓楂樺害鏈€澶х殑閲戝瓧濉旓紙绗� \(i\) 灞傛伆濂芥湁 \(i\) 鍧楃爾锛夛紝姣忎竴灞傜殑鐮栫殑棰滆壊蹇呴』鐩稿悓锛屾眰鏈夊灏戠鏂规銆�

Solution

鑰冭檻鍒板眰鏁版槸 \(\sqrt n\) 閲忕骇鐨勶紝鍥犳鎴戜滑鍙互绠€鍗曞湴 DP锛屼笉濡ㄨ璁$畻鍑虹殑灞傛暟涓� \(h\)锛岄偅涔堣繖鏍烽渶瑕佺殑鎬荤爾鍧楁暟鏄‘瀹氱殑锛屼笉濡ㄨ涓� \(tot\)銆�
璁� \(f[i][j]\) 琛ㄧず鍒朵綔浜� \(1-i\) 灞傦紝鐢ㄤ簡 \(j\) 鍧楃孩鐮栵紝鏈夊灏戠鏂规銆�

Description

缁欏畾涓€涓簭鍒� \(a_i\)锛岃鎵句袱涓暟 \(i,j\)锛屼娇寰� \(a_i \ge a_j\) 骞朵笖 \(a_i \bmod a_j\) 鐨勫€兼渶澶э紝姹� \(a_i \bmod a_j\) 鐨勬渶澶у€笺€�

Solution

鑰冭檻 \(a \bmod b = a-kb\)锛屽叾涓� \(kb \le a < (k+1)b\)
鑰冭檻鏋氫妇 \(k,b\)锛屽彲浠ラ€氳繃浜屽垎鎵惧埌鏈€澶х殑 \(a\)锛屾樉鐒舵鏃朵綑鏁颁篃鏈€澶�
澶嶆潅搴� \(O(n \log^2 n)\)
鏈変竴缁勬暟锛屼綘瑕佹妸浠栧垎鎴愯嫢骞茶繛缁銆傛瘡涓€娈电殑鍊硷紝瀹氫箟涓鸿繖涓€娈� 鏁颁腑鏈€澶у€间笌鏈€灏忓€肩殑宸€� 姹備竴绉嶅垎娉曪紝浣垮緱杩欒嫢骞叉鐨勫€肩殑鍜屾渶澶с€� N < 1e6, a[i] < 1e9銆�

\(O(n^2)\) dp

璁�\(f[i]\)琛ㄧず鍒嗗墠\(i\)涓暟鍙互寰楀埌鐨勬渶澶у拰锛屽垯

\[f_i = Max_{0 \leq j < i}(f[j]+Query(j+1,i)) \]

鍏朵腑\(Query(l,r)\)琛ㄧず鐨勬槸\([l,r]\)娈电殑鍊煎煙澶у皬锛屽彲浠ラ€氳繃\(O(n^2)\)棰勫鐞嗗緱鍒帮紝鐒跺悗\(O(n^2)\)鏆村姏杞Щ锛屾€讳綋澶嶆潅搴�\(O(n^2)\)

璐績

寮曠悊 姣忎竴娈靛唴涓€瀹氭槸鍗曡皟鐨�
浜庢槸锛屾樉鐒跺皢姣忎釜涓婂崌/涓嬮檷鍖洪棿鍒掍负涓€娈典竴瀹氭渶浼樸€傛敞鎰忚竟鐣岀殑鍐崇瓥銆�

Description

缁欏畾涓€妫靛甫鐐规潈鐨勬爲锛屾眰婊¤冻鐐规潈鏋佸樊涓嶈秴杩� \(d\) 鐨勮繛閫氬瓙鍥剧殑涓暟銆�\(n,d \le 2000\)銆�

Solution

鏋氫妇姣忎釜鐐逛綔涓烘渶澶у€� \(M\)锛岄偅涔堟鏃跺彧鏈夌偣鏉� \(\ge M-d\) 鐨勭偣鏄彲浠ヨ鑰冭檻鐨勩€�
鏍戝舰 dp锛岃 \(f[p]\) 琛ㄧず浠ュ綋鍓嶉€夋嫨鐨勬渶澶у€肩偣涓烘牴鐨勬儏鍐典笅锛�\(p\) 鐨勫瓙鏍戝唴锛岄€夊彇涓€涓寘鍚� \(p\) 鐨勯潪绌鸿繛閫氬瓙鍥剧殑鏂规鏁般€�
杞Щ鏃讹紝瀵逛簬 \(p\) 鐨勫瀛� \(q_1,q_2,...,q_k\)锛屼緷娆℃灇涓惧苟鏇存柊 \(f[p]\)锛屽嵆 \(f[p] \leftarrow f[p] + f[p] f[q_i]\)銆�
娉ㄦ剰鐐规潈鏄彲浠ラ噸澶嶇殑锛岃繖鏍风粺璁′細閫犳垚閲嶅璁$畻锛屾垜浠繀椤昏鏋勯€犵偣涔嬮棿鐨勪弗鏍煎叏搴忓叧绯伙紝鍥犳褰撶偣鏉冪浉绛夋椂锛屾瘮杈冪紪鍙峰ぇ灏忓嵆鍙€�

Description

缁欏畾涓€涓暟鍒楋紝瀵逛簬姣忎釜鍏冪礌锛岄棶瀹冨睘浜庝互涓嬪摢涓€绫伙細蹇呴』鍦ㄦ渶闀夸笂鍗囧瓙搴忓垪涓紱鍙兘鍦ㄦ渶闀夸笂鍗囧瓙搴忓垪涓紝涓嶅彲鑳藉湪鏈€闀夸笂鍗囧瓙搴忓垪涓€�

Solution

姹傛瘡涓厓绱犲紑澶村拰缁撳熬鐨勬渶闀夸笂鍗囧瓙搴忓垪闀垮害 \(f[i]\) 鍜� \(g[i]\)
濡傛灉 \(f[i]+g[i]-1<ans\)锛屽叾涓� \(ans\) 鏄暣涓簭鍒楃殑鏈€闀夸笂鍗囧瓙搴忓垪锛屽垯 \(i\) 涓嶅彲鑳藉湪鏈€闀夸笂鍗囧瓙搴忓垪涓�
濡傛灉瀛樺湪 \(j\)锛屼娇寰� \(f[i]=f[j], g[i]=g[j]\)锛屽垯 \(i\) 涓嶅湪鎵€鏈夌殑鏈€闀夸笂鍗囧瓙搴忓垪涓�
鍚﹀垯锛�\(i\) 涓€瀹氬湪鎵€鏈夌殑鏈€闀夸笂鍗囧瓙搴忓垪涓�

Description

鏈� \(n\) 棣栫嫭濂忎箰鏇诧紝绗� \(i\) 棣栫殑闊抽珮鑼冨洿涓� \([a_i,b_i]\)锛屾湁 \(m\) 浣嶆紨濂忓锛岀 \(i\) 浣嶈兘婕斿鐨勯煶楂樿寖鍥翠负 \([c_i,d_i]\)锛屼笖浠栨渶澶氬彲浠ュ嚭婕� \(k_i\) 娆°€傞棶鏄惁瀛樺湪鍚堟硶鏂规鑳戒娇鎵€鏈変箰鏇查兘琚紨濂忎竴娆°€�

Solution

瀵逛簬鎵€鏈変箰鏇插拰婕斿瀹讹紝鎸夌収宸︾鐐规帓搴忥紝浠庡皬鍒板ぇ渚濇鎵弿
缁存姢涓€妫垫紨濂忓鐨勫钩琛℃爲锛屽叧閿瓧涓� \(d_i\)锛屽悓鏃惰褰曞叾鍓╀綑鐨勫嚭婕旀鏁�
鎵弿涓紝姣忛亣鍒版柊鐨勬紨濂忓锛屽氨灏嗗叾鍔犲叆骞宠 鏍�
姣忛亣鍒版柊鐨勪箰鏇诧紝鏄剧劧瀵瑰钩琛℃爲涓墍鏈夌殑婕斿瀹讹紝涓€瀹氭弧瓒� \(c \le a\)锛屽彧闇€瑕佺害鏉� \(b \le d\)
鏁呭湪骞宠 鏍戜腑浜屽垎锛屾壘鍒� \(\ge b\) 鐨勭涓€浣嶆紨濂忓锛屽皢鍏跺嚭婕旀鏁� \(-1\)锛屽鏋滀负 \(0\) 鍒欏皢鍏朵粠骞宠 鏍戜腑鍒犻櫎

[CF498C] Array and Operations - 鏁拌,鏈€澶ф祦

Description

鏈変竴涓暱搴︿负 n 鐨勬暟缁� a 鍜� m 瀵规暟 \((i_1,j_1),(i_2,j_2)...,(i_m,j_m)\)锛屽浜庢瘡瀵规暟閮芥弧瓒� \(i_k + j_k\) 鏄竴涓鏁帮紝涓旀瘡涓暟閮藉湪 1 鍒� n 涔嬮棿銆備綘姣忔鎿嶄綔鍙渶瑕佹寫涓€瀵规暟锛堢粰瀹氱殑 m 瀵归噷闈級\(i_k,j_k\)锛岀劧鍚庝娇 \(a[i_k]=\frac{a[i_k]}{v},a[j_k]=\frac{a[j_k]}{v}\)锛寁 鏄竴涓笉绛変簬 1 鐨勬鏁存暟锛屼笖 \(v\) 鏄� \(a[i]\) 鍜� \(a[j]\) 鐨勫叕绾︽暟銆傞棶鏈€澶氬彲浠ヨ繘琛屽灏戞鎿嶄綔銆�

Solution

姣忔娑堝幓涓€涓川鍥犲瓙涓€瀹氭槸鏈€浼樿В
濂囨暟鐨勬€ц川鏄剧劧淇濊瘉浜嗘瘡娆℃搷浣滃彂鐢熷湪涓や釜涓嶅悓鐨勯儴鍒嗕箣闂达紝杩欐槸涓€涓樉鐒剁殑浜屽垎鍥�
瀵逛簬姣忎釜鏁扮殑姣忎釜璐ㄥ洜鏁板缓鐐癸紝鍒版簮/姹囷紙杩欏彇鍐充簬瀹冧綅缃殑濂囧伓鎬э級鐨勫閲忎负璐ㄥ洜瀛愮殑鎸囨暟
瀵逛簬涓€涓搷浣� \((i_k,j_k)\) 鎴戜滑鍦ㄨ繖涓や釜鏁扮殑鎵€鏈夌浉鍚岀殑璐ㄥ洜瀛愪箣闂磋繛杈癸紝瀹归噺鍙互璁句负鏃犵┓

Description

鏋勯€犱竴涓暱搴︿负 \(2n\) 鐨勫悎娉曟嫭鍙峰簭鍒楋紝浣垮緱瀵逛簬浠庡乏鍒板彸鐨勭 \(i\) 涓乏鎷彿锛屼笌瀹冮厤瀵圭殑鍙虫嫭鍙峰拰杩欎釜宸︽嫭鍙蜂箣闂寸殑璺濈鍦� \([l_i,r_i]\) 涔嬮棿銆�

Solution

鑰冭檻鐢ㄦ爤妯℃嫙锛屾爤椤舵嫭鍙峰鏋滆兘鍖归厤灏变竴瀹氬厛鍖归厤锛屽惁鍒欎細瀵艰嚧澶遍厤銆�
鍏蜂綋鍦帮紝瀵逛簬姣忎竴涓乏鎷彿锛屾垜浠绠楀嚭瀹冨湪搴忓垪涓兘鍖归厤鐨勭湡瀹炰綅缃紝鐒跺悗鍦ㄦ爤椤舵弧瓒虫潯浠舵椂寮规爤鍗冲彲銆�

Description

缁欏嚭 \(n\) 涓凡鐭ュ瓧绗︿覆锛�\(m\) 娆¤闂紝姣忔璇㈤棶缁欏嚭涓€涓瓧绗︿覆锛岄棶涓婇潰 \(n\) 涓瓧绗︿覆涓槸鍚︽湁涓€涓瓧绗︿覆婊¤冻鎭板ソ鏈変竴涓瓧姣嶄笉鍚屼簬璇㈤棶鐨勫瓧绗︿覆銆傚瓧绗︿覆鐨勫瓧绗﹂泦涓� {a,b,c}銆�

Solution

瀵逛簬姣忎釜宸茬煡瀛楃涓诧紝鎴戜滑鍙互灏嗗畠鐨� hash 鍊兼墧杩涗竴涓泦鍚堥噷銆�
瀵逛簬姣忎釜璇㈤棶涓诧紝鎴戜滑鏋氫妇淇敼鍝竴涓瓧绗︼紝浠ュ強淇敼鎴愪粈涔堛€�

[CF519E] A and B and Lecture Rooms - LCA

Description

缁欏畾涓€妫垫爲锛屾湁 \(m\) 缁勮闂紝姣忔缁欏畾涓や釜鐐� \(u,v\)锛岄棶鍒� \(u,v\) 璺濈鐩哥瓑鐨勭偣鏈夊灏戜釜銆�

Solution

涓€瀹氭槸杩炴帴 \(u,v\) 鐨勮矾寰勭殑涓偣浠ュ強瀹冩墍鍙戝嚭鐨勫叾瀹冨瓙鏍戙€�
浠ヤ笅璁� \(LCA(u,v)=l, MID(u,v)=c\)銆�
濡傛灉 \(l=c\)锛岄偅涔堢爫鎺変笌 \(u,v\) 鏈夊叧鐨勪袱妫靛瓙鏍戝嵆鍙€�
濡傛灉 \(l \neq c\)锛屽亣璁� \(DEP(u)>DEP(v)\)锛屽垯涓偣鐨勫瓙鏍戠爫鎺変笌 \(u\) 鏈夊叧鍙殑涓€妫靛瓙鏍戝嵆鍙€�
闂 1锛氬埌搴曟€庝箞姹備腑鐐癸紵

涓偣瀛樺湪鐨勫厖瑕佹潯浠朵负 $2|(DEP(u)+DEP(v))$锛屽鏋滀腑鐐瑰瓨鍦紝閭d箞瀹冪殑娣卞害锛屾槸鍙互姹傚嚭鐨勶細鐩撮摼鐨勬儏鍐典负 $\frac {DEP(u)+DEP(v)} 2$锛屾洸閾剧殑鎯呭喌涓嬶紝璁� $len = DEP(u)+DEP(v)-2DEP(l)$锛屽亣璁� $DEP(u) \ge DEP(v)$锛屽垯 $MID$ 鐨勬繁搴︿负 $DEP(u)-\frac {len} 2$銆傛眰鍑烘繁搴﹀悗锛屾垜浠粠杈冩繁鐐瑰€嶅鍚戜笂璺冲嵆鍙€�
闂 2锛氭€庢牱鐮嶆帀鐐� $p$ 涓庣偣 $q$ 鐩稿叧鐨勪竴妫靛瓙鏍戯紵
鎴戜滑灏� $q$ 鍊嶅鍚戜笂璺筹紝浣垮畠鎴愪负 $p$ 鐨勫瀛愶紝閭d箞姝ゆ椂鐨勬繁搴︽樉鐒舵槸 $DEP(p)+1$銆�
### Description 缁欏畾涓€涓暱搴︿负 $n$ 鐨勫瓧绗︿覆 $S$锛屾眰瀹冪殑鎵€鏈夊墠缂€涓紝鍝簺鍙互琚垝鍒嗕负 $ABAB...ABA$ 鐨勫舰寮忥紝鍏朵腑 $A,B$ 鏄彲浠ヤ负绌虹殑涓诧紝涓斾竴鍏卞寘鍚簡 $k$ 缁� $AB$銆� ### Solution 鑰冭檻浠� $S=AB$锛屾灇涓� $S$ 鐨勯暱搴� $i$锛屾垜浠彧闇€瑕佹鏌� $LCP(ji+1,1) \ge i, j=1..k-1$锛屽鏋滈兘婊¤冻锛屽垯鍙互灏嗙瓟妗堝簭鍒椾腑寰€鍚庣殑涓€娈佃鐩栦负 $1$ 鐢ㄦ墿灞� KMP 鍙互鍦� $O(n)$ 鏃堕棿鍐呭畬鎴愬 $LCP(i,1), i=1..n$ 鐨勮绠� 鎵€鏈夎鏋氫妇鐨勯暱搴﹀叡鏈� $O(n/k)$ 涓紝姣忔闇€瑕佹鏌� $O(k)$ 涓綅缃紝鏁呮€诲鏉傚害 $O(n)$ 鏁拌酱涓婃湁n 涓偣锛岀i 涓偣鐨勫潗鏍囦负xi锛屾潈鍊间负wi銆備袱涓偣i,j涔嬮棿瀛樺湪涓€鏉¤竟褰撲笖浠呭綋 abs(xi-xj)>=wi+wj銆� 浣犻渶瑕佹眰鍑鸿繖寮犲浘鐨勬渶澶у洟鐨勭偣鏁般€� ### Solution 鎶婃瘡涓偣鐪嬩綔浠� $(x_i,0)$ 涓哄渾蹇冿紝鍗婂緞涓� $r_i$ 鐨勫渾 閭d箞濡傛灉涓嶇浉浜ゅ氨鏈夎竟鐩歌繛 骞茶剢鐪嬩綔绾挎鍚э紝鎵€浠ュ氨鏄眰鏈€澶т笉鐩镐氦绾挎鏁� 杩欏氨鏄竴涓緢鍩虹鐨勮椽蹇冿紝浠ュ彸绔偣涓虹涓€鍏抽敭瀛楋紝宸︾鐐逛负绗簩鍏抽敭瀛� `sort` 鐒跺悗鈥滆兘鍙栧氨鍙栤€濆嵆鍙� ### Description 缁欏畾涓€涓幆鐘跺簭鍒楋紝姣忔鎿嶄綔閫夋嫨涓€涓尯闂达紝鏁翠綋鍔犱笂涓€涓暟锛屾垨鑰呰闂渶灏忓€笺€� ### Solution 瀵逛簬涓€涓尯闂达紝濡傛灉 $l \le r$ 鍒欐槧灏勫埌 $[l+1,r+1]$锛涘惁鍒欙紝鏄犲皠鍒颁袱涓尯闂� $[l+1,n],[1,r+1]$. 绾挎鏍戠淮鎶ゅ嵆鍙€� ### Description 缁欏畾涓€妫垫湁鏍规爲锛岀敳涔欒疆娴佹搷浣滐紝姣忔姣忎汉閫夋嫨涓€鏉¤竟璧帮紝浠庢牴璧板埌涓€涓彾瀛愶紝鐢插笇鏈涙渶鍚庡緱鍒扮殑鍙跺瓙缁撶偣鐨勬潈鍊煎敖鍙兘澶э紝涔欏笇鏈涙渶鍚庡緱鍒扮殑鍙跺瓙缁撶偣鐨勬潈鍊煎敖鍙兘灏忥紝涓や汉閮介噰鍙栨渶浼樼瓥鐣ャ€傜幇鍦ㄩ渶瑕佺粰姣忎釜鍙跺瓙鑺傜偣鍒嗛厤鏉冨€硷紝鏉冨€兼槸 $1 \sim m$ 鐨勫叏鎺掑垪銆傞棶璁╃敳鍒嗛厤鏉冨€煎垯鏈€鍚庡彇寰楃殑鏈€澶ф潈鍊兼槸澶氬皯锛岃涔欏垎閰嶆潈鍊煎垯鏈€鍚庡彇寰楃殑鏈€灏忔潈鍊兼槸澶氬皯銆� ### Solution 鏍戝舰 dp锛岃 $f[i]$ 琛ㄧず $i$ 鐐瑰瓙鏍戝唴鑳借揪鍒扮殑鏈€灏忔帓鍚嶏紝$h[i]$ 琛ㄧず鏈€澶ф帓鍚嶏紝鍒欐湁

\[f[i]=\min_{i \to j} h[j], \ \ h[i]=\sum_{i \to j} f[j] \]

Description

鏈変竴涓皬鏍瑰爢锛岃繖涓爢鍙樻垚浜嗕竴涓� \(k\) 鍙夊爢锛堝舰寮忚浆鍖栵紝閫愬眰鎺掑竷锛夛紝浣嗚繖鏍蜂笉涓€瀹氭槸鍚堟硶鐨勶紙鍗虫湁鑻ュ共涓妭鐐瑰皬浜庡畠鐨勭埗浜诧級銆傞棶鐜板湪杩欎釜鍫嗘湁澶氬皯涓嶅悎娉曠殑鍏冪礌銆傚鎵€鏈� \(k\) 杈撳嚭缁撴灉銆�

Solution

\(x\) 鍙风偣鍦� \(k\) 鍙夋爲涓婄殑鐖朵翰鏄� \([\frac {x-2} {k}]+1\)
鏋氫妇鍎垮瓙鏉ヨ绠楃瓟妗堬紝鏄剧劧鍙互鏁撮櫎鍒嗗潡锛岀敤宸垎璁$畻绛旀锛屽鏉傚害涓� \(O(n \sqrt n)\)

Description

缁欏畾涓€寮� \(n \times m\) 鐨勭綉鏍煎浘锛屾瘡涓牸瀛愬彲鑳芥槸濂界殑涔熷彲鑳芥槸鍧忕殑锛屽潖鐨勮蛋浜嗗氨浼氱粨鏉燂紝濂界殑璧颁簡灏变細鍙樻垚鍧忕殑銆傜幇鍦ㄨ姹備粠璧风偣鍑哄彂锛岃蛋鍒扮粓鐐瑰苟鍦ㄧ粓鐐圭粨鏉燂紙鎰忓懗鐫€濡傛灉缁堢偣鏄ソ鐨勯偅涔堥渶瑕佺粡杩囦竴娆″悗鍐嶅埌杈撅級銆傛眰鑳藉惁瀹屾垚銆�

Solution

濡傛灉缁堢偣鏄潖鐨勶紝閭d箞鍙互瀹屾垚褰撲笖浠呭綋瀛樺湪涓€鏉″埌杈剧粓鐐圭殑璺緞銆�
濡傛灉缁堢偣鏄ソ鐨勶紝閭d箞鍙互瀹屾垚褰撲笖浠呭綋缁堢偣鐨勫洓鐩搁偦鏍煎瓙涓嚦灏戞湁涓や釜 \(p,q\) 婊¤冻瀛樺湪涓€鏉′粠璧风偣鍒嗗埆鍒拌揪 \(p,q\) 鐨勮矾寰勩€�

Description

鐜板湪鏈変竴涓敱鎵€鏈夋鏁存暟缁勬垚鐨勬棤闄愰€掑搴忓垪銆傚杩欎釜搴忓垪鎵ц \(n\) 娆′氦鎹㈡搷浣溿€傛瘡娆′竴涓搷浣滐紝缁欏嚭涓や釜鏁存暟 \(a,b\)锛屼氦鎹綅缃� \(a\) 鍜� \(b\) 澶勭殑鍏冪礌銆傚湪鎵€鏈夋搷浣滅粨鏉熷悗锛岃緭鍑烘渶缁堝簭鍒楃殑閫嗗簭瀵逛釜鏁般€�

Solution

绂绘暎鍖栵紝鍒╃敤宸﹂棴鍙冲紑鍖洪棿 \([l,r)\) 浣滀负鍗曚釜缁撶偣
绂绘暎鍖栧悗鐩存帴浜ゆ崲锛屼氦鎹㈠悗鐢ㄦ寜鐓ч『搴忎粠灏忓埌澶ф壂涓€閬嶏紝绾挎鏍戠粺璁″嵆鍙�

[CF543B] Destroying Roads - 鏈€鐭矾

Description

缁欏畾鏃犲悜鏃犳潈鍥撅紝姹傚湪淇濊瘉 \(s_1,t_1\) 闂磋窛绂讳笉瓒呰繃 \(t_1\)锛�\(s_2,t_2\) 闂磋窛绂讳笉瓒呰繃 \(t_2\) 鐨勬儏鍐典笅锛屾渶澶氳兘鐮村潖鐨勫叕璺暟閲忋€�

Solution

濡傛灉鍙湁涓€涓害鏉燂紝鏄剧劧鏈€鐭矾
鑰冭檻鏈変袱涓害鏉燂紝閭d箞鏈€鐭矾鍙兘鏈変氦锛屼篃鍙兘鏃犱氦
鏃犱氦鐨勬儏鍐碉紝绛旀灏辨槸 m-涓ゆ潯鏈€鐭矾闀垮害鍜�
鏈変氦鐨勬儏鍐碉紝鏋氫妇鏈€鐭矾绔偣 i,j锛岀劧鍚庤€冭檻涓ょ鍙兘鐨勬儏鍐�
涓や釜浜虹帺鐗岋紝棣栧厛涓や釜浜洪兘鎷垮嚭鑷繁鎵嬬墝鐨勬渶涓婇潰鐨勮繘琛屾嫾鐐癸紝涓ゅ紶鎷肩偣鐗屽皢閮界粰鎷肩偣璧㈠緱浜猴紝杩欎袱寮犵墝鏀惧叆鎵嬬墝鐨勯『搴忔槸锛氬厛鏀惧鏂圭殑鐗屽啀鏀捐嚜宸辩殑銆傝嫢鏈€鍚庢湁涓€涓汉娌℃湁鎵嬬墝浜嗭紝閭d箞浠栧氨杈撲簡锛屾眰杈撳嚭鎷肩偣鐨勬鏁板拰璧㈠緱浜虹殑缂栧彿锛屽鏋滀竴鐩存棤娉曠粨鏉熸瘮璧涳紝鍒欒緭鍑�-1.
鐢ㄩ槦鍒楁ā鎷熷嵆鍙€�

[CF546E] Soldier and Traveling - 鏈€澶ф祦

Description

\(n \le 100\) 涓煄甯傦紝\(m \le 200\) 鏉¤竟銆傜劧鍚庝汉鍙兘浠庤蛋鐩搁偦杈圭浉杩炵殑鍩庡競銆傜幇鍦ㄧ粰浣犲垵濮嬪煄甯傜殑姣忎竴涓汉鏁帮紝鍐嶇粰涓€缁勬瘡涓煄甯備汉鏁般€傝闂槸鍚﹀彲浠ヤ粠褰撳墠浜烘暟鍙樻崲鍒扮粰瀹氫汉鏁般€�

Solution

鐩存帴瀵瑰煄甯傛媶鐐逛负鍏ョ偣銆佸嚭鐐瑰悗璺戞渶澶ф祦

[CF551C] GukiZ hates Boxes - 浜屽垎,璐績

Description

鏈� n 涓綅缃紪鍙� 1 鍒� n锛岀 i 涓綅缃笂鏈� ai 涓瀛愶紝鏈� m 涓汉锛屽紑濮嬪湪 0 浣嶇疆锛屾瘡绉掗挓姣忎釜浜哄彲浠ラ€夋嫨鎼蛋鑷繁褰撳墠浣嶇疆涓婄殑涓€涓瀛愭垨鑰呭悜鍓嶈蛋涓€姝ワ紝闂嚦灏戦渶瑕佸灏戞椂闂磋兘鎶婃墍鏈夌瀛愭惉瀹屻€�

Solution

浜屽垎绛旀鍔犻獙璇侊紝鍋囪鏈� mid 绉掞紝涓€涓汉涓€涓汉鐨勫鐞嗭紝姣忎釜浜哄敖鍙兘鎷挎渶杩滅殑閭d釜绠卞瓙锛堝弽姝d竴瀹氫細鏈変汉鎷块偅涓紝鍏堟嬁涓嶄細鏇村姡锛�
姣斿鐜板湪鎴戜滑瀹夋帓涓€涓汉锛屾垜浠壘浜嗘渶杩滅殑绠卞瓙缁欎粬锛堝亣璁捐窛绂讳负 dist锛夛紝閭d箞浠栧凡缁忚姳璐逛簡 dist 鏃堕棿璧拌矾骞惰姳璐� 1 鏃堕棿鎼瀛愶紝鍓╀笅鐨勬椂闂村彲浠ョ敱杩滃埌杩戝鐞嗘帀鑻ュ共涓瀛�

Description

缁欏畾涓€涓彧鏈� +锛宍* 鍜屼竴浣嶆暣鏁版瀯鎴愮殑琛ㄨ揪寮忥紝浣犲彲浠ユ坊鍔犱竴瀵规嫭鍙凤紝浣垮緱杩欎釜琛ㄨ揪寮忕殑鍊兼渶澶с€俙* 鐨勪釜鏁颁笉瓒呰繃 \(15\)銆�

Solution

鏄剧劧 ( 涓€瀹氬嚭鐜板湪寮忓瓙鏈€宸﹁竟鎴栬€呮煇涓� * 鐨勫彸杈�
鏄剧劧 ) 涓€瀹氬嚭鐜板湪寮忓瓙鏈€鍙宠竟鎴栬€呮煇涓� * 鐨勫乏杈�
浜庢槸鎴戜滑鍙互鏆村姏鏋氫妇瑕佸皢鍝竴娈靛鎷彿锛岀劧鍚庣敓鎴愪竴涓柊鐨勮〃杈惧紡锛屾毚鍔涜绠楀嵆鍙�
鎵嬪啓琛ㄨ揪寮忚绠楀櫒澶儲浜嗭紝浜庢槸鐩存帴 Python

[CF558E] A Simple Task - 绾挎鏍�

Description

缁欏畾涓€涓暱搴︿笉瓒呰繃 \(10^5\) 鐨勫瓧绗︿覆锛堝皬鍐欒嫳鏂囧瓧姣嶏級锛屽拰涓嶈秴杩� 50000 涓搷浣溿€傛瘡涓搷浣� L R K 琛ㄧず缁欏尯闂� [L,R] 鐨勫瓧绗︿覆鎺掑簭锛孠=1 涓哄崌搴忥紝K=0 涓洪檷搴忋€�

Solution

绾挎鏍戯紝姣忎釜缁撶偣缁存姢鍖洪棿鍐� 26 涓瓧姣嶇殑鍑虹幇娆℃暟锛屽姣忔鎺掑簭鎿嶄綔鏆村姏閲嶆柊瑕嗙洊銆�

Description

缁欏畾涓€涓� \(H \times W\) 鐨勬鐩橈紝鏈� \(N\) 涓殰纰嶆牸瀛愶紝妫嬪瓙姣忔鍙互鍚戝彸鎴栬€呭悜涓嬬Щ鍔ㄤ竴姝ワ紝姹備粠宸︿笂瑙掑埌鍙充笅瑙掓湁澶氬皯绉嶄笉鍚岀殑璺嚎銆�\(N \le 2000\)

Solution

鐢变簬 \(N\) 杈冨皬锛岃€冭檻 dp锛岃 \(f[i]\) 琛ㄧず璧板埌绗� \(i\) 涓殰纰嶇偣锛堜笖涔嬪墠涓嶇粡杩囧叾瀹冧换浣曢殰纰嶇偣锛夌殑鏂规鏁帮紝鍒�

\[f[i]=g(x_i,y_i) - \sum_{j \to i} g(x_i-x_j+1,y_i-y_j+1 )\cdot f[j] \]

鍏朵腑 \(j \to i \Leftrightarrow x_j \le x_i \and y_j \le y_i\)锛�\(g(x,y)\) 琛ㄧず鏃犻殰纰嶆儏鍐典笅 \((1,1) \to (x,y)\) 鐨勬柟妗堟暟锛屾湁

\[g(x,y)=\binom {x+y-2}{x-1} \]

Description

缁欏畾 \([l,r]\)锛屾眰 \([l,r]\) 涔嬮棿鏈夊灏戜釜鏁版弧瓒冲畠鐨勪换鎰忔暟浣嶉兘鍙互鏁撮櫎瀹冩湰韬€�

Solution

\(f(i,j,k,full)\) 琛ㄧず浠庨珮鍒颁綆鑰冭檻鍒扮 \(i\) 浣嶆暟锛屽墠闈㈡瀯鎴愮殑鏁版ā \(2520=j\)锛屽墠闈㈣繖浜涙暟浣嶇殑 \(LCM\) 涓� \(k\)锛屽綋鍓嶆槸鍚﹁创鍚堜笂鐣岀殑鏂规鏁般€傛妸 \(k\) 绂绘暎鍖栦竴涓嬭妭绾︾┖闂淬€�
娉ㄦ剰鍙渶瑕佽褰� full=0 鐨勬儏鍐靛嵆鍙紝骞朵笖杩欎簺鎯呭喌鍙互鍦ㄥ悇缁勬暟鎹棿澶嶇敤锛屽洜姝ゅ氨瑕佹眰 \(i\) 瑕佸€掔潃璁板綍銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡涓粨鐐规湁涓€涓瓧姣嶏紝姣忎釜鐐圭殑娣卞害瀹氫箟涓哄埌 \(1\) 鍙风偣鐨勮矾寰勪笂鐨勭偣鐨勪釜鏁帮紝姣忔璇㈤棶 \(a,b\)锛屾煡璇互 \(a\) 涓烘牴鐨勫瓙鏍戝唴娣卞害涓� \(b\) 鐨勭粨鐐逛笂鐨勫瓧姣嶉噸鏂版帓鍒椾箣鍚庤兘鍚︽瀯鎴愬洖鏂囦覆銆�

Solution

鏉′欢绛変环浜庡鏁扮粨鐐逛釜鏁颁笉澶т簬 \(1\)
绂荤嚎澶勭悊锛屽皢璇㈤棶鎸傚湪 \(a\) 涓�
瀵逛簬姣忎釜瀛愭爲锛屾垜浠渶瑕佹眰鐨勬槸瀛愭爲鍐呭悇涓鑹茬粨鐐圭殑涓暟鍜�
鐢变簬璧蜂綔鐢ㄧ殑鍙湁濂囧伓鎬э紝鎴戜滑鍙互鐢ㄤ竴涓� 01 涓茶褰曠姸鎬侊紝鍔犲噺灏辨槸寮傛垨
鑰冭檻鎸� DFS 搴忓仛宸紝鎴戜滑鍙渶瑕佸湪杩涘叆瀛愭爲鐨勬椂鍊欒褰曚竴涓嬬姸鎬侊紝閫€鍑虹殑鏃跺€欏皢褰撳墠鐘舵€佷笌璁板綍寮傛垨涓€涓嬪嵆鍙�

Description

缁欏畾 \(n\) 涓暟锛岄棶鑳藉惁閫夊嚭涓€涓潪绌哄瓙闆嗕娇寰楀拰鑳借 \(m \le 10^3\) 鏁撮櫎銆�

Solution

姝g粡瑙f硶搴旇鏄厛瀹规枼鍘熺悊鍐嶈儗鍖呫€�
鍙槸鍐欎簡涓€鍙� bitset 鑳屽寘灏卞啿杩囧幓浜嗐€�

[CF587C] Duff in the Army - 鏍戜笂鍊嶅,STL

Description

鏈� n 涓煄甯傦紝鐢� n-1 鏉¤竟杩炴帴銆備袱涓煄甯備箣闂寸殑閬撹矾鏄敮涓€鐨勩€傛湁 m 涓汉锛屼綇鍦ㄨ繖 n 涓煄甯備腑锛岀幇鍦ㄧ粰鍑� m 涓汉鐢熸椿鐨勫煄甯傜紪鍙枫€備綘闇€瑕佸洖绛旓紝浠庝竴涓煄甯� u 鍒板彟涓€涓煄甯� v 鐨勮矾寰勪腑锛岀紪鍙峰墠 a 灏忕殑浜虹殑缂栧彿鏄摢浜涖€�

Solution

鏍戜笂鍊嶅澶勭悊璺緞闂锛岄噸杞界粨鐐瑰姞娉�

[CF598C] Nearest vectors - 璁$畻鍑犱綍

Description

鏈� n 涓偣锛屾瘡涓偣琛ㄧず鍘熺偣鍒拌鐐圭殑鍚戦噺锛岃浣犳眰鍑轰袱涓悜閲忔渶灏忕殑澶硅锛岃緭鍑哄悜閲忕殑搴忓彿銆�

Solution

鑰冭檻鏆村姏绠楀嚭鏋佽鐒跺悗鎺掑簭锛岀敤 atan2(y,x)

[CF5C] Longest Regular Bracket Sequence - 璐績,dp

Description

缁欏嚭涓€涓嫭鍙峰簭鍒楋紝姹傚嚭鏈€闀垮悎娉曞瓙涓插拰瀹冪殑鏁伴噺銆�

Solution

鑰冭檻璐績鍦伴澶勭悊鍑烘瘡涓嫭鍙峰尮閰嶇殑鏈€杩戜綅缃紝鍒╃敤鏍堟壂涓€閬嶅嵆鍙€�
鍦ㄥ鐞嗗嚭绗� \(i\) 涓瓧绗︾殑鍖归厤浣嶇疆 \(j\) 鍚庯紝鎴戜滑灏卞彲浠ョ敤杩欎竴娈电殑鍊煎幓鏇存柊绛旀锛岃 \(f[i]\) 琛ㄧず浠� \(i\) 缁撳熬鐨勫悗缂€鐨勬渶澶у尮閰嶉暱搴︽槸澶氬皯锛岄偅涔堝緢瀹规槗鍒╃敤涓婇潰鐨勪俊鎭潵杞Щ銆�

Description

缁欏畾涓€妫垫湁 \(n\) 涓粨鐐圭殑鏁帮紝浠� \(1\) 涓烘牴锛屾爲涓婄殑鐐圭殑棰滆壊涓� \(c[i]\)锛屽姣忎釜鐐癸紝姹備互鍏朵负鏍圭殑瀛愭爲鍐呯殑鎵€鏈変紬鏁扮殑鍜屻€�

Solution

dsu on tree锛岄鍏堥澶勭悊鍑烘瘡涓偣鐨勯噸鍎垮瓙 \(wson[p]\)銆傜劧鍚� dfs 鏁存5鏍戯紝澶勭悊 p 鐨勬墍鏈夊瀛愭椂锛屽厛璺宠繃閲嶅瀛愶紝鏈€鍚庡鐞嗛噸瀛╁瓙鏃讹紝淇濈暀鍏惰础鐚紝骞舵毚鍔涘姞涓婅交瀛╁瓙浠殑璐$尞锛屾渶鍚庡緱鍒版€昏础鐚€�

Description

鏈� \(n\) 鍫嗙煶瀛愶紝姣忔鍙互瀵逛竴鍫嗙煶瀛愯繘琛屾搷浣滐紝濡傛灉褰撳墠鐭冲瓙鏄伓鏁帮紝閭d箞鍙互閫夋嫨灏嗚繖 \(2x\) 涓煶瀛愬垎鎴� \(k\) 鍫嗙煶瀛愭暟涓� \(x\) 鐨勭煶瀛愬爢锛岃繕鏈変竴绉嶆病鏈夊墠鎻愮殑鎿嶄綔鏄彇璧板綋鍓嶅爢鐨勪竴涓煶瀛愶紝闂厛鎵嬭耽杩樻槸鍚庢墜璧€€�

Solution

鑻� \(x\) 涓哄伓鏁帮紝鍒� \(SG(x)=\text{mex}(\{ SG(\frac x 2)^k, SG(x-1) \})\)
鑻� \(x\) 涓哄鏁帮紝鍒� \(SG(x)=\text{mex} ( \{ SG(x-1) \} )\)
鍏堟毚鍔涜绠楀嚭 \(x \le 4\) 鐨勬儏鍐碉紝鍏朵綑婊¤冻
\(x\) 涓哄鏁版椂锛�\(SG(x)=0\)
\(x\) 涓哄伓鏁版椂锛岃嫢 \(k\) 涔熶负鍋舵暟锛屽垯 \(SG(x)=1\)锛岃嫢 \(k\) 鏄鏁帮紝鍒� \(SG(x)=\text{mex} (0,SG(\frac x 2))\)

[CF603R]

Description

缁欏畾 \(N \times N\) 鐨勬鐩橈紝涓や汉杞祦鏀炬瀛愩€傛瀛愮殑涓婁笅宸﹀彸鍥涗釜鏍煎瓙涓嶈兘鍐嶆斁妫嬪瓙銆備笉鑳芥搷浣滅殑浜鸿礋銆傚垽鏂儨璐熴€�

Solution

鐢ㄧ殑鏄緢甯歌鐨勬€濇兂銆�
濡傛灉 \(N\) 鏄伓鏁帮紝閭d箞鍚庢墜姘歌繙鍦ㄥ拰鍏堟墜瀵圭О鐨勪綅缃笅妫嬪氨涓€瀹氳兘璧€€�
濡傛灉 \(N\) 鏄鏁帮紝鍏堟墜鍦ㄤ腑蹇冧綅缃笅妫嬪苟灏嗚嚜宸卞彉涓轰笂涓€绉嶆儏鍐典腑鐨勫悗鎵嬶紝鍏堟墜鑳溿€�
浠庝竴涓簭鍒椾腑姣忔鍙栧嚭涓€涓洖鏂囦覆锛屾眰鏈€灏戝彇鍑犳锛堝彇鍑哄悗涓ょ澶栫殑鏁颁細鐩告帴锛�
璁� \(f[i][j]\) 涓哄湪闂尯闂� \([i,j]\) 鍙栧畬鎵€鏈夌殑鑺辫垂锛屽垯鏈� \(f[i][i]=1, f[i][i+1]=1+[a[i] \neq a[i+1]]\)
杞Щ鏂圭▼
\(f[i][j] = f[i+1][j-1], a[i]=a[j]\)
\(f[i][j] = min_{k=i}^{j-1} (f[i][k]+f[k+1][j])\)

Description

瀵规棤鍚戝浘姹傚叾涓瘡鏉¤竟蹇呴』琚€変腑鏃剁殑鏈€灏忕敓鎴愭爲銆�

Solution

鐜颁换鎰忔眰鍑轰竴妫垫渶灏忕敓鎴愭爲锛屽缓鏍戯紝鏍戜笂鍊嶅鏀寔璇㈤棶 LCA 鍜岄摼鏈€澶у€笺€�
濡傛灉閫夋嫨鐨勮竟鏄爲鏋濆垯鐩存帴杈撳嚭銆傚鏋滄槸寮︼紝鍒欑敤杩欐潯寮︽崲鎺夊搴斿熀鏈洖璺笂鐨勬澶у€硷紝鍗冲搴旀爲涓婅矾寰勪笂鐨勬渶澶у€笺€�
锛堝氨褰撳涔犱竴涓嬪啓鏍戜笂鍊嶅浜嗭級

Description

姹� \(\sum_{i=1}^m ( n \bmod i)\)锛�\(n,m \le 10^{13}\)

Solution

鑰冭檻浣垮緱 \([n/i]\) 鐩稿悓鐨勪竴娈� \(i\)锛岃涓� \([l,r]\)锛屽垯

\[\sum_{i=l}^r n \bmod i = n(r-l+1)-[\frac n l] (\frac {r(r+1)} 2 - \frac {l(l+1)} 2) \]

鍙互鍦� \(O(1)\) 鏃堕棿鍐呰绠楋紝鏁呮椂闂村鏉傚害 \(O(\sqrt n)\)
鍙栨ā鍧戯紒

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫瓙搴忓垪 \(a\)锛屽啀缁欏畾涓€涓暟瀛� \(k\)锛岀粰鍑� \(m\) 缁勮闂紝姣忕粍璇㈤棶缁欏嚭涓€涓尯闂达紝闂湁澶氬皯鍖洪棿鐨勫紓鎴栧拰涓� \(k\)銆�

Solution

姹備竴涓尯闂寸殑寮傛垨鍜岋紝鏈川涓婂氨鏄眰鍓嶇紑鍜屽簭鍒椾腑涓や釜鏁扮殑寮傛垨锛屽綋鐒惰繖涓や釜鐐逛笉鑳介噸鍚�
浜庢槸鑰冭檻鑾槦锛屼笅闈㈠彧璁ㄨ鍓嶇紑鍜屽簭鍒楋紝鐢ㄦ《缁存姢鍖洪棿涓殑鎵€鏈夋暟锛屾坊鍔犳垨鍒犻櫎鏃堕『渚胯褰曚竴涓嬬瓟妗堝嵆鍙�
娉ㄦ剰鎴戜滑鍦ㄧ淮鎶ょ瓟妗堟椂锛岃淇濊瘉閫夋嫨鐨勬槸鏃犲簭瀵�

Description

瀹屽叏鍥句笂鏈変竴妫电敓鎴愭爲锛岀敓鎴愭爲涓婄殑鎵€鏈夎竟杈规潈涓� \(x\)锛屽叾瀹冭竟杈规潈涓� \(y\)锛屾眰鏈€鐭搱瀵嗛】鍥炶矾銆� \(n \le 200000\)

Solution

褰� \(x \ge y\) 鏃讹紝鏄剧劧璧� \(y\) 杈规洿浼橈紝浣嗗鏋滅敓鎴愭爲鏄釜鑿婅姳鍥惧垯蹇呴』瑕佽蛋涓€鏉� \(x\) 杈癸紝杩欑鎯呭喌瑕佺壒鍒ゆ帀
褰� \(x<y\) 鏃讹紝鎴戜滑甯屾湜灏藉彲鑳借蛋 \(x\) 杈癸紝杩欐椂灏卞彉鎴愪簡涓€涓爲涓婃渶灏忚鐩栫殑闂
鑰冭檻涓€涓椽蹇� DFS 鐨勮繃绋嬶紝姣忓埌杈句竴涓柊鐐� \(p\)锛屾垜浠煡閬撳畠鏈€澶氳兘鏈� \(2\) 搴︼紝璁惧墿浣欏害鏁颁负 \(2\)锛屽悜涓� DFS 鍒� \(q\)锛屾瘡涓� DFS 杩囩▼浼氳繑鍥炰竴涓€硷紝琛ㄧず璇ョ偣鏄惁杩樻湁鍓╀綑搴︽暟锛岄偅涔堝鏋� \(q\) 鏈夊墿浣欏害鏁帮紝鎴戜滑灏卞彲浠ュ湪 \(p,q\) 涔嬮棿鍔犺竟锛屼簨瀹炰笂涔熷彧闇€瑕佸皢 \(p\) 鐨勫墿浣欏害鏁� \(-1\)

[CF620E] New Year Tree - 绾挎鏍�,DFS搴�,浣嶈繍绠�

Description

缁欏嚭涓€妫� \(n\) 涓妭鐐圭殑鏍戯紝鏍硅妭鐐逛负 \(1\)銆傛瘡涓妭鐐逛笂鏈変竴绉嶉鑹� \(c_i\)銆�\(m\) 娆℃搷浣溿€傛搷浣滄湁涓ょ锛�

  • 1 u c锛氬皢浠� \(u\) 涓烘牴鐨勫瓙鏍戜笂鐨勬墍鏈夎妭鐐圭殑棰滆壊鏀逛负 \(c\)銆�
  • 2 u锛氳闂互 \(u\) 涓烘牴鐨勫瓙鏍戜笂鐨勬墍鏈夎妭鐐圭殑棰滆壊鏁伴噺銆�

    \(1\le n,m\le 4\times 10^5\)锛�\(1\le c_i,c\le 60\)

Solution

dfs 搴忚浆鍖栦负鍖洪棿闂锛岀嚎娈垫爲澶勭悊锛屾瘡涓粨鐐圭敤涓€涓� int64 瀛橀鑹诧紝瀛樻爣璁帮紝闇€瑕佹湁鏍囪涓嬩紶鍜岀粨鏋滀笂浼狅紝鏀寔鍖洪棿淇敼鍜屽尯闂磋闂�

Description

缁欏畾 \(d\)锛屽鏋滀竴涓暟浠庨珮寰€浣庢暟绗鏁颁綅閮芥槸 \(d\)锛岀鍋舵暟浣嶉兘涓嶆槸 \(d\)锛岄偅涔堣繖涓暟绉颁负 d-magic 鏁般€�
缁欏畾涓や釜闀垮害鐩哥瓑鐨勬暟 \(l,r\)銆傛眰 \([l,r]\) 涓湁澶氬皯涓� d-magic 鏁帮紝绛旀 \(\bmod 10^9+7\)銆�\(l,r\) 鐨勯暱搴� \(n \le 2000\)銆�

Solution

杞寲涓� \(f(r)-f(l-1)\) 鐨勮瘽杩樿鍋氫竴涓嬮珮绮惧害鍑忔硶锛屾瘮杈冮夯鐑︼紝鎵€浠ユ垜浠氨鐩存帴澶勭悊浜嗐€�
瀵逛簬姣忎釜鐘舵€侊紝缁存姢 \(pos\) 琛ㄧず褰撳墠鎵埌浠庡乏鍒板彸鐨勭 \(pos\) 浣嶏紝\(rem\) 琛ㄧず鍓� \(i\) 涓暟浣嶆瀯鎴愮殑鏁扮殑浣欐暟鏄� \(rem\)锛岀敤涓や釜鏍囪 \(tagl,tagr\) 琛ㄧず宸﹁竟鐣屽拰鍙宠竟鐣屾槸鍚﹀凡缁忎笌褰撳墠鏁板垎绂汇€�
杞Щ杩囩▼鏄剧劧鏄幓鏋氫妇褰撳墠鏁颁綅鐨勬墍鏈夊彲鑳藉彇鍊硷紝鐒跺悗閫掑綊鍋氫笅鍘汇€�

[CF653F] Paper task

Description

缁欏畾涓€涓嫭鍙峰簭鍒楋紝缁熻鍚堟硶鐨勬湰璐ㄤ笉鍚屽瓙涓茬殑涓暟銆�

Solution

寰堝鏄撴兂鍒帮紝鍙鍦ㄤ紶缁熺粺璁℃湰璐ㄤ笉鍚屽瓙涓茬殑鍩虹涓婁慨鏀逛竴涓嬪嵆鍙€�
鑰冭檻缁忓吀缁熻杩囩▼锛屽浜庣 \(i\) 涓悗缂€锛屽畠鐨勮础鐚负 \(n - sa[i] + 1 - h[i]\)
涔熷氨鎰忓懗鐫€锛屽畠浜х敓璐$尞鐨勫尯闂存槸 \([sa[i]+h[i], n]\) 銆傛崲瑷€涔嬶紝瀵逛换鎰� \(j \in [sa[i]+h[i], n]\) 锛� \(s[sa[i],j]\) 鏄竴涓瓟妗堛€�
閭d箞鎴戜滑鐜板湪灏辨槸瑕佸垽鏂繖浜涚瓟妗堜腑鏈夊灏戝悎娉曘€備篃灏辨槸瀵规煇涓� \(i\) 锛屾湁澶氬皯涓� \(j \in [sa[i]+h[i], n]\) 锛� 锛屾弧瓒� \(\sum_{k=sa[i]}^j a_k = sum[j]-sum[sa[i]-1]\) 涓� \(0\)銆� 杩欓噷 \(a_i\) 琛ㄧず鎷彿搴忓垪锛屽乏鎷彿瀵瑰簲 \(1\) 锛屽彸鎷彿瀵瑰簲 \(-1\) 銆�
涔熷氨鏄闂笅鏍囧湪 \(sa[i]+h[i]\) 鍙婁箣鍚庯紝 \(sum[k]=sum[sa[i]-1]\) 鐨� \(k\) 鏈夊灏戜釜銆�
鎸夋暟鍊兼彃杩涜嫢骞蹭釜 std::vector 鐒跺悗鏆村姏浜屽垎鍗冲彲銆�
浣嗚繖鏍蜂細蹇界暐閭d簺涓€斿嚭鐜板彸鎷彿姣斿乏鎷彿澶氱殑鎯呭喌銆傚洜姝わ紝瀵逛簬姣忎釜鍚庣紑锛屾垜浠湪缁熻鏃惰鎵惧埌鏈€杩滆兘鍒拌揪鐨勪綅缃紝鍗崇涓€涓皬浜庣瓑浜� \(sum[sa[i]-1]-1\) 鍑虹幇鐨勪綅缃紝鎴戜滑瑕佹妸杩欎釜浣嶇疆涔嬪悗鐨勭粨鏋滃噺鍘汇€傛毚鍔涙壂涓€閬嶏紝鏉冨€肩嚎娈垫爲缁存姢鍗冲彲銆�
鑰冭檻鏋氫妇琛屾搷浣滅姸鎬� \(i\)锛岃嫢鏈€� \(j\)锛屼笖璁�\(a_i\)琛ㄧず鍒濇€佷负\(i\)鐨勫垪鏁帮紝\(b_j\)涓烘湯鎬佷负\(j\)鐨勫垪鍙互鎻愪緵鐨勮础鐚紙缈昏浆鎴栬€呬笉缈昏浆锛岄澶勭悊鍑猴級锛屽垯绛旀涓�\(\sum a_{i \ xor \ j}b_j\)锛岃涓哄簭鍒�\(c_i = \sum_{j \ xor \ k=i} a_k b_j\)锛屼负鏍囧噯寮傛垨瀛愰泦鍗风Н锛孎WT鍗冲彲銆�
鍗风Н棰樻暟缁勮寰楀紑涓ゅ€�

Description

缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒� \(\{a_i\}\)锛岀粰瀹� \(k\)锛屾眰鏈夊灏戜釜瀛愪覆婊¤冻 \(\oplus_{i=l}^r a_i \ge k\)銆�

Solution

澶勭悊鍑哄墠缂€寮傛垨鍜屽簭鍒楋紝鏋氫妇 \(s_{l-1}\)锛岃姹� \(s_{l-1} \oplus s_r \ge k\)锛孴rie 鏍戜笂杈硅窇杈圭粺璁″嵆鍙�
鍏蜂綋鍦帮紝褰� \(k \oplus s_{l-1}\) 鐨勬煇涓€浣嶆槸 \(1\) 鐨勬椂鍊欙紝鎴戜滑鍙兘璧拌繖涓€杈癸紝鐩存帴缁х画寰€涓嬭蛋锛涘綋 \(k\) 鐨勬煇涓€浣嶆槸 \(0\) 鐨勬椂鍊欙紝\(1\) 鐨勬暣涓瓙鏍戜細浜х敓璐$尞锛屼簬鏄垜浠褰曡繖涓础鐚紝骞剁户缁線 \(0\) 鐨勯偅涓€杈硅蛋鍗冲彲
鍏蜂綋鍦帮紝褰� \(k\) 鐨勬煇涓€浣嶆槸 \(1\) 鏃讹紝鎴戜滑鍙兘璧颁笌 \(s_{l-1}\) 鐨勮繖涓€浣嶇浉鍙嶇殑閭d竴杈癸紝鐩存帴缁х画寰€涓嬭蛋鍗冲彲
褰� \(k\) 鐨勬煇涓€浣嶆槸 \(0\) 鐨勬椂鍊欙紝涓� \(s_{l-1}\) 鐨勮繖涓€浣嶇浉鍙嶇殑閭d竴杈圭殑鏁翠釜瀛愭爲閮戒細浜х敓璐$尞锛屼簬鏄垜浠褰曡繖涓础鐚紝骞剁户缁線鐩稿悓鐨勯偅涓€杈硅蛋鍗冲彲

[CF675C] Money Transfer - 鎬濈淮

Description

缁欎綘 n 涓摱琛屼腑鐨勫瓨娆撅紙璐熷€艰〃绀哄€熻捶锛夛紝鏄垚鐜殑锛�1 璺� n 鐩告帴锛岃繖 n 涓暟鐨勫拰涓� 0銆傚彲浠ヤ粠 i 鍚� i 鐨勭浉閭讳袱渚ц浆绉诲瓨娆撅紝闂綘鏈€灏戣浆绉诲灏戞锛屽彲浠ヨ鎵€鏈夐摱琛岀殑瀛樻閮戒负 0銆�

Solution

濡傛灉娌℃湁鎴愮幆鐨勬潯浠讹紝閭d箞鎴戜滑澶勭悊鍑哄墠缂€鍜屽簭鍒� s锛屽垯鎵€鏈� s=0 鐨勪綅缃彸杈瑰彲浠ヤ綔涓轰竴涓垎鍓茬偣锛屾瘡涓垎鍓茬偣鍐呭崟鐙鐞嗭紝绛旀鍗充负 n-鍒嗗壊鐐逛釜鏁般€�
鑰冭檻鍒版湁鎴愮幆鐨勬潯浠讹紝鐩稿綋浜庢垜浠彲浠ラ€夊彇浠绘剰涓€涓� s[i] 浣滀负闆剁偣锛屼簬鏄棶棰樹篃灏辫浆鍖栦负姹傚墠缂€鍜屽簭鍒椾腑鍑虹幇鏈€澶氱殑鏁板嚭鐜扮殑娆℃暟銆�

Description

缁欏畾姝f暣鏁� $ n $锛屾壘涓€涓渶灏忔鏁存暟 $ t $锛屼娇寰楀湪 $ t $ 鍐呮湁 $ n $ 缁勫叕姣斾负鏁存暟鐨勭瓑姣旀暟鍒楁垚绔嬶紝\(n \le 10^{15}\)

Solution

鍊掕繃鏉ユ樉鐒舵槸濂藉仛鐨勶紝鑰岀瓟妗堝張鏄崟璋冪殑锛岃€冭檻浜屽垎
妫€楠屾椂锛屾垜浠彲浠ユ灇涓惧叕姣旀潵璁℃暟

Description

缁欏畾涓€涓� \(n\) 涓偣鐨勫甫鏉冩湁鍚戝浘锛屾瘡涓偣鏈変笖浠呮湁涓€鏉″嚭杈癸紝瀵逛簬姣忎釜鐐圭敱瀹冨嚭鍙戣蛋 \(k\) 鏉¤竟锛屾眰杩� \(k\) 鏉¤竟鐨勬潈鍊煎拰锛屼互鍙婃渶灏忓€笺€�

Solution

鍊嶅

[CF703D] Mishka and Interesting sum - 绂荤嚎澶勭悊,鏍戠姸鏁扮粍

Description

缁欏畾 \(n\) 涓暟鐨勫簭鍒� \(a\)銆�\(m\) 娆℃搷浣溿€傛瘡娆℃眰 \(a_l,a_{l+1},...,a_r\) 涓紝鍑虹幇鍋舵暟娆$殑鏁扮殑寮傛垨鍜屻€�

Solution

鍗冲尯闂存湰璐ㄤ笉鍚屾暟鐨勫紓鎴栧拰涓庡尯闂村紓鎴栧拰鐨勫紓鎴栵紝鍏抽敭鏄眰鍖洪棿鏈川涓嶅悓鏁扮殑寮傛垨鍜�
鑰冭檻鍒� n 鏈� 1e6锛岃帿闃熻窇涓嶅姩浜嗭紝鑰冭檻绂荤嚎澶勭悊骞剁敤鏍戠姸鏁扮粍缁存姢寮傛垨鍜岋紝鍦ㄦ瘡涓暟鏈€鍚庝竴娆″嚭鐜扮殑鍦版柟鏀句笂杩欎釜鏁�

[CF705B]

Description

ICG 娓告垙鏈夎嫢骞蹭釜鐜紝姣忔鎿嶄綔灏嗕竴涓幆鏂垚闈炵┖鐨勪袱閮ㄥ垎锛岃妭鐐规暟鎬诲拰涓嶅彉銆傞泦鍚堝垵鎬佷负绌猴紝姣忔鍚戦泦鍚堜腑娣诲姞涓€涓幆锛岃闂綋鍓嶉泦鍚堢敤浜庢父鎴忕殑鑳滆礋銆� \(n \le 10^5, a_i \le 10^9\)

Solution

鑰冭檻姣忎釜鐜紝濡傛灉鎴戜滑灏嗘搷浣滃悗浜х敓鐨勭幆閮界湅浣滆繖涓幆鐨勪竴閮ㄥ垎锛岄偅涔堜竴涓幆涓€瀹氬湪琚搷浣� \(a_i - 1\) 娆″悗灏变笉鑳芥搷浣滀簡銆傛墍浠ュ彧闇€瑕佸垽鏂� \(\sum{a_i - 1}\) 鐨勫鍋跺嵆鍙€�

Code

Description

A,B 涓や汉鐜╀竴涓父鎴忥紝鍏辨湁 t 杞紝姣忚疆娌′汉闅忔満绛夋鐜囦粠 [-k,k] 涓€変竴涓暟瀛楀姞鍒版€诲緱鍒嗕腑锛屽垵鎬佷笅鍒嗗埆鏈� a,b 鍒嗭紝鏈€佷笅寰楀垎楂樿€呰儨鍒┿€傞棶 A 鑳滃埄鐨勬鐜� \(\times (2k+1)^2t\) 鐨勫湪妯� \(10^9+7\) 涓嬬殑鍊笺€�\(t \le 100, k\le 1000\)

Solution

璁剧 \(i\) 娆★紙姣忚疆绠椾袱娆★級鏃跺垎宸负 \(j\) 鐨勬鐜� \(\times (2k+1)^i\) 涓� \(f[i][j]\)锛屽垯

\[f[i][j]=\sum_{l=j-k}^{j+k} f[i-1][l] \]

鐢ㄤ竴涓嬪墠缂€鍜屽嵆鍙€�

Description

缁欎竴寮犳棤鍚戝浘瀹氬悜锛屼娇寰楁湁鏈€澶氱殑鐐规弧瓒冲叆搴︾瓑浜庡嚭搴︺€�\(T \le 200, n \le 200, m\le 20000\)

Solution

寤轰竴铏氱偣锛屽皢鎵€鏈夊搴︾偣涓庤櫄鐐归棿杩炶櫄杈癸紝鏋勯€犱竴鏉℃鎷夊洖璺紝鍒犲幓鎵€鏈夎櫄杈癸紝鍗冲緱
锛堝洜涓哄害鏁板繕璁版竻闆� WA 浜嗚嫢骞插彂锛�

Description

鏌愪汉鍦ㄨ捣鐐瑰锛屽埌缁堢偣鐨勮窛绂讳负 \(s\)銆傛苯杞︾璧佸叕鍙告彁渚� \(n\) 绉嶈溅鍨嬶紝姣忕杞﹀瀷鏈夊睘鎬� \(c_i\)锛堢杞﹁垂鐢級锛�\(v_i\)锛堟补绠卞閲忥級銆傝溅瀛愭湁涓ょ鍓嶈繘鏂瑰紡锛氣憼鎱㈤€燂細\(1km\) 娑堣€� \(1L\) 姹芥补锛岃姳璐� \(2\) 鍒嗛挓銆傗憽蹇€燂細\(1km\) 娑堣€� \(2L\) 姹芥补锛岃姳璐� \(1\) 鍒嗛挓銆傝矾涓婃湁 \(k\) 涓姞娌圭珯锛屾补閮芥槸鍏嶈垂鐨勶紝鍔犳补涓嶉渶瑕佽姳璐规椂闂达紝涓旂洿鎺ョ粰娌圭鍔犳弧銆傞棶鍦� \(t\) 鍒嗛挓鍐呭埌杈剧粓鐐圭殑鏈€灏忚姳璐规槸澶氬皯锛熻嫢鏃犳硶鍒拌揪缁堢偣锛岃緭鍑� \(-1\)銆�

Solution

鑰冭檻瀵逛簬涓€娈甸暱涓� \(len\) 鐨勫尯闂达紝璁炬參閫� \(x\)锛屽揩閫� \((len-x)\)锛屽垯

\[t=2x+len-x=x+len \\ v=x+2(len-x)=2len-x \Rightarrow x=2len-v \\ 0 \le x \le len \]

濡傛灉鐩存帴姹傝В寰楀嚭鐨� \(x > len\) 鍒欒鏄庢棤娉曢€氳锛屽鏋滅洿鎺ユ眰瑙g殑 \(x <0\)锛屾垜浠鍏朵负 \(0\) 鍗冲彲
瀵规墍鏈夌殑 \(t\) 姹傚拰锛屽鏋滄瘮缁欏畾鐨勫紑濮嬫椂闂村皬锛屽垯鍙
杩欐牱鎴戜滑灏卞緱鍒颁簡涓€涓� \(O(nk)\) 鐨勭畻娉�
鑰冭檻鍒拌垂鐢ㄦ湰韬苟娌℃湁浠€涔堢敤锛屾墍浠ユ垜浠彧闇€瑕佷簩鍒嗗嚭涓€涓渶灏忕殑锛屽彲浠ュ畬鎴愪换鍔$殑 \(v\)锛岀劧鍚庡浜庢墍鏈� \(v_i \ge v\) 瀵瑰簲鐨� \(c_i\) 鍙栨渶灏忓€煎嵆鍙�

[CF734E] Anton and Tree - 鏍戠殑鐩村緞

Description

缁欏畾 n 涓妭鐐圭殑鏍戯紝姣忎釜鐐逛负榛戣壊鎴栫櫧鑹诧紝涓€娆℃搷浣滃彲浠ヤ娇涓€涓浉鍚岄鑹茬殑杩為€氬潡鍙樻垚鍙︿竴绉嶉鑹诧紝姹備娇鏁存5鏍戝彉鎴愪竴绉嶉鑹茬殑鏈€灏戞搷浣滄暟銆�

Solution

灏嗗悓鑹茶繛閫氬潡缂╃偣鍚庯紝绛旀鏄剧劧绛変簬鏍戠殑鍗婂緞

Description

鏈変竴涓� $ n $ 涓妭鐐圭殑浜屽弶鏍戙€�

瑕佹眰姣忎釜鑺傜偣鐨勪袱涓効瀛愮殑瀛愭爲鏈€澶ф繁搴︾浉宸笉瓒� $ 1 \(锛屾眰鏈€澶ф繁搴︺€�<br> \) n <= 10^{18} $

Solution

鍊掕繃鏉ユ兂锛岃 \(f(x)\) 琛ㄧず娣卞害涓� \(x\) 鐨勮繖鏍风殑浜屽弶鏍戯紝鏈€灏戦渶瑕佸灏戜釜鐐�
鏄剧劧鏈� \(f(x)=f(x-1)+f(x-2)\)
杈圭晫鏉′欢 \(f(0)=1,f(1)=2\) 锛堢敱棰樻剰寮曞彂鐨勬暟鍊煎亸绉伙級
浜庢槸鎴戜滑閫掓帹鍑� Fib 鏁板垪鍗冲彲

[CF755B]

Description

涓や釜浜鸿疆娴佽鍗曡瘝锛屾瘡涓汉鍙兘璇磋嚜宸辩殑鐨勫崟璇嶅簱閲岀殑鍗曡瘝銆傝浠绘剰鏂硅杩囩殑鍗曡瘝涓嶈兘鍐嶈銆備竴涓崟璇嶅彧浼氬湪鏌愪釜浜虹殑鍗曡瘝搴撲腑鍑虹幇涓€娆★紝浣嗘槸鍙兘鍚屾椂鍑虹幇鍦ㄤ袱涓汉鐨勫崟璇嶅簱涓€傛渶鍏堟病鏈夊崟璇嶈鐨勪汉璐熴€傛眰娓告垙鐨勮儨璐熴€� \(n,m \le 1000, L_s \le 500\)

Solution

鏈€浼樼瓥鐣ュ繀鐒舵槸浼樺厛璇存帀鎵€鏈夊叕鍏卞崟璇嶏紝鐒跺悗鍐嶈闈炲叕鍏卞崟璇嶃€�
璁惧叕鍏卞崟璇嶇殑鏁伴噺涓� \(c\) 銆�
鑻� \(c\) 涓哄鏁帮紝閭d箞鏈€鍚庝竴涓鍑哄叕鍏卞崟璇嶇殑鏄厛鎵嬶紝姝ゆ椂鑻� \(n \ge m\) 鍒欏厛鎵嬭儨銆�
鑻� \(c\) 涓哄伓鏁帮紝閭d箞鏈€鍚庝竴涓鍑哄叕鍏卞崟璇嶇殑鏄悗鎵嬶紝姝ゆ椂鑻� \(n > m\) 鍒欏厛鎵嬭儨銆�

Code

Description

缁欏畾 \(n\) 涓帓鎴愪竴鎺掔殑涓€妯′竴鏍风殑鐞冿紝瑕佷粠涓€夊嚭涓€浜涚悆骞跺瀹冧滑杩涜鍒嗙粍锛屾瘡涓粍涓悆鐨勪釜鏁板彧鑳戒负 1,2锛屾眰鍙栧嚭 \(1,2,...,k \le 2^{16}\) 缁勭殑鏂规鏁板垎鍒负澶氬皯銆�

Solution

鑰冭檻 dp锛岃 \(f_{i,j}\) 琛ㄧず鑰冭檻浜嗗墠 \(i\) 涓悆骞朵笖宸茬粡鍙栧嚭浜� \(j\) 缁勭殑鏂规鏁般€�
绗竴绉嶈浆绉绘柟寮忔槸鏋氫妇鏈€鍚庝竴涓悆鐨勫幓鍚戯紝鏄剧劧鏈変笁绉嶏細涓㈠純锛屽崟鐙垚缁勶紝鍜屼笂涓€涓竴璧锋垚缁勶紝鍒欒浆绉绘柟绋嬩负

\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}+f_{i-2,j-1} \]

绗簩绉嶈浆绉绘柟寮忔槸锛岃€冭檻浠庝腑闂存柇寮€锛屽嵆灏� \(n\) 鎷嗗垎涓� \(a+b\)锛岄偅涔堝鏋滅 \(a,a+1\) 涓悆涓嶅湪鍚屼竴缁勶紝鍒欏彲浠ュ垎鎴愪簰涓嶇浉骞茬殑涓ょ粍鏉ュ鐞嗭紱濡傛灉鏄繛鐫€鐨勶紝鍒欏 \(1 \sim a-1, a+2 \sim a+b\) 鍒嗗埆澶勭悊锛岀粍鏁颁笂鍐嶅姞涓婁竴缁勫嵆鍙紝杞Щ鏂圭▼涓�

\[f_{a+b,i} = \sum_{j=1}^{i-1} f_{a,j}f_{b,i-j}+\sum_{j=1}^{i-2}f_{a-1,j}f_{b-1,i-j-1} \]

鑰冭檻杞寲涓哄椤瑰紡褰㈠紡锛岃 \(F_n(x)=\sum_{i=0}^k f_{n,i} x^i\)锛屽垯涓婅堪鏂圭▼鍙互杞寲涓�

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{a+b}(x)=F_a(x)F_b(x)+xF_{a-1}(x)F_{b-1}(x) \]

鑰冭檻浠� \(a=n,b=n\)锛屽垯绗簩绉嶈浆绉绘柟妗堢殑閫掓帹寮忔敼鍐欎负

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

鍚岀悊鏈�

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

鏁寸悊涓€涓嬶紝鎴戜滑鐜板湪鎷ユ湁鐨勫椤瑰紡褰㈠紡鐨勯€掓帹寮忔湁

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

浜庢槸鏄剧劧鎴戜滑闇€瑕佹瀯寤轰竴涓笁鍏冪粍 \(G_n = (F_n,F_{n-1},F_{n-2})\) 浣滀负涓€涓渶灏忕殑鍗曚綅銆�
鏍规嵁绗竴涓紡瀛愶紝鎴戜滑鍙互鍋氬埌 \(G_n \to G_{n+1}\)锛屾牴鎹悗涓変釜寮忓瓙鍙互鍋氬埌 \(G_n \to G_{2n}\)銆�
浜庢槸鎴戜滑鍙渶瑕佸 \(n\) 鍒嗚В涓€涓嬪嵆鍙€傚鏋滃綋鍓� \(n\) 鏄鏁伴偅涔堝氨 \(-1\) 骞朵笖娣诲姞涓€涓� \(G_n \to G_{n+1}\) 鎿嶄綔锛涘鏋滃綋鍓� \(n\) 鏄伓鏁伴偅涔堝氨 \(\div 2\) 骞朵笖娣诲姞涓€涓� \(G_n \to G_{2n}\) 鎿嶄綔銆傚惊鐜墽琛岀洿鍒� \(n=2\)锛屾渶鍚庢瀯閫犲垵濮嬬姸鎬佸苟鍊掑簭澶嶅師鎵€鏈夋搷浣滃嵆鍙€�

Description

骞抽潰涓婃湁 \(n\) 涓笌鍧愭爣杞村钩琛岀殑鐭╁舰銆傜煩褰㈢殑鎵€鏈夎竟鐨勯暱搴﹂兘鏄鏁般€傜煩褰笉鑳界浉浜わ紝浣嗗畠浠彲浠ヤ簰鐩告帴瑙︺€傛瀯閫犱竴绉嶆煋鑹叉柟妗堬紝浣垮緱鎵€鏈夌浉閭荤煩褰㈢殑棰滆壊閮戒笉鐩稿悓銆�

Solution

鑰冭檻鍒扳€滅煩褰㈢殑鎵€鏈夎竟鐨勯暱搴﹂兘鏄鏁扳€濊繖涓潯浠讹紝閭d箞濡傛灉涓や釜鐭╁舰鐩搁偦锛屼粬浠殑妯旱鍧愭爣濂囧伓鎬ц嚦灏戞湁涓€涓笉鍚屻€�
鍥犳鎴戜滑鏍规嵁涓€涓《鐐圭殑鍧愭爣鐨勫鍋舵€ф潵鏌撹壊鍗冲彲銆�

Description

缁欏嚭涓€涓叉湁灏忓啓瀛楁瘝缁勬垚鐨勯暱搴︿负 \(n \le 10^3\) 鐨勫瓧绗︿覆銆傛瘡涓皬鍐欏瓧姣嶉兘鏈夊搴斿€� \(a_i\)锛屽垎鍓插師涓诧紝瑕佹眰瀵瑰簲鍊间负 \(a_i\) 鐨勫瓧绗︿笉鑳藉嚭鐜板湪闀垮害瓒呰繃 \(a_i\) 鐨勫瓧涓蹭腑銆傞棶鍏辨湁澶氬皯绉嶅垎鍓叉柟寮忥紝鍒嗗壊鍚庝細鍑虹幇鐨勬渶闀垮瓙涓查暱搴︽槸澶氬皯锛岄噰鐢ㄦ渶灏戝垎鍓叉鏁扮殑鏂瑰紡锛屾渶灏戝垎鍓叉鏁版槸澶氬皯锛�

Solution

dp锛屽垎鍒涓夌璇㈤棶杩涜澶勭悊锛�\(O(n^2)\)

Description

\(n\) 绉嶇墿鍝侊紝姹備竴娆″彇涓€浠舵妸鎵€鏈夌绫诲彇閬嶇殑姒傜巼涓嶅皬浜庣粰瀹氬€� \(p/2000\) 鐨勬渶灏忓ぉ鏁般€�

Solution

璁� \(f[i][j]\) 琛ㄧず鍓� \(i\) 娆″彇鍑轰簡 \(j\) 绉嶇殑姒傜巼锛屽垯

\[f[i][j]=\frac j n f[i-1][j] + \frac {n-j+1} n f[i-1][j-1] \]

璁� \(m\) 涓轰竴瓒冲澶х殑鏁帮紙涓嶅Θ鍙� \(10^4\)锛夛紝鍒欏浜庢瘡涓闂紝鎵惧埌鏈€灏忕殑 \(k\) 浣垮緱 \(f[m][n] \ge p/2000\) 鍗冲彲
涓€鍏辨湁 \(N\) 涓鐩紝鍏朵腑鏈� \(M\) 涓富瑕佺鐩紝鍙 \(M\) 涓富瑕佺鐩兘閫氳繃浜嗭紝閭d箞瀵瑰簲涓讳汉鍏氨鍙互姣曚笟浜嗭紝涔熷氨鏄揪鎴愪簡鐩殑銆傜幇鍦ㄦ湁涓€涓垪琛紝琛ㄧず瑕侀€氳繃绗� \(i\) 闂ㄨ绋嬮渶瑕佸厛閫氳繃鐨勭鐩垪琛ㄣ€傜幇鍦ㄤ富浜哄叕甯屾湜寰楀埌涓€涓€氳繃绉戠洰鐨勯『搴忥紝浣垮緱鏈€缁堜粬閫氳繃鏈€灏戠殑绉戠洰浣垮緱涓讳汉鍏瘯涓氥€�

Solution

濡傛灉鏈夌幆锛屽垯鏃犺В
瀵逛簬姣忎釜涓荤鐩紝浠庤繖涓偣寮€濮嬶紝鍦ㄥ弽鍥句笂 DFS 鍗冲彲锛岄亣鍒板凡缁忔爣璁扮殑鐐瑰氨閫€鍑�
杈撳嚭鏃舵寜鐓ф嫇鎵戝簭杈撳嚭

Description

缁欏畾 \(n\) 涓暟瀛楋紝鍒嗗埆涓� \(2,3,...,n+1\)锛岃瀵规瘡涓暟瀛楁煋鑹诧紝浣垮緱涓€涓暟瀛楁槸鍙︿竴涓暟瀛楃殑璐ㄥ洜瀛愭椂锛屼袱涓暟瀛楃殑棰滆壊涓嶅悓锛屾渶灏忓寲浣跨敤鐨勯鑹叉暟銆傛眰鏌撹壊鏂规銆�

Solution

棣栧厛璇佹槑涓€瀹氬彲浠ョ敤涓ょ棰滆壊鏌撳畬銆備笉濡ㄧ敤绗竴绉嶉鑹叉煋鎵€鏈夌殑璐ㄦ暟锛岀敤绗簩绉嶉鑹叉煋鎵€鏈夌殑闈炶川鏁帮紝鏄剧劧婊¤冻鏉′欢銆�
鑰屽綋涓嶅瓨鍦ㄤ换鎰忎袱涓暟浣垮緱涓€涓暟鏄彟涓€涓暟鐨勮川鍥犲瓙鏃讹紝鍙互鐢ㄤ竴绉嶉鑹叉煋瀹屾墍鏈夌殑鏁般€傜敱浜庢暟瀛楁槸 \(2,3,4,...,n+1\)锛岃繖绉嶆儏鍐典細鍙戠敓锛屽綋涓斾粎褰� \(n \le 2\)銆�

Description

姣忔墖闂ㄨ涓や釜寮€鍏虫帶鍒讹紝鎿嶄綔涓€涓紑鍏冲皢鏀瑰彉鎵€鏈夊畠鎵€鎺у埗鐨勯棬鐨勭姸鎬併€傛眰鏄惁瀛樺湪涓€涓搷浣滄柟妗堬紝鎵撳紑鎵€鏈夌殑闂ㄣ€�

Solution

瀵逛簬寮€鍏宠鐘舵€侊紝\(1\) 琛ㄧず鎿嶄綔杩欎釜寮€鍏筹紝\(0\) 琛ㄧず涓嶆搷浣�
濡傛灉涓€鎵囬棬鐨勭姸鎬佹槸 \(1\)锛屽垯鎺у埗瀹冪殑涓や釜寮€鍏崇姸鎬佸繀椤荤浉鍚岋紙\(00/11\)锛�
濡傛灉涓€鎵囬棬鐨勭姸鎬佹槸 \(0\)锛屽垯鎺у埗瀹冪殑涓や釜寮€鍏崇姸鎬佸繀椤荤浉鍙嶏紙\(01/10\)锛�

鍥為【涓€涓� 2-SAT 鐨勫缓鍥炬柟娉�
璁炬湁 \(n\) 涓� \(x_i\)锛岄€昏緫绾︽潫涓轰竴涓富鍚堝彇鑼冨紡
姣忔潯杈� \(p \to q\) 琛ㄧず閫変簡 \(p\) 灏卞繀椤昏閫� \(q\)
鍥犳渚嬪瀵逛簬 \(i \or j\)锛屾垜浠繛杈� \(\neg i \to j\) 浠ュ強 \(\neg j \to i\)
鑰冭檻姣忎釜鍙橀噺
濡傛灉 \(x\to \neg x\)锛屽垯 \(x=0\)锛涘鏋� \(\neg x \to x\)锛屽垯 \(x=1\)锛涘鏋� \(x \to \neg x \and \neg x \to x\) 鍒欐棤瑙�
鍥犳锛屽鏋滀换鎰忎竴涓彉閲� \(x\) 涓� \(\neg x\) 鍦ㄥ悓涓€涓� SCC 涓紝鍒欐棤瑙o紝璺戜竴閬� Tarjan 鍗冲彲

鍥炲埌鏈锛岃鏌愰棬瀵瑰簲鐨勫紑鍏虫槸 \(p,q\)
濡傛灉闂ㄦ槸 \(1\)锛屽垯 \(p \to q, q \to p,\neg p \to \neg q,\neg q \to \neg p\)
濡傛灉闂ㄦ槸 \(0\)锛屽垯 \(p \to \neg q, q \to \neg p, \neg p \to q,\neg q \to p\)

[CF786B] Legacy - 绾挎鏍戜紭鍖栧缓鍥�,鏈€鐭矾

Description

鏈変笁绉嶆搷浣滐細1.杩涜鍗曠偣涓庡崟鐐硅繛鏈夊悜杈� 2.杩涜鍗曠偣涓庡尯闂磋繛鏈夊悜杈� 3.杩涜鍖洪棿涓庡崟鐐硅繛鏈夊悜杈广€傛眰鏈€鐭矾銆�

Solution

鍙戠幇娌℃湁鍖洪棿鍜屽尯闂达紝杩欐殫绀虹殑澶熸槑鏄句簡锛岀嚎娈垫爲浼樺寲寤哄浘鍗冲彲

Description

缁欏畾涓€妫垫爲锛屾爲涓婃湁涓€浜涚偣鏄叧閿偣銆備竴妫垫爲鏄悎娉曠殑褰撲笖浠呭綋鎵€鏈夌偣绂绘渶杩戠殑鍏抽敭鐐圭殑璺濈涓嶈秴杩� \(d\)锛屾眰鏈€澶氳兘鍒犻櫎澶氬皯鏉¤竟銆�

Solution

鑰冭檻浠庢墍鏈夌殑鍏抽敭鐐瑰紑濮� BFS銆傚亣璁惧綋鍓嶄綅浜庣偣 \(p\)锛屼笅涓€涓璁块棶鐨勭偣鏄� \(q\)锛岃嫢 \(q\) 琚闂繃鑰� \((p,q)\) 杩欐潯杈规湭琚闂繃锛屽垯杩欐潯杈瑰彲浠ヨ鍒犻櫎銆�

Description

缁欏嚭涓€涓瓧绗︿覆锛屾寜鐓т粠鍓嶅埌鍚庣殑椤哄簭杩涙爤锛岃緭鍑哄瓧鍏稿簭鏈€灏忕殑鍑烘爤搴忓垪

Solution

鏍堥《鍏冪礌姣旀湭鍏ユ爤鐨勬墍鏈夊厓绱犻兘灏忥紙涓嶄弗鏍硷級鏃舵墠鍑烘爤

Description

Mike 缁欏畾涓€涓� \(n\) 涓厓绱犵殑鏁存暟搴忓垪 \(A=[a_1,a_2,...,a_n]\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(i (1 \le i<n)\)锛屽皢 \(a[i],a[i+1]\) 鍙樻垚 \(a[i]-a[i+1]\) 鍜� \(a[i]+a[i+1]\)銆傜幇鍦ㄦ兂瑕佺殑鏄� \(A\) 搴忓垪鎵€鏈夊厓绱犵殑鏈€澶у叕绾︽暟澶т簬 \(1\)锛岃璁$畻鏈€灏戠殑鎿嶄綔娆℃暟銆�

Solution

鍘熷搴忓垪鐨� GCD 涓� 1 鏃讹紝鎴戜滑鍙渶瑕佸皢鍏跺彉涓� 2
鑰冭檻涓や釜鏁板浣曞彉鎴愬叏鍋舵暟锛氫袱涓鏁伴渶瑕� \(1\) 娆℃搷浣滐紝涓€涓鏁颁竴涓伓鏁伴渶瑕� \(2\) 娆℃搷浣�
浜庢槸鎴戜滑鎶婂師搴忓垪鎻愬嚭濂囧伓鎬у悗锛屽厛鎵竴閬嶅鐞嗘帀鎵€鏈夌浉閭荤殑濂囨暟锛屽啀鎵竴閬嶅鐞嗘帀鎵€鏈変竴涓鏁颁竴涓伓鏁扮殑鎯呭喌鍗冲彲
鏃犺В鏄笉浼氭棤瑙g殑

[CF7D] Palindrome Degree - dp

Description

涓€涓暱搴︿负 n 瀛楃涓� s 琚彨鍋� k 闃剁骇鍥炴枃涓诧紝褰撲笖浠呭綋瀹冩湰韬槸涓€涓洖鏂囦覆锛岃€屼笖瀹冮暱搴︿负 n/2 鐨勫墠缂€鍜屽悗缂€閮芥槸 k-1 闃剁骇鍥炴枃涓层€備换浣曚竴涓瓧绗︿覆锛堝寘鎷┖瀛楃涓诧級閮借嚦灏戞槸 0 闃剁骇瀛楃涓层€傜幇鍦ㄧ粰瀹氫綘涓€瀛楃涓诧紝璇蜂綘姹傚嚭鍏舵墍鏈夊墠缂€鐨勭殑闃剁骇涔嬪拰銆�

Solution

璁� \(f[i]\) 琛ㄧず闀垮害涓� i 鐨勫墠缂€鐨勯樁鏁帮紝濡傛灉鏄洖鏂囩殑锛岄偅涔� \(f[i]=f[i/2]+1\)锛屽惁鍒� \(f[i]=0\)
鍒ゆ柇鍥炴枃鍙互鐩存帴 Manacher

Description

鐜板湪缁欏嚭 \(n\) 涓暟 \(a_{1},a_{2},鈥�,a_{n}\)锛�\(a_{i}\) 琛ㄧず鏃跺埢 \(i\) 鍑虹幇鐨勬暟銆傚畾涔� \(cnt_{x}(i)\) 琛ㄧず鍒� \(i\) 鏃跺埢 \(x\) 鍑虹幇杩囩殑涓暟銆侫lice 閫夋嫨浜嗕竴涓暟 \(m\)锛岃甯姪 Bob 閫夋嫨涓€涓暟 \(k\ne m\)锛屼娇寰楀浠绘剰鏃跺埢 \(i\)锛岄兘鏈� \(cnt_{k}(i) \ge cnt_{m}(i)\)銆傝嫢涓嶅瓨鍦ㄨ繖鏍风殑 \(k\) 璇疯緭鍑� \(-1\)銆�

Solution

缁存姢璁℃暟鍣紝缁熻鍒板綋鍓嶆椂鍒绘瘡涓暟瀛� \(x\) 鍑虹幇浜嗗灏戞
璁板綍褰撳墠鏃跺埢 \(m\) 鐨勪釜鏁颁负 \(now\)锛屽鏋滄煇涓� \(x\) 鍑虹幇鍦� \(m\) 鍚庨潰锛屼笖 \(cnt[x]<now\) 鍒� \(x\) 涓嶅悎娉曪紝婊¤冻杩欑鎯呭喌鎴戜滑灏变笉缁х画鍔犱簡
鏈€鍚庢壂涓€閬嶈鏁板櫒鍗冲彲

Description

缁欏畾鍙惈 ACTG 鐨勫瓧绗︿覆 S锛屾湁涓ょ鎿嶄綔锛岃涔堜慨鏀规煇涓瓧绗︼紝瑕佷箞璇㈤棶鍦ㄤ竴涓尯闂村唴锛屼笌璇㈤棶涓茬殑寰幆閲嶅鍖归厤鐨勫瓧绗︿釜鏁般€傝闂覆闀垮害涓嶈秴杩� 10銆�

Solution

璁� \(Seg[i][j][k]\) 琛ㄧず鐢ㄤ簬缁存姢涓嬫爣瀵� \(i\) 鍙栨ā锛屼綑鏁颁负 \(j\)锛屽瓧绗� \(k\) 鐨勫嚭鐜扮殑鍔ㄦ€佸紑鐐圭嚎娈垫爲
鏈変竴妫� \(n\) 涓妭鐐圭殑鏍戯紝涓€鍏� \(q\) 娆¤闂紝姣忔璇㈤棶缁欏畾 \(3\) 涓偣锛屾眰涓ゆ潯璧风偣缁堢偣鍦ㄨ繖涓変釜鐐逛笂涓斾笉瀹屽叏閲嶅悎鐨勮矾寰勭殑鏈€澶氬叕鍏辫妭鐐规暟銆�

Solution

鏋氫妇鍏叡鐐癸紝绛旀涓� \((dis(a,b) + dis(a,c) - dis(b,c)) / 2 + 1\)

[CF833B] The Bakery - dp,绾挎鏍�

Description

灏嗛暱 n 鐨勫簭鍒楀垎鎴� k 娈碉紝姣忔鐨勪环鍊间负鍖洪棿鍐呬笉鍚屾暟瀛椾釜鏁帮紝浣垮緱鎬讳环鍊兼渶澶с€�\(n \le 35000, k \le 50\)

Solution

\(f[i][j]=\max f[l][j-1]+C(l+1,i)\)
鐜板湪锛屽涓庢墍鏈夌殑 l锛屾垜浠凡缁忕煡閬� C(l+1,i-1)锛屾垜浠笇鏈涘揩閫熷緱鍒� C(l+1,i)
瀵逛簬涓€涓壒瀹氱殑 l锛屽鏋� \([l+1,i-1]\) 涓兘鎵惧埌 \(a[i]\)锛岄偅涔堟病鏈夎础鐚�
璁� \(a[i]\) 涓婃鍑虹幇鐨勪綅缃槸 \(last[i]\)锛岄偅涔� \([last[i],i-1]\) 鐨� l 浣嶇疆浼� +1
鎴戜滑鐢ㄧ嚎娈垫爲缁存姢锛堝褰撳墠鐨� i,j锛屾墍鏈� l锛�\(f[l-1][j-1]+C(l,i)\)锛屾瘡娆′慨鏀� \([last[i]+1,i]\)锛屾瘡娆℃煡璇㈡渶澶у€�
娉ㄦ剰鍦� dp 鏃讹紝鎴戜滑澶栧眰鏋氫妇 j锛屽唴灞傛灇涓� i锛岄偅涔堟瘡娆℃崲 j 鏃堕渶瑕佸紑涓€妫垫柊鐨勭嚎娈垫爲

[CF837D] Round Subset - dp

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暟鍒楋紝瑕佹眰浣犱粠涓€夊嚭 \(k\) 涓暟锛屼娇寰楄繖浜涢€夊嚭鐨勬暟鐨勭Н鐨勬湯灏� \(0\) 鐨勪釜鏁板ぇ銆�

Solution

璁� \(f[i][j][k]\) 琛ㄧず浠庡墠 i 涓暟涓€変簡 j 涓紝宸茬粡鏈変簡 k 涓� 5锛屾渶澶氳兘鏈夊灏戜釜 2

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬暟鍒� \(a_i\)锛屾瘡涓暟浜掍笉鐩稿悓锛屾瘡杞細浠庡墿浣欑殑閮ㄥ垎涓彇鍑轰竴涓笅鏍囧簭鍒楀瓧鍏稿簭鏈€灏忕殑鍊间笂鍗囩殑瀛愬簭鍒椼€傛寜杞緭鍑哄彇鍑虹殑鏁板垪銆�

Solution

鍏堢鏁e寲涓€涓�
鏍稿績瑙傚療鏄細鍋囧鎴戜滑鍦� \([1,i]\) 涓瀯寤轰簡涓や釜搴忓垪锛岄偅涔堢粨鏉熶綅缃棭鐨勯偅涓簭鍒楃殑鏈熬鍏冪礌涓€瀹氭瘮鏅氱殑閭d竴涓澶�
杩欎釜瑙傚療鎻愪緵浜嗗彲浜屽垎鎬�
鎴戜滑浠庡乏鍒板彸鎵竴閬嶆暣涓簭鍒楋紝鍚屾椂鐢ㄤ竴涓� set 缁存姢鎵€鏈夌殑鏈熬鍏冪礌鍊硷紝姣忔鍦ㄦ湯灏惧厓绱犻泦鍚堥噷浜屽垎鏉ュ喅瀹氳繖涓厓绱犳帴鍦ㄦ煇涓殑鍚庨潰杩樻槸鍙﹀紑涓€涓�

Description

鏈� \(n\) 涓暱搴︿负 \(9\) 涓斿彧鍖呭惈鏁板瓧瀛楃涓� 浜掍笉鐩稿悓 鐨勪覆銆傞渶瑕佸浜庢瘡涓覆鎵惧埌涓€涓� 闀垮害鏈€鐭� 鐨勮瘑鍒爜锛屼娇寰楄繖涓瘑鍒爜鏄笖浠呮槸杩欎釜涓茬殑瀛愪覆銆�

Solution

瀛楀吀鏍戣В娉�

灏嗘瘡涓覆鐨勬墍鏈夊悗缂€鍔犲叆瀛楀吀鏍戜腑
鐒跺悗瀵逛簬姣忎釜涓诧紝璺戝畠鐨勬瘡涓瓙涓诧紝濡傛灉璺戝埌鏌愪釜浣嶇疆锛屽瓙鏍戜腑鍙墿涓嬩笌鑷繁鍚岀被鐨勶紝灏卞彲琛岋紝鏈€鍚庡鎵€鏈夊彲琛屽彇鏈€灏忓€�

map瑙f硶

鐢� map 淇濆瓨姣忎釜瀛愪覆鏄皝鐨勶紝濡傛灉鍚屾椂鏄袱涓互涓婄殑锛岃繖涓瓙涓插氨涓嶈兘鐢�
鏈€鍚庨亶鍘� map 瀵圭瓟妗堣繘琛屾洿鏂�
鏈変竴涓暱搴︿负n鐨勫簭鍒楋紝Alice鍜孊ob鍦ㄧ帺娓告垙銆侭ob鍏堟墜鎺屾彙鍐崇瓥鏉冦€�
浠栦滑浠庡乏鍚戝彸鎵暣涓簭鍒楋紝鍦ㄤ换鎰忔椂鍒伙紝鎷ユ湁鍐崇瓥鏉冪殑浜烘湁濡備笅涓や釜閫夋嫨锛�

灏嗗綋鍓嶇殑鏁板姞鍒拌嚜宸辩殑寰楀垎涓紝骞跺皢鍐崇瓥鏉冪粰瀵规柟锛屽鏂瑰皢鑾峰緱涓嬩竴涓暟鐨勫喅绛栨潈

灏嗗綋鍓嶇殑鏁板姞鍒板鏂圭殑寰楀垎涓紝骞跺皢鍐崇瓥鏉冧繚鐣欑粰鑷繁锛岃嚜宸卞皢鑾峰緱涓嬩竴涓暟鐨勫喅绛栨潈

鍋囧畾浠栦滑閮戒娇鐢ㄦ渶浼樼瓥鐣ワ紝姹備粬浠渶鍚庡垎鍒兘鑾峰緱澶氬皯鍒�

Solution

鑰冭檻鍒版棤鍚庢晥鎬э紝浠� \(f[i][0/1]\) 琛ㄧず 0/1 澶勭悊瀹屼簡鍓� \(i\) 涓暟锛屽厛鎵嬪拰鍚庢墜寰楀垎鐨勫樊
杞Щ鍗虫灇涓句笂涓€娆$殑浣嶇疆
\(f[i][1]=max(f[j][0] - a[j+1] - a[j+2] - ... +a[i])\)
\(f[i][0]=min(f[j][1] + a[j+1] + a[j+2] + ... -a[i])\)
鎹釜鎬濊矾锛岃 \(f[i]\) 涓轰粠 \(i\) 寮€濮嬪線鍚庨€夛紝鑳借幏寰楃殑鏈€澶ф敹鐩婏紝鎴戜滑鍙互鏉ュ喅绛栨瘡涓綅缃槸鍚︾炕闈�
\(f[i]=max(f[i+1], s[i]-f[i+1])\)
鍏朵腑 \(s[i]\) 鏄悗缂€鍜�

[CF86D] Powerful array - 鑾槦

Description

缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒� \(a\)锛屾湁 \(q\) 娆¤闂紝姣忔璇㈤棶缁欏嚭涓や釜鏁� \(l,r\)銆傚浜庢瘡娆¤闂紝璁� \(cnt_i\) 琛ㄧず \(i\) 鍦� \(a_l,a_{l+1},\cdots,a_r\) 鍑虹幇鐨勬鏁帮紝鎮ㄩ渶瑕佹眰鍑� \(\displaystyle\sum_i cnt_i^2\cdot i\)銆�\(1\le a_i\le 10^6\)

Solution

杩欑鍖洪棿闂寰堟樉鐒跺氨鏄帿闃熶簡锛屾瘡娆′慨鏀圭殑鏃跺€欐垜浠噺鍘诲師鏉ョ殑绛旀鍐嶅姞涓婃柊鐨�
鍙兘鍥犱负鐢ㄤ簡澶 vector 琚崱甯镐簡锛屼簬鏄姞浜嗕釜濂囧伓浜ゆ崲

include <bits/stdc++.h>

using namespace std;

define int long long

vector belong;

struct MoSolution
{
vector a;
int block_size;

struct Question
{
    int l, r, id;
    friend bool operator<(const Question &lhs, const Question &rhs)
    {
        if (belong[lhs.l] == belong[rhs.l])
            if (belong[lhs.l] & 1)
                return lhs.r < rhs.r;
            else
                return lhs.r > rhs.r;
        else
            return lhs.l < rhs.l;
    }
};

vector<Question> questions;

struct Bucket
{
    static const int maxn = 1e6 + 5;

    vector<int> cnt;
    int ans;

    Bucket()
    {
        cnt.resize(maxn);
        ans = 0;
    }

    void Add(int x)
    {
        ans += 2 * cnt[x] * x + x;
        cnt[x]++;
    }

    void Dec(int x)
    {
        cnt[x]--;
        ans -= 2 * cnt[x] * x + x;
    }
} bucket;

vector<int> ans;
int n, m;

void solve()
{
    cin >> n >> m;
    block_size = sqrt(n);

    a.resize(n + 2);
    belong.resize(n + 2);

    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
        belong[i] = i / block_size;

    questions.resize(m + 2);
    ans.resize(m + 2);

    for (int i = 1; i <= m; i++)
    {
        cin >> questions[i].l >> questions[i].r;
        questions[i].id = i;
    }

    sort(&questions[1], &questions[m + 1]);

    int l = 1, r = 0;

    for (int i = 1; i <= m; i++)
    {
        int ql = questions[i].l, qr = questions[i].r;

        while (r < qr)
            bucket.Add(a[++r]);
        while (l > ql)
            bucket.Add(a[--l]);

        while (r > qr)
            bucket.Dec(a[r--]);
        while (l < ql)
            bucket.Dec(a[l++]);

        ans[questions[i].id] = bucket.ans;
    }

    for (int i = 1; i <= m; i++)
    {
        cout << ans[i] << endl;
    }
}

};

signed main()
{
MoSolution solution;
solution.solve();
}

Description

缁欏畾涓€涓暱搴︿负 \(n (n \le 2\times 10^5)\) 鐨勬暟鍒� \(a_i\)锛屾眰婊¤冻鍖洪棿 \(OR\) 澶т簬鍖洪棿鏈€澶у€肩殑鍖洪棿鐨勪釜鏁般€�

Solution

娉ㄦ剰鍒板尯闂存垨姘歌繙涓嶄細灏忎簬鍖洪棿鏈€澶у€�
浜庢槸杞寲涓烘眰鍖洪棿鎴栫瓑浜庡尯闂存渶澶у€肩殑鍖洪棿涓暟
鏋氫妇鏈€澶у€煎厓绱� \(a_p\)锛岀粨鍚堥澶勭悊寰楀埌鍏舵帶鍒剁殑锛堜笅鏍囷級鍖洪棿 \([l,r]\)
姝ゆ椂鎴戜滑闇€瑕佸緱鍒板畠鍚戝乏/鍚戝彸鑳芥墿灞曠殑鏈€澶ч暱搴�
鑰冭檻鍒板崟璋冩€э紝鍒╃敤 ST 琛ㄥ嵆鍙�

Description

鏈変竴 \(N \times M\) 鐨勮糠瀹紝# 鏄锛宍.` 鏄矾锛屼竴绉掗挓鍙互鍚戝洓涓柟鍚戜腑鐨勪竴涓Щ鍔� \(1 \sim k\) 姝ワ紝姹備粠璧风偣鍒扮粓鐐圭殑鏈€鐭椂闂淬€�\(N,M,k \le 1000\)銆�

Solution

姝e父 BFS 鍗冲彲瑙e喅锛屽叧閿槸鑰冭檻鍒版瘡涓偣鍙細鍏ラ槦涓€娆★紝杩欐牱淇濊瘉浜嗘椂闂村鏉傚害銆�
涓昏鏄娉ㄦ剰涓€涓嬪嚑涓壀鏋濇潯浠躲€�
缁欏嚭涓€涓� n 涓偣 m鏉¤竟鐨勬棤鍚戝浘锛屾瘡鏉¤竟鏈夎竟鏉冿紝鍏� Q娆¤闂紝姣忔缁欏嚭 \(k\)鏉¤竟锛岄棶杩欎簺杈硅兘鍚﹀悓鏃跺湪涓€妫垫渶灏忕敓鎴愭爲涓娿€�

Solution

鎵€鏈夋渶灏忕敓鎴愭爲涓煇鏉冨€肩殑杈圭殑鏁伴噺鏄竴瀹氱殑
鍔犲畬灏忎簬鏌愭潈鍊肩殑鎵€鏈夎竟鍚庡浘鐨勮繛閫氭€ф槸涓€鏍风殑
瀵逛簬姣忎釜璇㈤棶锛屾瘡绉嶆潈鍊煎垎寮€鑰冭檻
瀵规瘡涓潈鍊硷紝鍔犲畬灏忎簬杩欐潯杈圭殑鏉冨€煎悗鐨勬墍鏈夎竟
鐒跺悗鍒ゆ柇杩欎釜鏉冨€煎湪缂╃偣鍚庡浘涓婃槸鍚︽垚鐜�
鍥犳闇€瑕佽窇涓€娆� Kruskal 骞朵笖璁板綍涓嬪浜庢瘡鏉¤竟锛屽姞瀹屾潈鍊煎皬浜庡畠鐨勬墍鏈夎竟鍚庯紝鍏朵袱涓鐐规墍鍦ㄧ殑杩為€氬潡缂栧彿
杩欐牱璇㈤棶鏃跺彧闇€瑕佹嬁鐫€骞舵煡闆嗘悶灏卞彲浠ヤ簡

[CF903D] Almost Difference

Description

瀹氫箟鍑芥暟 \(d(x,y)=\begin{cases}y-x,\text{if }|x-y| >1\\0,\text{if }|x-y|\le 1\end{cases}\)锛岀粰瀹氶暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾眰 \(\sum_{i=1}^n\sum_{j=i+1}^n d(a_i,a_j)\)

Solution

鍏堢粺璁″嚭鎵€鏈夌殑鍚庨」鍑忓墠椤圭殑鍜岋紝鐒跺悗鑰冭檻鍑忓幓鎵€鏈� \(x-y \le 1\) 鐨勬儏鍐碉紝鍏蜂綋鍦帮紝鎵弿姣忎竴涓� \(i\)锛屽浜庡叾宸﹁竟鐨� \(j\)锛屽姞涓婂叾涓� \(a_j = a_i+1\) 鐨勪釜鏁帮紝鍐嶅噺鍘诲叾涓� \(a_j = a_i-1\) 鐨勪釜鏁�

Description

缁欏畾涓€涓覆锛屾瘡杞繘琛屽涓嬫搷浣滐細濡傛灉涓€涓瓧绗︾殑鐩搁偦瀛楃涓瓨鍦ㄤ笌瀹冧笉鍚岀殑锛屽垯杩欎釜瀛楃琚€変腑锛岄€夊ソ鎵€鏈夊瓧绗﹀悗灏嗚繖浜涘瓧绗﹀悓鏃跺垹闄わ紝璇ヨ疆缁撴潫銆傞棶鎿嶄綔澶氬皯娆″悗鏃犳硶鍐嶅垹闄や换浣曠偣銆�

Solution

灏嗙浉鍚岀殑杩炵画娈靛悎骞舵垚涓€涓粨鐐癸紝鐢ㄩ摼琛ㄧ淮鎶�
姣忔閬嶅巻鎵€鏈夎妭鐐癸紝澶村熬鍊� -1锛屼腑闂村€� -2锛屽鏋滄煇涓妭鐐瑰€� \(\le 0\) 浜嗗氨鍒犻櫎瀹�
锛堝 stl::list 杩樻槸涓嶇啛鎮夛級

Description

缁欎綘涓€涓暱搴︿负 \(N\) 鐨勫簭鍒楋紝鏈� \(M\) 娆℃搷浣溿€傛瘡娆$炕杞� \([l,r]\) 鐨勫尯闂达紝姣忔鎿嶄綔鍚庤闂簭鍒楅€嗗簭瀵逛釜鏁扮殑濂囧伓鎬с€�

Solution

缈昏浆涓€涓瓙鍖洪棿涓暟涓哄伓鏁扮殑鍖洪棿锛岄€嗗簭瀵逛釜鏁板鍋舵€т笉鍙�
缈昏浆涓€涓瓙鍖洪棿涓暟涓哄鏁扮殑鍖洪棿锛岄€嗗簭瀵逛釜鏁板鍋舵€ф敼鍙�

[CF915D] Almost Acyclic Graph - 鎷撴墤鎺掑簭

Description

缁欏畾鏈夊悜鍥� \(n \le 500, m \le 10^5\)锛屾渶澶氬垹鍘讳竴鏉¤竟鏄惁鑳戒娇寰楄繖涓浘鍙樻垚鏈夊悜鏃犵幆鍥撅紵

Solution

鐩磋浣嗛夯鐑︾殑鎯虫硶锛氶殢渚挎壘涓€涓幆锛屾毚鍔涙灇涓惧垹闄ょ幆涓婄殑涓€鏉¤竟锛屽啀妫€楠�
鑰冭檻鏋氫妇璁╂煇涓偣鍒犲幓涓€鏉¤竟锛屼絾鏄笉鐢ㄧ湡鐨勫垹锛屽彧闇€瑕佹妸瀹冪殑鍏ュ害 -1 鍗冲彲锛岃繖鏍风浉褰撲簬鍒犲幓浜嗕换鎰忎竴鏉★紝璁╄繖涓偣鏇存棭鍦扮О涓烘嫇鎵戞帓搴忚繃绋嬩腑鐨勫彲閫夌偣
鏈変竴涓� DAG锛屾瘡鏉¤竟涓婃湁涓€涓皬鍐欒嫳鏂囧瓧姣嶈〃绀烘潈鍊硷紝Alice 鍜� Bob 姣忎汉鏈変竴涓瀛愶紝鍚勬斁鍦ㄤ竴涓妭鐐逛笂锛堝彲浠ユ斁鍦ㄥ悓涓€涓妭鐐逛笂锛夈€傜涓€杞� Alice 鍙互娌夸竴鏉¤竟鎶婃瀛愮Щ鍒颁竴涓浉閭荤殑鑺傜偣涓婏紝涔嬪悗 Bob 娌夸竴鏉¤竟绉诲姩妫嬪瓙锛屼互姝ょ被鎺ㄣ€傝鍒欒瀹氭瘡涓€娆$Щ鍔ㄧ粡杩囩殑杈圭殑 ASCII 鐮佸崟璋冧笉闄嶃€備笉鑳借蛋鐨勪汉杈撱€傚浜庢墍鏈夌殑鍒濆浣嶇疆锛屼袱浜洪兘鎸夋渶浼樼瓥鐣ワ紝闂皝浼氳耽銆�\(n\leq 100\)

Solution

璁� \(f[i][j][k]\) 琛ㄧず鍏堟墜浣嶄簬 \(i\)锛屽悗鎵嬩綅浜� \(j\)锛岃竟鏉冧负 \(k\) 瀵瑰簲鐨勮儨璐熸儏鍐�
瀵逛簬 \(i\) 鎵€鏈夊嚭鐐� \(q\)锛岀姸鎬佽浆绉讳负 \(f[j][q][w]\)
濡傛灉鑷冲皯瀛樺湪涓€涓� \(q\) 浣垮緱 \(f[j][q][w]\) 涓� \(0\)锛岄偅涔� \(f[i][j][k]\) 涓� \(1\)锛屽惁鍒欎负 \(0\)

Description

缁欏畾鏁存暟 \(x\)锛屾眰鏈夊灏戜釜姝f暣鏁� \(n\) 婊¤冻 \(1 \le n \le x\) 涓� \(na^n \equiv b \bmod p\)锛�\(p \le 10^6 + 3\) 涓旀槸涓€涓川鏁帮紝\(x \le 10^{12}\)銆�

Solution

\(n\) 鍥犲瓙鐨勫惊鐜懆鏈熶负 \(p\)锛�\(a^n\) 鍥犲瓙鐨勫惊鐜懆鏈熶负 \(p-1\)
锛堢敱浜庢ā璐ㄦ暟涔樻硶鏋勬垚寰幆缇ゆ弧瓒虫秷鍘诲緥锛屽叾杩愮畻琛ㄧ殑浠绘剰琛屽垪涓哄厓绱犲叏鎺掑垪锛�

\[n \equiv ba^{-n} (\bmod p) \]

鏋氫妇 \(n\)锛岃 \(\delta = n-ba^{-n} \bmod p\)锛屽垯 \(n'=n+(p-1)\delta\) 鎵嶆槸绗竴涓纭殑 \(n\)
浜庢槸杩欎竴姝ヨ础鐚� \([\frac {x-n'} {p(p-1)}]\)
鏈塶涓汉鍦ㄩ槦鍒椾腑绛夊緟銆傚亣濡傛煇涓汉鍓嶉潰鏈変竴涓汉骞撮緞姣斾粬灏忥紝閭d粬灏变細涓嶉珮鍏达紱瀹氫箟浠栫殑鈥滀笉楂樺叴搴︹€濅负浠栧墠闈㈢暀浠栨渶杩滅殑骞撮緞姣斾粬灏忕殑浜轰笌浠栫殑璺濈锛屾眰姣忎釜浜虹殑涓嶉珮鍏村害銆� n<=10^5

Solution

鏉冨€肩嚎娈垫爲

[CF936B] Sleepy Game - DFS,BFS

Description

鏈夊悜鍥句笂鎸囧畾涓€涓捣鐐广€傝嫢瀛樺湪涓€鏉″埌鍙跺瓙璺濈涓哄鏁扮殑璺緞锛堟敞鎰忚繖閲岀殑璺緞涓嶄竴瀹氭槸鏈€鐭矾寰勶級锛屽垯蹇呰儨銆傝嫢涓嶅瓨鍦紝浣嗘槸鍙互鍒拌揪涓€涓洖璺紝鍒欏彲浠ュ钩灞€銆備笂杩颁袱绉嶉兘涓嶈兘杈惧埌锛屽垯澶辫触銆�

Solution

杩欓噷瀹為檯涓婃槸涓や釜闂

  • 鏄惁瀛樺湪涓€鏉″埌鍙跺瓙璺濈涓哄鏁扮殑璺緞
  • 鏄惁鑳借蛋鍒颁竴涓幆

瀵逛簬闂 1锛屾垜浠敤鍥� dp 鐨勬柟娉曞仛锛屽嵆寤虹珛鍒嗗眰鍥剧劧鍚� BFS锛屽叿浣撳湴锛屽浘鍒嗕负濂囧眰鍜屽伓灞傦紝璧风偣鍦ㄥ伓灞備笂锛岃繛杈规案杩滃湪鐩搁偦灞備腑杩�
瀵逛簬闂 2锛孌FS 涓€閬嶏紝濮嬬粓鏍囪鏍堜腑缁撶偣锛屽鏋滆兘璧板洖鏍堜腑缁撶偣锛岄偅涔堝氨鏈夌幆

Description

缁欏畾涓や釜姝f暣鏁� \(n,m(m鈮)\)锛屽浜庝竴涓� \(n\) 闃� \(0-1\) 鏂归樀锛� 鍏朵换鎰� \(m\) 闃跺瓙鏂归樀涓嚦灏戞湁涓€涓厓绱� \(鈥�0鈥�\)锛屽垯鍙互姹傝В杩欎釜鏂归樀涓殑 \(鈥�1鈥�\) 鐨勬渶澶ф暟鐩€傜幇姹傝В杩欎釜闂鐨勯€嗗悜闂锛氬凡鐭ヨ繖涓渶澶ф暟鐩负 \(X\)锛屾眰鐩稿簲鐨� \(n\) 鍜� \(m\)銆�

Solution

璁炬硶璁╂瘡涓� \(0\) 琚厖鍒嗗湴鍒╃敤
浜庢槸 \(n,m,x\) 婊¤冻鍏崇郴

\[n^2-\lfloor\frac n m \rfloor^2=x \]

浠� \(t=\lfloor n/m \rfloor\)锛屽垯

\[(n+t)(n-t)=x \]

鏋氫妇 \(x\) 鐨勬墍鏈夊垎瑙� \(x=ab\)锛岄偅涔� \(x\) 鍙互鍒嗚В涓哄钩鏂瑰樊褰撲笖浠呭綋 \(a,b\) 鐨勫鍋舵€х浉鍚岋紝姝ゆ椂

\[n=\frac{a+b} 2, \ t=\frac{a-b} 2 \]

濡傛灉鎴戜滑鎵惧埌浜嗚繖涓垎瑙� \(n,t\)锛屽垯鍙渶瑕佸瓨鍦ㄤ竴涓� \(m\) 浣垮緱 \(t=\lfloor n/m \rfloor\) 鍗冲彲锛屾垜浠彧闇€瑕佸亣璁� \(m=n/t\) 鍒ゆ柇涓€涓嬫槸鍚﹀彲琛屽嵆鍙�
鍦� \(n\) 涓煄甯傚紑婕斿敱浼氾紝杩� \(n\) 涓煄甯傜殑浜洪兘鎯冲幓鍚紨鍞变細锛屾瘡涓煄甯傜殑绁ㄤ环涓嶅悓锛屼簬鏄繖浜涗汉灏辨兂鏄惁鑳藉幓鍏朵粬鍩庡競鍚紨鍞变細鏇翠究瀹滐紙鍘诲洖閮借璺垂锛�

Solution

璁炬紨鍞变細涓� \(0\) 鍙风偣
杩炶竟 \(0 \to i\)锛屽浜庝竴瀵瑰彲杈剧殑鍩庡競锛岃繛杈� \(u \leftrightarrow v\)
璺戞渶鐭矾鍗冲彲
\(n\) 涓偣鐨勫畬鍏ㄥ浘鏍囧彿 \((0-n-1)\)锛�\(i\) 鍜� \(j\) 杩炶竟鏉冨€间负 \(i\ \textrm{XOR}\ j\)锛屾眰 MST 鐨勫€�

Solution

璁� \(f[n]\) 琛ㄧず鐐规暟涓� \(n+1\) 鏃剁殑绛旀锛岄偅涔堣椽蹇冨湴鑰冭檻锛屾樉鐒� \(f[0]=0, f[n]=f[n-1]+lowbit(n)\)
鏍规嵁瑙傚療鏄撳緱 \(f[n]=2f[n-1]+2^n-2^{n-1}\)锛屽悓鏃剁敱浜� \(f[]\) 灏辨槸涓� \(lowbit\) 鐨勫墠缂€鍜岋紝婊¤冻鍙姞鎬э紝鎵€浠ョ洿鎺ュ \(n\) 浜岃繘鍒跺垎瑙e苟缁熻绛旀鍗冲彲

Description

鎵惧埌涓€涓暟鍒楋紙闀垮害涓嶈秴杩� \(10^4\)锛夛紝浣垮緱鏈変笖浠呮湁 \(x\) 涓潪绌哄瓙鏁板垪涓厓绱犳瀬宸皬浜� \(d\)锛屾垨鑰呭垽瀹氫笉瀛樺湪銆�

Solution

鑰冭檻濡備綍璁╁悗鍔犵殑瀛愬簭鍒椾腑鐨勬暟涓嶄細褰卞搷鍒板墠闈㈢殑锛屽彧闇€瑕佸姞涓€涓� \(d\)锛屽氨鍙互褰㈡垚鏂扮殑涓€缁�
浜庢槸鎴戜滑闇€瑕佸皢鑷鍒楁媶鎴愯嫢骞蹭釜浜掍笉鐩稿共鐨勭粍锛屾瘡缁勫唴鍙栦竴涓浉鍚岀殑鍊�
瀵逛簬涓€涓惈鏈� \(n\) 涓厓绱犵殑缁勶紝瀹冪殑璐$尞鏄� \(2^n-1\)
鍋囧杩欎釜璐$尞鏄� \(2^n\) 灏卞彲浠ョ洿鎺ヤ簩杩涘埗鍒嗚В鍋氫簡
閭d箞鎴戜滑寮鸿琛ヤ竴涓ぇ灏忎负 \(1\) 鐨勭粍锛岃繖鏍峰氨鍙互褰撳仛瀹冩槸 \(2^n\) 浜�

Description

缁欏畾涓€妫垫棤闄愬眰鐨勬弧浜屽弶鏍戯紝濡傛灉 \(x\) 鏄牴锛岄偅涔堝乏瀛╁瓙鏄� \(2x\)锛屽彸瀛╁瓙鏄� \(2x+1\)銆傜幇鍦ㄦ湁涓夌鎿嶄綔锛氬皢 \(x\) 鎵€鍦ㄥ眰鐨勬墍鏈夎妭鐐规暣浣撳悜鍙冲惊鐜Щ鍔� \(k\) 涓崟浣嶏紱灏� \(x\) 鎵€鍦ㄥ眰鐨勬墍鏈夎妭鐐瑰強鍏跺瓙鏍戞暣浣撳悜鍙冲惊鐜Щ鍔� \(k\) 涓崟浣嶏紱杈撳嚭 \(x\) 鍒版牴鐨勮矾寰勩€�

Solution

瀹為檯涓婏紝鐢变簬璁块棶鍒扮殑灞傛暟涓嶄細瓒呰繃 \(63\)锛屾垜浠彧闇€瑕佹毚鍔涜褰曟瘡涓€灞傝寰幆绉诲姩鐨勬鏁板嵆鍙€傚浜庣涓€绉嶆搷浣滀慨鏀瑰綋灞傚嵆鍙紱瀵逛簬绗簩绉嶆搷浣滀慨鏀瑰叾鍚庣殑鎵€鏈夊眰鍗冲彲銆�
瀵逛簬璇㈤棶锛屾垜浠彧闇€瑕佸弽瑙e嚭瀹為檯浣嶇疆锛屽氨寰楀埌浜嗚矾寰勪笂鎵€鏈夌偣鐨勪綅缃紝鍐嶆妸浣嶇疆鎹㈢畻鍥炰笅鏍囧嵆鍙€傛湰璐ㄤ笂锛屾垜浠彧闇€瑕佹彁渚涗綅缃拰涓嬫爣涔嬮棿鐨勬崲绠楀嵆鍙€�
缁欎綘涓€寮� \(n\) 涓偣 \(m\) 鏉¤竟鐨勫甫鏉冩湁鍚戝浘锛屽彲鑳芥湁閲嶈竟鍜岃嚜鐜€傝竟浼氭寜鐓ч『搴忕粰鍑恒€傝浣犳眰鍑轰竴鏉$粡杩囪竟鏁版渶澶氱殑璺緞锛屼娇寰楄矾寰勪笂鐨勮竟婊¤冻杈规潈鍜屽嚭鐜扮殑鏃堕棿涓ユ牸閫掑銆傝矾寰勫彲浠ラ噸澶嶇粡杩囧悓涓€涓偣銆�

Solution

鎸夐『搴忓鐞嗘墍鏈夎竟锛屽浜庢瘡涓偣缁存姢浠ヨ繖涓偣缁撳熬锛岀粨灏捐竟鏉冧负 \(?\) 鏃剁殑鏈€澶ч暱搴�
瀵逛簬 \((u,v,w)\)锛屾壘鍑� \(u\) 鐨勭粨灏捐竟鏉冧负 \([0,w-1]\) 鏃剁殑鏈€澶ч暱搴︼紝鎷垮幓鏇存柊 \(v\) 鐨勭粨灏捐竟鏉冧负 \(w\) 鏃剁殑鏈€澶ч暱搴﹀嵆鍙�
鏄剧劧鎴戜滑鍙互鐢ㄥ姩鎬佸紑鐐规潈鍊肩嚎娈垫爲缁存姢杩欎竴鍒�
鑰冭檻鍒版垜浠瘡娆¤闂殑閮芥槸 \([0,?]\) 鐨勬渶澶у€硷紝姣忔淇敼涔熷彧浼氳绛旀鏇村ぇ锛屾墍浠� \([0,?]\) 鐨勭瓟妗堟槸鍏充簬 \(?\) 鍗曡皟鐨�
鍥犳鎴戜滑鍙互灏嗘潈鍊肩嚎娈垫爲鎹㈡垚涓€涓� std::map锛岃〃绀虹粨灏捐竟鏉�-鏈€澶ч暱搴︾殑浜屽厓鍏崇郴锛屽苟涓旀垜浠彧淇濈暀閭d簺鍗曡皟鐨勫叧绯�

Description

缁欎竴涓ぇ灏忎负 \(n\) 鐨勬暟缁勶紝灏嗘暟鍊煎垎缁勶紝姣忎釜缁勭浉褰撲簬鍊煎煙鐨勪竴涓瓙鍖洪棿锛屼竴涓粍鍐呯殑鏁板瓧鏋佸樊涓嶈秴杩� \(k\)銆傚帇缂╁悗锛屼竴涓粍鐨勬暟瀛楅兘浼氬彉鎴愯繖涓粍涓殑鏈€灏忓€笺€傛眰瀛楀吀搴忔渶灏忕殑鎯呭喌銆�
渚嬪

4 3
2 14 3 4

鐨勭粨鏋滀负 0 12 3 3

Solution

鑰冭檻璐績锛岄『搴忔灇涓炬瘡涓€涓� \(i\)锛屽浜� \(a_i\)锛屽湪鍊煎煙涓紝浠� \(a[i]\) 鍊掑簭鎵惧垎缁�
濡傛灉鎵惧埌浜嗗垎缁勶紝鑰冭檻杩欎釜鍒嗙粍鑳藉惁瀹瑰緱涓� \(a[i]\)锛屽鏋滃寰椾笅鍒欏皢 \(a[i]\) 鍒嗚繘鍘伙紝鍚﹀垯鍙﹀紑涓€缁�
濡傛灉娌℃壘鍒板垎缁勶紝鍒欏彟寮€涓€缁�### Description
缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒楋紝鏈� \(q\) 鏉℃搷浣滐紝姣忔潯鎿嶄綔涓哄皢鍖洪棿 \([l,r]\) 鍔犱笂 \(x\)銆傚簭鍒楀垵濮嬮兘涓� \(0\)銆傞棶鏈夊灏戜釜 $ k \in [1,n]$ 婊¤冻鑳戒粠 \(q\) 鏉℃搷浣滀腑閫夊嚭鑻ュ共鏉℃搷浣滃悗浣垮緱搴忓垪鐨勬渶澶у€间负 \(k\)銆�

Solution

濡傛灉鑳芥湁鏂规浣垮緱鏌愪釜浣嶇疆鐨勫€煎彉鎴� \(k\)锛屽氨涓€瀹氬瓨鍦ㄦ柟妗堜娇寰楁渶澶у€煎彉涓� \(k\)銆�
鑰冭檻涓€涓毚鍔涳紝瀵逛簬姣忎釜浣嶇疆鍒嗗埆鑰冭檻鏄惁鑳戒娇瀹冨彉涓� \(k\)锛岃 \(f[i][j]\) 琛ㄧず鍓� \(i\) 鏉℃搷浣滀腑閫夊彇鑻ュ共鎿嶄綔鏄惁鑳戒娇寰楄浣嶇疆鐨勫拰鍙樹负 \(j\)锛岀敤 Bitset 浼樺寲锛屾€绘椂闂村鏉傚害 \(O(\frac 1 w n^2 q)\)
鑰冭檻绾挎鏍戝垎娌伙紝灏� \(q\) 鏉℃搷浣滀腑鐨勬瘡涓尯闂存媶鍒嗘寕鍦ㄧ嚎娈垫爲鐨勮嫢骞茬粨鐐逛笂锛岀劧鍚庡皢绾挎鏍� DFS 涓€閬嶏紝杩囩▼涓埄鐢ㄧ粨鐐逛笂鎸傜殑鍖洪棿鏉ヤ慨鏀癸紝鍘嗗彶璁板綍鐢ㄦ爤瀛樺偍锛岃繖鏍峰洖婧椂鍙互鎾ら攢锛屽埌杈惧彾瀛愮粨鐐规椂鍗冲彲寰楀埌褰撶粨鐐圭殑绛旀銆傛瘡娆′慨鏀圭殑澶嶆潅搴︿负 \(O(\frac 1 w n)\)锛屾渶澶氭湁 \(O(q \log n)\) 涓媶鍒嗗悗鐨勫尯闂达紝鏁呮€绘椂闂村鏉傚害涓� \(O(\frac 1 w nq \log n)\)銆�

[CF988E] Divisibility by 25 - 璐績

Description

缁欏嚭涓€涓粠 1 鍒� 10^18 鐨勬暣鏁� n锛屼笉鍖呭惈鍓嶅闆躲€傚湪涓€娆$Щ鍔ㄤ腑锛屽彲浠ヤ氦鎹换鎰忎袱涓浉閭绘暟瀛楋紝浣垮緱缁撴灉鏁板瓧涓嶅寘鍚墠瀵奸浂銆傝幏鍙栧彲琚� 25 鏁撮櫎鐨勬暟瀛楁墍闇€鐨勬渶灏忕Щ鍔ㄦ鏁版槸澶氬皯锛�

Solution

灏遍偅涔堝嚑绉嶆儏鍐�

  • 鎶� 5 鍐掓场鍒版渶鍚庯紝鎶� 2 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 5 鍐掓场鍒版渶鍚庯紝鎶� 7 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 0 鍐掓场鍒版渶鍚庯紝鎶� 5 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 0 鍐掓场鍒版渶鍚庯紝鎶婂彟涓€涓� 0 鍐掓场鍒板€掓暟绗簩浣�

鎴戜滑鍙互鍏堝皾璇曟€у湴鍋氫竴涓嬶紝濡傛灉鎹㈠畬浠ュ悗鏈夊墠瀵奸浂锛岄偅涔堝啀寮鸿鎵句竴涓渶宸﹁竟鐨勯潪闆舵暟瀛楁崲鍒板墠闈㈡潵锛屽鏋滄崲瀹屼互鍚庣偢浜嗛偅涔堣繖绉嶆儏鍐靛氨鏃犳晥
鍙互璇佹槑鍏堟妸闈為浂鏁板瓧鎹㈠埌鍓嶉潰锛屽拰鍏堟妸鏈夋晥鏁板瓧鎹㈠埌鍚庨潰锛屽緱鍒扮殑绛旀鏄竴鏍风殑
鎵惧埌鏈€闈犲彸鐨勪袱涓垜浠鎵剧殑鏁板瓧锛屼笅鏍囦负 i,j锛屽亣璁炬垜浠殑鐩爣鏄妸 j 鎹㈠埌鏈€鍚庯紝i 鎹㈠埌鍊掓暟绗簩涓綅缃�
濡傛灉鍙湁 i,j 涓や釜鏁板瓧锛岀殕澶ф鍠滐紙杩欐椂 i,j 涓嶅彲鑳介兘鏄� 0锛�
濡傛灉闄や簡 i,j 澶栫殑绗竴涓暟瀛楁槸 0锛屾垜浠鎵惧埌绗竴涓潪闆剁殑鏁板瓧锛屽鏋滄壘鍒颁簡璁板綍瀹冪殑涓嬫爣 k锛屽鏋滄病鎵惧埌鐩存帴缁撴潫
鐜板湪鎴戜滑鏄妸 j 鎹㈠埌鏈€鍚庯紝i 鎹㈠埌鍊掓暟绗簩涓綅缃紝濡傛灉鏈夌殑璇濓紝鎶� k 鎹㈠埌绗竴涓綅缃�
杩欎釜杩囩▼涓紝浼氬嚭鐜扮殑鍩虹璐$尞涓� n-j+n-1-i+k-1
鑰冭檻鐩镐簰浣滅敤瀵艰嚧鐨勯檮鍔犺础鐚紝濡傛灉 \(k>i\) 鍒欓檮鍔犺础鐚紝濡傛灉 \(k>j\) 鍒欓檮鍔犺础鐚紝濡傛灉 \(i>j\) 鍒欓檮鍔犺础鐚�
鏈� n 涓獞澹兂鍐虫垬銆傛瘡涓獞澹兘鏈夎兘鍔涘€硷紙浜掍笉鐩稿悓锛夛紝涓旇韩涓婂甫鏈変竴浜涢噾甯併€傚鏋滈獞澹� A 鐨勮兘鍔涘€煎ぇ浜庨獞澹� B 锛岄偅涔堥獞澹� A 灏卞彲浠ユ潃姝婚獞澹� B 锛屽苟鑾峰緱楠戝+ B 韬笂鐨勬墍鏈夐噾甯併€備絾灏辩畻鏄獞澹篃涓嶄細娈嬪繊杩囧害锛屼粬浠渶澶氬彧浼氭潃姝� k 涓獞澹€傚浜庢瘡涓€浣嶉獞澹紝璇蜂綘姹傚嚭鍦ㄦ潃鎺夋墍鏈変粬鑳芥潃鐨勪汉锛堝彧鏈変粬鑳芥潃浜哄埆浜轰笉鍔級鍚庝粬韬笂閲戝竵鐨勬渶澶у€笺€�

Solution

娉ㄦ剰鍒扳€滀簰涓嶇浉鍚屸€濊繖涓急鍖栨潯浠讹紝鑰冭檻瀵硅兘鍔涘€间粠灏忓埌澶ф帓搴忥紝閭d箞姣忎釜楠戝+鑳戒笖鍙兘鏉€浠栧墠闈㈢殑浜恒€傛墍浠ュ姩鎬佺淮鎶ゅ墠 \(k\) 澶у拰灏卞ソ浜�
锛堥鎰忔湁鐐圭浠欙級
鏈� \(n\) 搴у煄甯傚拰 \(m\) 鏉″崟鍚戦亾璺紝涓轰簡鑳借棣栭兘鑳藉鍒拌揪鎵€鏈夌殑鍩庡競锛屾渶灏戦渶瑕佹柊淇缓澶氬皯鏂扮殑鍗曞悜閬撹矾锛�

Solution

绛旀涓虹缉鐐瑰悗鐨勫垎閲忓浘涓櫎 \(S\) 鎵€鍦ㄥ垎閲忓鍏ュ害涓� \(0\) 鐨勫垎閲忔暟

-- coding:utf-8-

import os
import os.path
import time
time1=time.time()

def MergeTxt(filepath,outfile):
k = open(filepath+outfile, 'a+')
for parent, dirnames, filenames in os.walk(filepath):
for filepath in filenames:
txtPath = os.path.join(parent, filepath)
f = open(txtPath,encoding="utf-8")
k.write(f.read()+"\n")

k.close()

if name == 'main':
filepath="./"
outfile="result.md"
MergeTxt(filepath,outfile)
time2 = time.time()

Description

给定一个 \(n\) 个点 \(m\) 条边的无向图,找到两个点 \(s,t\),使得 \(s\)\(t\) 必须经过的边最多。

Solution

边双内的边显然都不是关键边,否则必是,于是缩点后求直径即可

[CF1006F] Xor-Paths

Description

给出一个 n × m 的网格,每个格子上有权值 \(a[i][j]\),要从 (1,1) 走到 (n,m),每次只能向右或向下走,沿路计算异或和,求异或和等于 k 的路径数。

Solution

双向 BFS,由于要走的总步数为 \(steps=n+m-2\),正着走 \(steps/2\),反着走 \((steps+1)/2\),然后合起来用 map 算答案即可

Description

我们将一个无向图称作互质图,当且仅当对于其中每一条边 \((v, u)\)\(v\)\(u\) 互质(也即 \(GCD(v,u)=1\))。当两个顶点之间没有边时不需要考虑。顶点从 \(1\) 开始标号。
现在给你 \(n\) 个顶点和 \(m\) 条边,要求你建立一个无重边和自环并且连通的互质图,或者判定无法构造。

Solution

设将每条边描述为 \((u,v)\),满足 \(u<v\),那么我们从小到大枚举 \(u\),再从小到大枚举 \(v\),能连就连
复杂度与 \(\varphi\) 函数的前缀和有关,不妨将其视作 \(O(n \log n)\)

给你一个 \(n \times m\) 的矩形,一开始有 \(q\) 个格子上被标记。对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记。问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记。

Solution

行和列分别对应二分图的左部右部,格子对应边,那么我们只需要手动使得二分图连通,通过自动标记的操作就可以得到完全二分图
于是答案为连通块数量 \(-1\)

Description

已知一个 \(n×m\) 的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出"NO",否则输出"YES"和矩阵。

$ n,m \leq 100 $

Solution

将前 \((n-1)(m-1)\) 设为 \(0\),只通过最后一个 \(L\) 型来构造

Description

给你一个长度为 \(n\) 的数列,初始全部为 \(0\) ,你可以任意(任选区间)进行 \(q\) 次操作,第 \(i\) 次操作使 \([l_i,r_i]\) 内的数全部变为 \(i\) ,你必须进行全部 \(q\) 次操作,且每个操作区间都不能为空,所有操作区间的并必须为 \([1,n]\)。现在给你一个数列,其中 \(0\) 代表这个位置可以是任何数,问你能否通过上述的 \(q\) 次操作得到这个数列。输出方案。

Solution

以下 \(m\) 即为题面中的 \(q\)

无解的判定

如果两个数之间存在比它们小的数,则无解
如果序列中不存在值为 \(m\) 的数,则无解

解的构造

考虑为 \(0\) 的位置需要怎样处理

如果数列中没有 \(m\),则优先填 \(m\)

如果某个位置的左侧右侧同时存在 \(x\),则该位置 \(\ge x\),换言之我们在这个位置需要取它左边右边都有的数中的最大值

否则填 \(1\)

如何维护

考虑维护一个 std::set,在某个数第一次出现时 insert(x),最后一次出现时 erase(x)
那么我们每次取 *s.rbegin() 即可

[CF1025D] Recovering BST - 区间dp

Description

给定一棵二叉搜索\(n \le 700\) 的所有点权,构造二叉树满足任意两个直接相邻的点的权值的 GCD 不是 1

Solution

这种关于二叉搜索树中序遍历的 DP 问题,设状态时忽略根而考虑区间,因为这个区间作为一个子树,它的父亲一定是区间左端点的左边的点或者区间右端点的右边的点
\(f[i][j]\) 表示以 \([i,j-1]\) 作为 j 的左孩子是否合法
\(g[i][j]\) 表示以 \([i+1,j]\) 作为 i 的右孩子是否合法
转移时,考虑一个区间 \([l,r]\),枚举它的根 \(k\),需要满足 \(f[i][k]\) 并且 \(g[k][j]\)
如果此时 \(k\)\(l-1\) 相连是合法的,那么就可以转移到 \([l-1,r]\)
如果此时 \(k\)\(r+1\) 相连是合法的,那么就可以转移到 \([l,r+1]\)
总之,设状态时设的是“半棵子树”的合法性,转移时首先考虑一个区间可能有哪些根,然后分别考虑这些点为根时,向外的转移情况

Description

给定两个集合 \(A,B\),要求在任意时刻 \(A\) 中元素小于 \(B\) 中元素。每次操作可以添加一个元素 \(x\) 到任意一个集合(由程序来选择)或者删除一个元素 \(x\),保证添加的元素互不相同,删除的元素一定存在,并要求删除的元素必须是 \(A\) 的最大值或者 \(B\) 的最小值。求方案数。

Solution

每次删除操作会对前面所有的添加操作产生某种限制。
假设本次删除 \(x\),那么前面所有小于 \(x\) 的元素都必须被加入 \(A\),大于 \(x\) 的元素都必须被加入 \(B\),等于 \(x\) 的元素,如果 \(x\) 小于 \(A\) 的最大值则必须被加入 \(A\),大于 \(B\) 的最小值则必须被加入 \(B\),否则可以任意选择,总方案数 \(\times 2\)
但最后一次删除后还可能有若干添加操作,对于这些添加操作,我们在删除其中小于 \(A\) 的最大值、大于 \(B\) 的最小值者后,剩余的元素可以任取分割界,左侧加入 \(A\) 右侧加入 \(B\)。假设元素一共有 \(c\) 个,则答案 \(\times (c+1)\)

Description

给出一个在二维平面直角坐标系第一象限内的,单位长度为 \(1\) 的无限大网格,每条直线都代表道路。又给你一条直线 \(ax+by+c=0\),也代表一条道路。

现在给你两个格点 \(A,B\) 坐标 \((x1,y1)\)\((x2,y2)\),让你求该两点间最短的道路距离。

Solution

求矩形交点后再求距离
(又把 fabs 写成 abs
(以及关错了流同步被迫害

Description

给你 \(n\) 个数,去掉尽量少的数使得剩下数的最大公约数比原来的大。无解输出 \(-1\)

Solution

首先将所有数除以最大公约数
\(M=\max a_i\),维护一个桶 \(b[]\),对每个 \(i\),在 \(b[a[i]]\)\(+1\)
枚举 \([1,M]\) 中的所有质数 \(p\),考虑让最大公约数乘以 \(p\),代价就是我们需要删去所有的 \(a_i\) 满足 \(p|a_i\),于是我们枚举所有 \(p\) 的整数倍 \(q\),统计所有 \(b[q]\) 的和,就是 \(p\) 的答案
最后对所有 \(p\) 的答案取最小值即可
复杂度是 \(\sum_{p \leq M} M/i\),由于收敛较快,可以接受

判断能否整除即可

CF 题解汇总 如果自己是回文串可以做中心 如果一个串和另一个串的转置相等则可以凑一对 优先配对

Description

定义一个数字是好数,当且仅当它的十进制表示下有不超过 $ 3 $ 个数字 $ 1 \sim 9 $。给定 $ [l,r] $,问有多少个 $ x $ 使得 $ l \le x \le r $,且 $ x $ 是好数。$ 1 \le l_i \le r_i \le 10^{18} $

Solution

常规的数位 dp,设 \(f[i][j]\) 表示前 \(i\) 个数位,有 \(j\) 个非零数位时,有多少个数满足条件

Description

给你一个长度为 \(n\) 的整数序列,你可以对其做两种操作:

  • \(i!=j\),将 \(a_j\) 替换为 \(a_i\cdot a_j\),删除 \(a_i\)
  • 选一个未被删除的 \(a_i\),将其删除。该操作在任意时刻均可执行,最多执行一次

你需要操作 \(n-1\) 次,剩下一个数,使其最大。由于剩下的数可能会很大,你需要输出任意一种得到它的操作序列。

Solution

分类讨论

  • 如果负数的个数是偶数

  • 如果没有 \(0\),取绝对值处理即可

  • 如果有 \(0\),将所有 \(0\) 乘在一起,消去,剩下的取绝对值处理即可

  • 如果负数的个数是奇数

  • 如果没有 \(0\),消去一个绝对值最小的负数,剩下的取绝对值处理即可

  • 如果有 \(0\),先将所有 \(0\) 乘在一起,再将绝对值最小的负数乘到 \(0\) 上,消去这个 \(0\),剩下的取绝对值处理即可

Description

\(N\) 个点,求与 \(y=0\) 相切的,包含这 \(N\) 个点的最小圆的半径。

Solution

考虑二分半径,现在要检验 \(r\) 是否可行,显然对于每个 \((x_i,y_i)\) 我们可以计算出 \(d=\sqrt {r^2 - (y_i-r)^2}\),则区间 \([x_i-d, x_i+d]\) 是可行的,我们只需要验证所有区间是否有交即可。

Description

现在有 $ N $ 个人,每一个人都不想周围的人坐得离他很近,所以在他的左边要放 $ L_i $ 张椅子,右边要放 $ R_i $ 张椅子,现在他们要坐成若干个圈,请问最少要放多少张椅子。

Solution

左右手数目分别排序后,答案即为 \(n+\sum \max(l_i,r_i)\)

给定一个 \(n \times m\) 地图,每个格子为空地或墙,你从一个位置开始,四连通移动,向上向下次数不限,向左最多 \(x\) 次,向右最多 \(y\) 次,问能到达多少个格子

Solution

如果只有一个方向有代价,那么简单 BFS 即可
然而这里两个方向都有代价,但是点 \((r,c) \to (i,j)\) 的横坐标差是确定的,换言之,如果设向左走了 \(a\) 步,那么向右走的步数就是 \(i-r+a\)
于是我们只对向左的边设代价即可,最终在考虑 \((r,c) \to (i,j)\) 的过程时,同时要求 $a \leq x $ 和 $ j-c+a \leq y$ 即可

CF1070A Find a Number

Description

给定两个数 \(d \le 500\)\(s \le 5000\),求最小的 \(n\) 使得 \(d|n\) 并且 \(n\) 的各位数字之和为 \(s\)

Solution

\(f[i][j]\) 表示生成一个和为 \(i\)\(\bmod d=j\) 的数字的最小 \(n\) 的末位数字
用 BFS 实现即可

Description

在平面直角坐标系中,一个机器人处于 $ (0,0) $ 点。它能进行以下的移动操作。$ U~~ $ 从 $ (x,y) $ 移动到 $ (x,y+1) \(;\) D~~ $ 从 $ (x,y) $ 移动到 $ (x,y-1) \(;\) L~~ $ 从 $ (x,y) $ 移动到 $ (x-1,y) \(;\) R~~ $ 从 $ (x,y) $ 移动到 $ (x+1,y) $。现在有一个长度为 $ n $ 的操作序列。Vasya想修改这个序列使机器人最终移动到 $ (x,y) $。其修改的花费为 $ maxID-minID+1 \(。\) maxID $ 是修改的操作的下标的最大值,$ minID $ 是修改的操作的下标的最小值。如果没有修改,则花费为 $ 0 $。

Solution

考虑到对于一个区间,如果它可行,那么一个包含它的区间一定可行
故尺取法即可

给定无向带权连通图,保留至多 \(k\) 条边,最大化到 \(1\) 号节点最短路长度不变的点的数量。

Solution

一个显然的做法是,构建原图的一棵最短路径树,任意选择一个大小为 \(k\) 的包含根的连通块就是答案
另一方面,我们回归到 Dijkstra 算法的原理,不难发现,我们只需要在算法加了 \(k\) 条边以后停止,当前选择的边集就是答案

Description

有 $ n $ 个问题,问题的主题分别是 $ a_1,a_2,\cdots,a_n $,需要组织一些专题比赛,同时要满足以下条件:一场专题比赛中的所有题目的主题相同;组织的所有专题比赛中主题互异;从第二场比赛开始,比赛中的题目数必须是前一场比赛题目数量的 $ 2 $ 倍,第一场比赛的题目数量可以是任意的。求所有比赛使用的题目数量之和的最大值。

Solution

把每个类型的问题压在一起,枚举每一个开始问题数目,检验答案时,维护一个当前位置 \(pos\),每次在 \(pos\) 后的段中二分,找到第一个可以容纳的题目类型,复杂度 \(O(n \log^2 n)\)

给定 \(n\) 个点 \(m\) 条边的无向图,图中 \(k\) 个特殊顶点,你选定一个边集,使得 \(k\) 个点通过这些边能够连通,求选定边集中最长边的最小值。

Solution

显然在求最小生成树的时候维护一下就行了,关键是如何判定当前 \(k\) 个点已经连通
维护一个 \(cnt\),如果本次合并涉及到的两个集合中都有特殊点,则 \(cnt+1\)

Description

点有正权,边有负权。在这样的无根树中找到一条权重最大的链并输出权重。

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

重要结论:如果一条路径正向反向不同时合法,则它一定存在一条子路径比它更优(想到了就很显然)
于是我们就可以当做无向链处理了
\(f[i]\) 表示到 \(i\) 结尾的一条直链的最大值
递推 \(f[]\) 时,选取最大儿子即可
更新答案时,选取最大儿子和次大儿子即可

[CF1092D1] Great Vova Wall - 栈,贪心

Description

给定一个序列 \(a=\{a_1,a_2,\dots,a_n\}\),有以下两种操作:若 \(a_i=a_{i+1}\),则可将 \(a_i\)\(a_{i+1}\) 同时加 \(1\);将 \(a_i\)\(2\)。求问是否可经过多此操作后使得所有 \(a_i\) 相等。

Solution

相当于按奇偶性做匹配,不难想到用栈维护,碰到奇偶性相同的就消去,如果最后栈内剩余元素数量不超过 1 则 YES

Description

\(n\) 个节点的树,每个节点有一点权 \(a_i\)。定义 \(\textrm{dist}(x,y)\)\(x\)\(y\) 的边数。选取一点 \(v\),使 $ \sum_{i=1}^{n}a_i \cdot \textrm{dist}(i ,v)$ 最大

Solution

典型换根 dp,设 \(1\) 号点为根,设 \(s[i]\) 表示点 \(i\) 子树中的权值和,\(f[i]\) 表示 \(v=i\) 时的答案,首先我们可以通过一次 DFS 算出 \(f[1]\),同时有转移方程

\[f[q]=f[p]-s[q]+s[1]-s[q]=f[p]+s[1]-2s[q] \]

Description

给定一个长度为 $ n $ 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列。即在任意一个位置前缀左括号的个数不少于前缀右括号的个数,同时整个序列左右括号个数相同 $ 1 \leq n \leq 10^6 $

Solution

将左括号记为 \(1\),右括号记为 \(-1\),这个数字序列记为 \(a[]\),它的前缀和记为 \(s[]\),同时记录每一个后缀 \(a[i..n]\) 的最小前缀 \(f[i]\)
计算 \(f[]\) 时,只需要倒序递推即可(类似最大子段和的处理)
如果一个位置 \(i\),满足所有 \(i\) 之前的前缀都合法,且 \(s[n]-2a[i]=0\),并且 \(s[i-1]-a[i]+f[i+1] \ge 0\),则这个位置是满足条件的

给定 \(n\) 个点,每个点有点权,连结两个点花费的代价为两点的点权和。另外有 \(m\) 条特殊边,参数为 \(x,y,z\)。意为如果你选择这条边,就可以花费 \(z\) 的代价将点 \(x\) 和点 \(y\) 连结起来,当然你也可以不选择这条边。求使整个图联通的最小代价

Solution

模拟 Kruskal 过程,同时维护每个集合的最小点权,每次比较当前最小特殊边的边权和最小点权的两个集合的和,走比较小的那一个
std::set 维护即可

Description

有一颗树,每个点有一个点权,边权都是 \(1\),问路径上的所有点的 gcd 不是 \(1\) 的最长路径是多少?

Solution

分治到每个点时,考虑当前分治范围内经过该点的路径。
对于每个子树,记录一个映射,表示每个数能到达的最深的深度,边搜索边更新即可。
维护当前分治主树的映射,枚举完一个子树后,用子树映射和主树映射中的值更新答案,并将子树映射并入主树映射中。

Description

给定一个回文字符串,\(n \le 5000\),如今想将这个字符串用 \(k\) 刀切成 \(k+1\) 个部分,然后对这 \(k+1\) 个子串重新排列(不能改变子串内部的字符顺序)使得得到的新串也为回文串且不与原串一样。求出这个最小的数 \(k\)。如果做不到,则输出 Impossible

Solution

无解的充要条件是原串对称轴一侧的所有字母均相同,如果有解则解不超过 \(2\)
\(O(n^2)\) 的时间检验答案是否可以为 \(1\)
如果答案为 \(2\),则一定是剪下两个长度为 \(len\) 的分别是前后缀的子串,相互交换,也可以花 \(O(n^2)\) 的时间检验
(结论也太神仙了……)

[CF1110D] Jongmah

Description

你手上有 \(n\) 个麻将,每个麻将上有一个在 \(1\)\(m\) 范围内的整数 \(a_i\)。为了赢得游戏,你需要将这些麻将排列成一些三元组,每个三元组中的元素是相同的或者连续的。请求出你最多可以形成多少个三元组。

Solution

连续三元组的数目在少于三个时才是必要的,大于等于三个时可以直接用相同三元组代替
因此设 \(f[i][j][k]\) 表示考虑完了 \([1,i]\) 的牌并且也可能使用过 \(i+1,i+2\) 的牌,\((i-1,i,i+1)\) 的组合有 \(j\) 个,\((i,i+1,i+2)\) 的组合有 \(k\) 个,此时的最大三元组数是多少
这一次做完以后,i 就彻底不能用了,因此我们要在这里判断 i 是否够用,如果不够用则这种状态直接非法,如果够用就转移
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

给定两个数列 \(c,t\),每次操作可以选择一个 \(i\),令 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\),问进行若干次操作后,是否能使得数列 \(c\)\(t\) 相等。

Solution

分析差分序列,将 \(c_{i-1},c_i,c_{i+1}\) 变为 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 后,差分序列从 \(c_i-c_{i-1},c_{i+1}-c_i\) 变为 \(c_{i+1}-c_i,c_{i}-c_{i-1}\),即差分序列的相邻两项交换了。
因此每次操作的实质就是交换差分序列的相邻两项。
于是,若原序列满足 \(c_1=t_1,c_n=t_n\),我们只需要比较差分序列的元素多重集是否相等即可。

Description

$ n $ 个方块排成一排,第 $ i $ 个颜色为 $ c_i $。定义一个颜色联通块 $ [l,r] $ 当且仅当 $ l $ 和 $ r $ 之间所有方块的颜色相同。现在你可以选定一个起始位置 $ p $,每次将 $ p $ 所在颜色联通块的所有方块颜色改成另一种。这个操作可能将多个颜色联通块合并成一个。问最少要多少步,能让 $ [1,n] $ 变成一个颜色联通块。

$ 1\le n,c_i\le 5000 $

Solution

先把序列 unique 一下,使得相邻两个位置颜色总不同,然后区间 DP
考察 \(c[i]\)\(c[j]\) 是否相等,如果相等则 \(f[i][j]\) 的转移来源为 \(f[i+1][j-1]\),否则转移来源在 \(f[i+1][j],f[i][j-1]\) 中选取

Description

坐标系上有一只小船,现在想从 $ (x_1,y_1) $ 去 $ (x_2,y_2) $。每时刻都有风,会把船往对应的风向吹一个单位(比如北风会把船往南吹),风是循环的,吹完 $ s_1 \sim s_n $ 就又会从 $ s_1 $ 开始。船在每一时刻都可以向指定方向移动一个单位。求船到目的地的最少时间,如果不能到达输出 -1。

Solution

容易证明关于总时间满足可二分性
判断时,加上 \([mid/n]\) 个周期偏移,加上 \(mid \bmod n\) 的单偏移后,检查曼哈顿距离是否不大于 \(mid\) 即可

[CF1117D] Magic Gems - 矩阵乘法优化dp

Description

一颗魔法宝石可以分解为 m 颗普通宝石,魔法宝石和普通宝石都占据 1 体积的空间。现在有一大堆带编号的魔法宝石,可以选出一部分宝石,然后指定一种一部分魔法宝石分解,求有多少种选出体积为 n 的集合的方案。\(n \le 10^{18}, m \le 100\)

Solution

\(f[i]\) 表示用了 \(i\) 个单位空间时的方案数,考虑最后一个选出的魔法宝石是否分解,于是有 \(f[i]=f[i-1]+f[i-m]\),由于 \(m\) 很小,矩阵快速幂即可

Description

给定 \(n\) 种木棍,第 \(i+1\) 种有 \(a_i\) 个,长度为 \(2^i\),求用这些木棍可以同时拼出多少个三角形(不可重复使用同一根)

Solution

容易发现三角形一定要满足 \(ABB(A\le B)\) 的结构,于是我们从大到小考虑所有依次打包成 \(BB\),如果有多余的就可以当做 \(A\) 与一个已有的 \(BB\) 匹配,答案 \(+1\);最后如果有没有匹配完的 \(BB\),则自己拆掉一些 \(BB\) 来匹配,设个数为 \(c\),则答案 \(+[2c/3]\)

Description

给定一个长度为 \(n (n \le 5000)\) 的字符串,要求将其划分为若干段。每一段要么长度为 \(1\),要么是本段之前部分的子串。前者代价为 \(a\),后者代价为 \(b\),求最小总代价。

Solution

\(f[i]\) 表示划分完 \(s[1..i]\) 的最小总代价,则有

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

考虑到 \(f[]\) 具有单调性,因此在第二种转移中,\(j\) 一定要尽可能大,设 \(LCS(i,j)\) 表示 \(s[1..i]\)\(s[1..j]\) 的最长公共后缀,则有

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

\(LCS(i,j)\) 可以很轻易地用 SA 求出,事实上,由于

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

可以在 \(O(n^2)\) 时间内预处理出 \(LCS(i,j)\),故总时间复杂度为 \(O(n^2)\)

有两个正整数序列 \(a,b\),长度分别为 \(n,m\)。给出所有 \(a_i\)\(b_j\) \((1\le i\le n,1\le j\le m)\) 的大小关系(大于,小于或者等于),请构造出符合条件的 \(a\)\(b\)。如果无解,输出 NO。如果有多个解,输出 \(a,b\) 中最大元素最小的方案。

Solution

并查集将所有等于的数合并起来,然后建图拓扑排序,最后 check 一下拓扑排序的结果以检查是否有环

给你一个串 \(s\),每次可以花费 \(1\) 的代价删去一个子串,要求子串的每一位为同一个字符。求删去整个串的最小代价。\(1\le |s|\le 500\)

Solution

\(f[i][j]\) 表示删除子串 \([i,j]\) 的最小花费,则

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

现有 \(n\) 个人,每个人都有各自的能力值,要你把他们分成 \(k\) 组(每组人数不限),使得每组中任意两个人的能力值之差不超过 \(5\),问你最多可以把多少人分到组中。

Solution

\(f[i][j]\) 表示将前 \(i\) 个人分成 \(j\) 段,且第 \(i\) 个人一定被使用时的最大总人数

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

其中 \(l=lower\_bound(a[i]-5)-1\)

Description

给定一个长度为 $ n $ 的 $ 1-n $ 的全排列,第 $ i $ 个数表示站在第 $ i $ 位的学生的编号

给定 $ m $ 对 $ (u,v) $,如果编号 $ u $ 的学生在编号 $ v $ 的学生前面一位,则可以将他们的位置互换,问最后一个学生能向前移动多少位

Solution

从右往左扫描所有位置,将每个位置上的人尽可能地向右换即可

Description

给定一个长度为 \(n\) 的数组,其中有些位置未定(可在 \([1,k]\) 中任意取值),问有多少种填数的方案可以使得数组中不存在长度为奇数的回文子串。

Solution

即不存在长度为 \(3\) 的回文串
即对任意 \(i\)\(a_i \neq a_{i+2}\)
考虑分奇偶位处理,方案数相乘
于是转化为相邻两位不相同的方案数
考虑对于每一段连续的 \(-1\) 分别处理
\(f[i][0]\) 表示长度为 \(i\)\(-1\) 段的左边和右边的元素相同的方案数,\(f[i][1]\) 为不同,则有

\[f[i][0]=(k-1) \cdot f[i-1][1] \\ f[i][1]=(k-2)\cdot f[i-1][1] +f[i-1][0] \]

Description

有一个序列 \(a_1,a_2,a_3...a_n (n\le 1500)\),定义 \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\),找到最大的 \(k\) 使得 \((l_1,r_1)=...=(l_k,r_k)\) 且区间 \([l_1,r_1]...[l_k,r_k]\) 互不相交

Solution

很暴力的贪心问题
处理出每一个子串的和,记录为 \((l,r,sum)\) 的形式,将它们按照 \(sum\) 为第一关键字,\(r\) 为第二关键字排序
然后对于每一个 \(sum\) 相同的段内,经典贪心即可

Description

\(n\) 个城市和 \(n-1\) 条道路。政府决定向这些公司出售道路。每条路都属于一家公司。如果有一家公司拥有两条或两条以上的进入这个城市的道路,那么这个城市是不好的。希望这样不公平的城市数量不超过 \(k\),那么最少需要多少公司?

Solution

答案显然为度数从大到小排序后的第 \(k+1\) 个,构造方案时贪心即可

Description

给定长度为 \(n\) 的母串和三个子串 \(s_1,s_2,s_3\)。初始时子串均为空。
\(q\) 次询问。你需要支持两种操作:向某个子串末尾添加一个字母,或者删去某个子串末尾的字母。
在每次操作后,你需要回答,是否能从母串中分离出三个不相交的子序列,满足这三个子序列恰好是 \(s_1,s_2,s_3\)
在任意时刻,\(s_1,s_2,s_3\) 的长度均不会超过 \(250\)
\(1 \le n \le 10^5\) , \(1\le q \le 10^3\)

Solution

\(f[i][j][k]\) 表示三个子串分别匹配到了第 \(i,j,k\) 个字符,在母串中推进的最短距离
\(g[i][c]\) 表示 \(S[i..n]\) 内字符 \(c\) 第一次出现的位置

\[f[i][j][k]=\left\{ \begin{aligned} & g[f[i-1][j][k]+1][s_1[i]] \\ & g[f[i][j-1][k]+1][s_2[j]] \\ & g[f[i][j][k-1]+1][s_3[k]] \end{aligned} \right. \]

初始条件 \(f[0][0][0]=0\),其余初值设为 \(+\infty\)
对于插入操作,暴力计算即可,每次 \(O(l^2)\)
对于删除操作,减小串长即可
对于询问,比较 \(f[l_1][l_2][l_3]\) 是否 \(\le n\) 即可

Description

给定两个正整数 $ a,b $,找到非负整数 $ k $ 使 $ a+k $ 与 $ b+k $ 的最小公倍数最小,如有多解输出最小的 $ k $

Solution

两数的差始终为 \(b-a\),而两数的 \(gcd\) 必然是 \(b-a\) 的因数
因此枚举 \(b-a\) 的因数作为 \(g\),然后求出能使得 \(g|(b+k)\) 的最小的 \(k\),很显然此时一定满足 \(g|(a+k)\)

有一个由所有长为 \(2n\) 的合法括号序列组成的 trie,现在要求这棵树上最多的边数,符合边两两之间均没有共同节点。

Solution

首先设根的深度为 \(0\),我们可以只选 trie 上所有深度为偶数的点和父亲的连边,于是答案就是 trie 上深度为奇数的点的个数
然后就是一个很套路的 dp,设 \(f[i][j]\) 表示有了 \(i\) 个左括号,\(j\) 个右括号的方案数,则

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

于是答案为

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

为了方便起见可以把坐标整体 \(+1\)

Description

\(n\) 个节点以 \(1\) 为根的一棵树,每个非叶子节点都有一个操作 \(\max\)\(\min\),表示这个节点中的值应该分别等于其子节点中所有值的最大值或最小值。假设树上有 \(k\) 个叶节点,你可以将每个叶节点填上 \([1,k]\) 的数字,且每个数字只使用一次,求根节点的最大值。

Solution

\(f[p]\) 表示 \(p\) 在其子树叶子结点中的权值排名的最大值
对于叶子结点,\(f=1\)
对于 \(\min\) 结点,\(f[p]=\sum_{p\to q} f[q]\)
对于 \(\max\) 结点,\(f[p]=\min_{p \to q} f[q]\)

给你一个在数轴上的点集 \(x_1, x_2, \dots, x_n\)。 每两个点 \(i\)\(j\) 可以在满足以下情况的时候相连: 点 \(i\) 和点 \(j\) 均未与其他点相连;\(\left| x_i - x_j \right| \geq z\)。那么请你求出最多可以连接多少点对?

Solution

双指针一遍即可
不知道这个题怎么评的分

Description

给定一个长度为 \(n\) 的排列 \(p\),求有多少区间 \([l,r]\) 满足 \(p[l]+p[r]=max\{p[i]\}\),其中 \(l \le i \le r\)

Solution

单调栈预处理出每个元素的控制区间(以它为最大值的区间)
枚举最大值位置 \(i\),于是 \(l \in [l[i],i], r \in [i,r[i]]\)
考察两个区间的长度,在小的那个中枚举,则只需要检查差是否在大区间中出现
用排列的逆来检查,值 \(x\)\(p_l,...,p_r\) 中出现,即 \(l \le I_x \le r\),其中 \(I\)\(p\) 的逆
显然每个元素被枚举次数的上界为 \(O(\log n)\),于是时间复杂度为 \(O(n \log n)\)

Description

给出两个整数 $ n \(,\) k $ 你需要构造出一个有 \(k\) 项的数列 $ A $ 满足以下条件:

  • 对于任意的 $ i\in [1,k] $ 有 $ A_i>0 $
  • 对于任意的 $ i\in (1,k] $ 应当有 $ A_{i-1}<A_i\le2A_{i-1} $
  • $ \sum\limits_{i=1}^kA_i=n $

Solution

首先我们可以构造一个等差数列 \(a_i=i\),如果此时 \(s>n\) 则必然无解
考虑先对每个位置加上 \([\frac {n-s} k]\),剩下 \((n-s) \bmod k\) 要加
考虑到 \(k\) 很小,我们从右往左依次枚举位置,每次暴力加一个后缀,倒序循环 \(+1\) 即可

Description

输入 \(n\) 个数,构造一个最大的环,环上任意 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)\(a_i \le 2 \times 10^5\)

Solution

一定要找一段 \(l,l+1,l+2,...,r\),其中除了 \(l,r\) 可以只出现一次以外,其它的都至少要出现两次
考虑到 \(a_i \le 2\times 10^5\),用桶处理一下即可

Description

在一个平面直角坐标系中,给你 $ n(2≤n≤50) $ 个点的坐标。这 $ n $ 个点中,每两个点之间都有一条直线(注意不是线段) 相连。求:这些直线中,有多少对直线相交。
1.当多点共线时,不认为由这几个点产生的直线有交点;

2.多条直线交于一点时,并不代表这几条直线在这个点相交时只产生一个交点,而是每两条直线都要统计一次。

Solution

熟悉一下板子(这题为什么有1900?)

给定由 \(n\) 个整数组成的集合 \(A\)。现给定 \(m\) 组集合,每个集合 \(S_i\) 都是 \(A\) 的一个真子集(这里的集合描述为 \(A\) 中元素下标集合),求是否存在集合 \(A\) 使得对 \(\forall_{1 \leq i \leq m}\) 不等式 \(LCM(S_i) > LCM(A - S_i)\) 恒成立。

Solution

如果存在两个集合没有交集,设为 \(S,T\),则 \(LCM(S)> LCM(A-S) \ge LCM(T)\),破坏了对称性,则一定无解
否则我们给每个集合安排一个质数 \(p_i\),设用过的所有质数集合为 \(P\),设 \(\prod S\) 是整数集合 \(S\) 的广义积,那么对于集合 \(i\),其 \(LCM\)\(\prod P\),而其补集一定不大于 \(\prod P-\{ p_i \}\),于是一定存在解

给出 \(01\)\(s\),求数对 \([l,r]\) 个数,使得能找到至少一对 \(x,k\),使 \(1\le x,k \le |s|\)\(l\le x<x+2k \le r\)\(s[x]=s[x+k]=s[x+2k]\)

Solution

考虑一个暴力,对于所有的 \(l\),暴力找到最小的能满足条件的 \(r\)
容易证明 \(r\) 是关于 \(l\) 单调的,于是倒序扫描 \(l\) 即可

给定一圆,上均匀分布有 \(n\) 个节点(不重合,从 \(1\)\(n\) 编号)。它们按照输入连成一棵树。求合法树的方案总数,对 \(998244353\) 取模。一棵树是合法的,当且仅当这棵树中无交叉的边(两边共用一端点除外)。

Solution

思路上类似树形 dp 吧
对于点 \(p\) 的子树,它在排列中必定是一段连续的区间,否则就会和其它的子树相交
不妨设 \(p_1=1\),设点 \(i\) 的度数为 \(d_i\),从根 \(1\) 开始,我们可以任意决定各个子树之间的顺序,然后递归下去
于是答案为 \(n \prod_{i=1}^n d_i!\)

Description

给两个数 $ n $ 和 $ x $,构造一个满足以下条件的序列:

  • 对任何序列中的元素 $ a_i \(,\) 1\le a_i<2^n $
  • 序列中没有非空连续子序列异或和为 $ 0 $ 或 $ x $
  • 序列长度 $ l $ 应该最大

Solution

构造前缀和序列 \(s_i = \oplus_{j=1}^i a_i\),每次暴力找一个 \([1,2^n)\) 的数,使得 \(s_i\) 没有出现过即可

两数列 \(a , b\),如果 \(a_i\) 是素数,那么 \(b\) 数列里添加上第 \(a_i\) 个素数(\(2\) 为第一个),如果不是素数,那么 \(b\) 数列里添加上 \(a_i\) 的最大因子。现在给出添加完之后的 \(b\) 数列,求出 \(a\) 数列。

Solution

从大到小枚举合数,删去它的最大因子
从小到大枚举质数 \(p\),删去第 \(p\) 个质数

Description

序列 \(123456789101112131415161718192021222324252627282930313233343536...\) 是无穷无尽的,现在你要输出它的第 \(k\) 项。\(k \le 10^{12}\)

Solution

分步处理

  • 找到答案所在数的位数
  • 找到答案所在数在当前位数中排第几
  • 找到答案在答案所在数是第几位

Description

一面国旗可以抽象为一个 $ n\times m (n,m \le 1000)$ 的矩形,每一个位置有一个颜色。这个矩形由自上而下三条横向的颜色带组成,每一条颜色带宽度相等,而且相邻两个颜色带颜色不能相同。现在你有一个 $ n\times m $ 的矩形,你需要计算其中能够称为国旗的子矩形数量。

Solution

预处理 \(f[i][j]\) 表示以元素 \((i,j)\) 为顶端,在满足颜色相同的条件下,能向下延伸的最长距离
然后计算以每个点为右上角的 Flag 数量
对于单列的判断,只需要使用几个条件即可,判定位置 \(i+3d-1\) 合法,并且 \(i+d,i+2d\)\(f\) 值满足条件
考虑复列,如果第 \(j\) 列与第 \(j-1\) 列的颜色对应相同,并且延伸数符合条件,则将计数器 \(+1\),否则将计数器置 \(1\)
(用好题目条件来构造算法,简直太妙了)

Description

给定 \(m\) 个城市,每年会选择一个城市举办比赛,现在给出前 \(n\) 年举办比赛的情况。在接下来的年份中,每年的比赛会在举办比赛次数最小的城市举办,如果有多个最小值,则先在编号最小的城市举办。有 \(q\) 个询问,每个询问给定一个 \(k\),问第 \(k\) 年在哪个城市举办比赛。

Solution

考虑离线处理,将询问排序,维护一个集合表示当前轮可以举办的城市的编号集合,每次通过暴力 kth 来找答案,这样需要用平衡树维护,考虑是否有更简单的做法
\(n\) 场比赛每一场都会恰好使得后面的一场比赛被跳过,我们只需要求出被跳过的比赛的时刻即可
先不考虑被跳过的比赛之间的相互作用,设前 \(n\) 场中的第 \(i\) 场的举办地点是 \(x\),前 \(i\) 场中在 \(x\) 举办的场数是 \(c[x]\),则导致的被跳过的比赛的原有时刻为 \(m\cdot c[x]+x - 1\)
由于跳过的比赛之间会相互影响,我们不妨先记为 \(a[i]=m \cdot c[x] + x\),在对所有比赛进行排序后,令 \(a[i]=a[i]-i\),即得到了每次跳过的时间
最后求解答案时,只需要二分一下,减去 \(a[i] \le k-n\) 的个数即可

Description

你有一个长度为 $ n \le 100 $ 的字符串。对于一个长度为 $ m $ 的子序列,选出它的花费是 $ n-m $,也就是你需要删掉的字符数量。你的任务是选出 $ k $ 个本质不同的子序列,使得总花费最小。输出这个最小花费。如果选不出 $ k $ 个,输出 $ -1 $。

Solution

\(pre[i]\) 表示 \(i\) 的前驱位置,设 \(f[i][j]\) 表示前 \(i\) 个字符,长度为 \(j\) 的本质不同子串的数量,则

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

给出一个 \(n\times m\) 的矩阵,你可以每次按照字母顺序添加横向或纵向的一条链,这条链会是 a~z 这 \(26\) 个小写字母中的一个,并且会覆盖原来的链。现在给出一个操作后的矩阵,要求回答是否可能形成这种情况,且每条链是从哪个点到哪个点。

Solution

倒序处理,将字母一层一层剥开,同时记录前层中留下来的“无关”位置,即该位置由于先前被覆盖,现在可有可无
于是我们对于当前字母 c,找到 c 字母的四边界,检查这是否是一条直链,如果不是则退出
如果是,则检查这条直链范围内加上无关字母是否能填满,如果不能则退出

给定一棵 \(n\) 个点的树,初始全是白点,要求你做 \(n\) 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。

Solution

显然如果选定了开始点,那么答案就是固定的
设开始点为根,则答案为所有子树的大小和
设以 \(i\) 为根的答案为 \(f[i]\)
则显然有 \(f[v]-f[u] = n-2s[v]\)
两次 DFS 即可

[CF1188B] Count Pairs - 数学

Description

给定一个质数 \(p\) , 一个长度为 \(n\) 的序列 \(a_1,a_2,...,a_n\)和一个整数 \(k\),求所有数对 \((i, j) (1 \le i,j \le n)\) 中满足 \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 的个数。

Solution

因为 \(p\) 是质数,所以任意非零元素有逆元,因此乘法运算满足消去律
这样我们就可以在原式的两侧同时乘上一个 \(a_i-a_j\),化简得到 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)

[CF11D] A Simple Task - 状态压缩dp

Description

求简单无向图的环数。

Solution

钦定最小编号的点是每个环的起点,这样找环就变成了找环路
\(f[s][i]\) 表示遍历过的点集为 s,当前点为 i 的路径数
转移时判定一下状态的 Lowbit 和新点的关系即可

\(n\) 个单词,想把这个 \(n\) 个单词变成一个句子,具体来说就是从左到右依次把两个单词合并成一个单词,合并两个单词的时候,要找到最大的 \(i(i\ge 0)\),满足第一个单词的长度为 \(i\) 的后缀和第二个单词长度为 \(i\) 的前缀相等,然后把第二个单词第 \(i\) 位以后的部分接到第一个单词后面,输出最后那个单词。

Solution

前缀配后缀,想到 KMP
每次构造一个待匹配串在前,已匹配串在后的串,计算这个串最后一位的 \(next\) 值就是本次匹配的宽度
注意已匹配串的长度最多只需要截取到待匹配串的长度即可

有一个 \(n\times m\) 的网格,方格上有 \(k\) 个宝藏,一个人从 \((1,1)\) 出发,可以向左或者向右走,但不能向下走。给出 \(q\) 个列,在这些列上可以向上走,其他列不能向上走。可以重复经过同一个点。求从 \((1,1)\) 出发,经过所有宝藏的最短路径长度。\(n,m,k,q\leq 2\times 10^5\)

Solution

\(f[i][0/1]\) 表示从 \((0,0)\) 走到 \(i\) 行的左侧/右侧,并遍历了 \(1 \to i-1\) 行的所有宝物的最短路径长度
(挺怕这种题的)

Description

给你一个数 $ n $,求出一个有 $ n $ 个子序列为 $ 1337 $ 的序列,序列长度不能大于 $ 10^5 $。

Solution

考虑 1 + n个3 + m个7
则方案数为 \(\frac {mn(n-1)} 2\) 种,不一定能用
于是考虑 133 + k7 + (n-2)3 + m7
则方案数为 \(\frac {mn(n-1)} 2 +k\)
不妨取 \(n=300\),然后暴力尝试 \(m\) 并计算 \(k\),最后选择一个可行的即可

[CF1203F1] Complete the Projects - 临项交换排序

Description

打第 i 场比赛需要 ai 的 rating,打完第 i 场比赛后 rating change 是 bi,rating 必须非负。求是否存在顺序能完成所有项目。\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

临项交换排序
对于 bi > 0 的部分,显然按 ai 排序
否则,按 ai+bi 排序即可

假如 1,2,初态为 r,此时要求 r>=a1, r>=a2-b1,若交换,则 r>=a2, r>=a1-b2,于是我们希望 max(a1,a2-b1)<=max(a2,a1-b2)
于是 a2+b2>=a1+b1

[CF1204D2] Kirk and a Binary String - 思维

Description

给定一个 01 串,要你求出另一个长度相等串使得任意区间内最长不降子序列的长度与原串相等且 0 的总数尽量多。

Solution

我们要将一些 1 改成 0,将某一个 1 改成 0 的条件是它后面的 0 的个数不少于 1 的个数,这个条件保证了这次修改不会影响正确性
在这个条件下,我们贪心地修改,倒序扫描整个序列,能修改就修改

括号序列视角:0 看成左括号,1 看成右括号,那么最长不降子序列就是最长的可以匹配的子括号序列长度,这样理解起来会很清楚

\(n(n\leq 10^5)\) 个数 \(a_1,...,a_n\ (a\leq 10^{18})\) 。有一个图用这个方法生成,若 \(a_i\) 按位与 \(a_j\) 不为 \(0\),则在 \(a_i,a_j\) 间连一条无向边。求这个图的最小环,若无环输出 \(-1\)

Solution

\(a_i=0\) 的数字删掉
\(n \ge 128\) 时,至少有一个二进制位满足该位为 \(1\) 的数个数 \(\ge 3\),即形成三元环
\(n<128\) 时,暴力建图后用 Floyd 跑最小环即可

[CF1207F] Remainder Problem - 根号分治

Description

给你一个长度为 \(500000\) 的序列,初值为 \(0\) ,你要完成 \(q\) 次操作,操作有如下两种:

  • 1 x y : 将下标为 \(x\) 的位置的值加上 \(y\)
  • 2 x y : 询问所有下标模 \(x\) 的结果为 \(y\) 的位置的值之和

Solution

根号分治,设 \(b=\sqrt{500000}\),那么我们对所有 \(r \le b\) 维护 \(sum[r][i]\) 表示下标模 \(r\) 等于 \(i\) 的所有位置的答案和
每次修改时,假设这个位置的新值是 x,那么我们需要对所有 \(r \le b\),在 \(sum[r][x\%r]\) 的位置修改,同时修改旧位置
询问时,如果 \(x \le b\) 那么直接调出结果,否则暴力查询原始序列

Description

现在有一个从 $ 1 $ 到 $ n $ 的一个全排列,但是你不知道这个排列到底是什么,但是你有一个 $ sum[i] $,其中 $ sum[i] $ 表示 $ \sum_{j=1}^{i-1}(a_j<a_i)?a_j:0 $,现在给你 $ sum $ 数组,让你求出这个排列 $ a $

Solution

首先找到最靠后的 \(0\),将这个位置 \(s\) 赋值为 \(\infty\)\(a\) 赋值为 \(1\),同时将它后面所有的 \(s-1\),重复下去即可
用线段树维护

\(n\) 天时间来买一种物品,一共要买 \(k\) 件,第 \(i\) 天可以购买的范围是 \([a_i,b_i]\),单价 \(c_i\),求最小总花费

Solution

暴力贪心,从最便宜的开始买即可
写完才发现原题要求用 Kotlin,我当做没看见了
主要是借着这题试用了一下 lambda 表达式

给定两个长度为 \(2\) 的串,你需要构造一个长度为 \(3n\) 的串,使得 a,b,c 三种字母各出现 \(n\) 次,且它不包含这两个串,字符集中仅有 a,b,c

Solution

画出转移图,\(3\) 个点,\(7\) 条边,可能不连通
但是很容易证明以下构造模式集可以对所有有解的情况给出合法的构造
(以 \(n=2\) 为例)

aabbcc
aaccbb
bbaacc
bbccaa
ccaabb
ccbbaa
abcabc
acbacb
bcabca
bacbac
cabcab
cbacba

于是我们用每种模式构造一个串,检验是否合法即可

给你一个有 \(n\) 个点的带权树,有 \(m\) 个查询,每次查询最大权值不大于 \(x\) 的点对的数目

Solution

模拟 Kruskal 的过程,并将整个过程的答案记录下来
询问 \(x\) 的时候,二分找到最后一个 \(\le x\) 的位置,输出这个时刻的答案即可

给你 \(d_i (\le n)\),要求你构造一棵树满足点 \(2i\)\(2i-1\) 距离为 \(d_i\)

Solution

关键在于这个神奇的 \(d \leq n\)
按照 \(d_i\) 从大到小排序,并且将所有奇数点串成一条链
依次考虑每个偶数点挂在哪里
对于链上第 \(k\) 个点,它的偶数点应该被挂在 \(k+d_i-1\) 个点的下面
如果第 \(k+d_i-1\) 是链上最后一个点,就需要再挂一个点来进行扩充
可以证明被挂的点一定存在

Description

缁欏畾涓€涓� \(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屾壘鍒颁袱涓偣 \(s,t\)锛屼娇寰� \(s\) 鍒� \(t\) 蹇呴』缁忚繃鐨勮竟鏈€澶氥€�

Solution

杈瑰弻鍐呯殑杈规樉鐒堕兘涓嶆槸鍏抽敭杈癸紝鍚﹀垯蹇呮槸锛屼簬鏄缉鐐瑰悗姹傜洿寰勫嵆鍙�

[CF1006F] Xor-Paths

Description

缁欏嚭涓€涓� n 脳 m 鐨勭綉鏍硷紝姣忎釜鏍煎瓙涓婃湁鏉冨€� \(a[i][j]\)锛岃浠� (1,1) 璧板埌 (n,m)锛屾瘡娆″彧鑳藉悜鍙虫垨鍚戜笅璧帮紝娌胯矾璁$畻寮傛垨鍜岋紝姹傚紓鎴栧拰绛変簬 k 鐨勮矾寰勬暟銆�

Solution

鍙屽悜 BFS锛岀敱浜庤璧扮殑鎬绘鏁颁负 \(steps=n+m-2\)锛屾鐫€璧� \(steps/2\)锛屽弽鐫€璧� \((steps+1)/2\)锛岀劧鍚庡悎璧锋潵鐢� map 绠楃瓟妗堝嵆鍙�

Description

鎴戜滑灏嗕竴涓棤鍚戝浘绉颁綔浜掕川鍥撅紝褰撲笖浠呭綋瀵逛簬鍏朵腑姣忎竴鏉¤竟 \((v, u)\) 鏈� \(v\) 鍜� \(u\) 浜掕川锛堜篃鍗� \(GCD(v,u)=1\)锛夈€傚綋涓や釜椤剁偣涔嬮棿娌℃湁杈规椂涓嶉渶瑕佽€冭檻銆傞《鐐逛粠 \(1\) 寮€濮嬫爣鍙枫€�
鐜板湪缁欎綘 \(n\) 涓《鐐瑰拰 \(m\) 鏉¤竟锛岃姹備綘寤虹珛涓€涓棤閲嶈竟鍜岃嚜鐜苟涓旇繛閫氱殑浜掕川鍥撅紝鎴栬€呭垽瀹氭棤娉曟瀯閫犮€�

Solution

璁惧皢姣忔潯杈规弿杩颁负 \((u,v)\)锛屾弧瓒� \(u<v\)锛岄偅涔堟垜浠粠灏忓埌澶ф灇涓� \(u\)锛屽啀浠庡皬鍒板ぇ鏋氫妇 \(v\)锛岃兘杩炲氨杩�
澶嶆潅搴︿笌 \(\varphi\) 鍑芥暟鐨勫墠缂€鍜屾湁鍏筹紝涓嶅Θ灏嗗叾瑙嗕綔 \(O(n \log n)\)
缁欎綘涓€涓� \(n \times m\) 鐨勭煩褰紝涓€寮€濮嬫湁 \(q\) 涓牸瀛愪笂琚爣璁般€傚浜庝换鎰忎袱琛屼袱鍒楋紝濡傛灉浜ゆ眹鐨勫洓涓牸瀛愪腑鏈変笁涓鏍囪锛岄偅涔堢 \(4\) 涓細琚嚜鍔ㄦ爣璁般€傞棶浣犺嚦灏戦渶瑕佹墜鍔ㄦ爣璁板嚑涓牸瀛愶紝浣垮緱鏁翠釜鐭╁舰鍐呯殑鏍煎瓙閮借鏍囪銆�

Solution

琛屽拰鍒楀垎鍒搴斾簩鍒嗗浘鐨勫乏閮ㄥ彸閮紝鏍煎瓙瀵瑰簲杈癸紝閭d箞鎴戜滑鍙渶瑕佹墜鍔ㄤ娇寰椾簩鍒嗗浘杩為€氾紝閫氳繃鑷姩鏍囪鐨勬搷浣滃氨鍙互寰楀埌瀹屽叏浜屽垎鍥�
浜庢槸绛旀涓鸿繛閫氬潡鏁伴噺 \(-1\)

Description

宸茬煡涓€涓� \(n脳m\) 鐨勭煩闃碉紝姣忚姣忓垪鍏冪礌鐨勫紓鎴栧拰锛岃鏋勯€犱竴涓弧瓒宠姹傜殑鐭╅樀銆傝嫢涓嶅瓨鍦紝杈撳嚭"NO"锛屽惁鍒欒緭鍑�"YES"鍜岀煩闃点€�

$ n,m \leq 100 $

Solution

灏嗗墠 \((n-1)(m-1)\) 璁句负 \(0\)锛屽彧閫氳繃鏈€鍚庝竴涓� \(L\) 鍨嬫潵鏋勯€�

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暟鍒楋紝鍒濆鍏ㄩ儴涓� \(0\) 锛屼綘鍙互浠绘剰锛堜换閫夊尯闂达級杩涜 \(q\) 娆℃搷浣滐紝绗� \(i\) 娆℃搷浣滀娇 \([l_i,r_i]\) 鍐呯殑鏁板叏閮ㄥ彉涓� \(i\) 锛屼綘蹇呴』杩涜鍏ㄩ儴 \(q\) 娆℃搷浣滐紝涓旀瘡涓搷浣滃尯闂撮兘涓嶈兘涓虹┖锛屾墍鏈夋搷浣滃尯闂寸殑骞跺繀椤讳负 \([1,n]\)銆傜幇鍦ㄧ粰浣犱竴涓暟鍒楋紝鍏朵腑 \(0\) 浠h〃杩欎釜浣嶇疆鍙互鏄换浣曟暟锛岄棶浣犺兘鍚﹂€氳繃涓婅堪鐨� \(q\) 娆℃搷浣滃緱鍒拌繖涓暟鍒椼€傝緭鍑烘柟妗堛€�

Solution

浠ヤ笅 \(m\) 鍗充负棰橀潰涓殑 \(q\)

鏃犺В鐨勫垽瀹�

濡傛灉涓や釜鏁颁箣闂村瓨鍦ㄦ瘮瀹冧滑灏忕殑鏁帮紝鍒欐棤瑙�
濡傛灉搴忓垪涓笉瀛樺湪鍊间负 \(m\) 鐨勬暟锛屽垯鏃犺В

瑙g殑鏋勯€�

鑰冭檻涓� \(0\) 鐨勪綅缃渶瑕佹€庢牱澶勭悊

濡傛灉鏁板垪涓病鏈� \(m\)锛屽垯浼樺厛濉� \(m\)

濡傛灉鏌愪釜浣嶇疆鐨勫乏渚у彸渚у悓鏃跺瓨鍦� \(x\)锛屽垯璇ヤ綅缃� \(\ge x\)锛屾崲瑷€涔嬫垜浠湪杩欎釜浣嶇疆闇€瑕佸彇瀹冨乏杈瑰彸杈归兘鏈夌殑鏁颁腑鐨勬渶澶у€�

鍚﹀垯濉� \(1\)

濡備綍缁存姢

鑰冭檻缁存姢涓€涓� std::set锛屽湪鏌愪釜鏁扮涓€娆″嚭鐜版椂 insert(x)锛屾渶鍚庝竴娆″嚭鐜版椂 erase(x)
閭d箞鎴戜滑姣忔鍙� *s.rbegin() 鍗冲彲

[CF1025D] Recovering BST - 鍖洪棿dp

Description

缁欏畾涓€妫典簩鍙�鎼滅储鏍� \(n \le 700\) 鐨勬墍鏈夌偣鏉冿紝鏋勯€犱簩鍙夋爲婊¤冻浠绘剰涓や釜鐩存帴鐩搁偦鐨勭偣鐨勬潈鍊肩殑 GCD 涓嶆槸 1

Solution

杩欑鍏充簬浜屽弶鎼滅储鏍戜腑搴忛亶鍘嗙殑 DP 闂锛岃鐘舵€佹椂蹇界暐鏍硅€岃€冭檻鍖洪棿锛屽洜涓鸿繖涓尯闂翠綔涓轰竴涓瓙鏍戯紝瀹冪殑鐖朵翰涓€瀹氭槸鍖洪棿宸︾鐐圭殑宸﹁竟鐨勭偣鎴栬€呭尯闂村彸绔偣鐨勫彸杈圭殑鐐�
璁� \(f[i][j]\) 琛ㄧず浠� \([i,j-1]\) 浣滀负 j 鐨勫乏瀛╁瓙鏄惁鍚堟硶
璁� \(g[i][j]\) 琛ㄧず浠� \([i+1,j]\) 浣滀负 i 鐨勫彸瀛╁瓙鏄惁鍚堟硶
杞Щ鏃讹紝鑰冭檻涓€涓尯闂� \([l,r]\)锛屾灇涓惧畠鐨勬牴 \(k\)锛岄渶瑕佹弧瓒� \(f[i][k]\) 骞朵笖 \(g[k][j]\)
濡傛灉姝ゆ椂 \(k\) 涓� \(l-1\) 鐩歌繛鏄悎娉曠殑锛岄偅涔堝氨鍙互杞Щ鍒� \([l-1,r]\)
濡傛灉姝ゆ椂 \(k\) 涓� \(r+1\) 鐩歌繛鏄悎娉曠殑锛岄偅涔堝氨鍙互杞Щ鍒� \([l,r+1]\)
鎬讳箣锛岃鐘舵€佹椂璁剧殑鏄€滃崐妫靛瓙鏍戔€濈殑鍚堟硶鎬э紝杞Щ鏃堕鍏堣€冭檻涓€涓尯闂村彲鑳芥湁鍝簺鏍癸紝鐒跺悗鍒嗗埆鑰冭檻杩欎簺鐐逛负鏍规椂锛屽悜澶栫殑杞Щ鎯呭喌

Description

缁欏畾涓や釜闆嗗悎 \(A,B\)锛岃姹傚湪浠绘剰鏃跺埢 \(A\) 涓厓绱犲皬浜� \(B\) 涓厓绱犮€傛瘡娆℃搷浣滃彲浠ユ坊鍔犱竴涓厓绱� \(x\) 鍒颁换鎰忎竴涓泦鍚堬紙鐢辩▼搴忔潵閫夋嫨锛夋垨鑰呭垹闄や竴涓厓绱� \(x\)锛屼繚璇佹坊鍔犵殑鍏冪礌浜掍笉鐩稿悓锛屽垹闄ょ殑鍏冪礌涓€瀹氬瓨鍦紝骞惰姹傚垹闄ょ殑鍏冪礌蹇呴』鏄� \(A\) 鐨勬渶澶у€兼垨鑰� \(B\) 鐨勬渶灏忓€笺€傛眰鏂规鏁般€�

Solution

姣忔鍒犻櫎鎿嶄綔浼氬鍓嶉潰鎵€鏈夌殑娣诲姞鎿嶄綔浜х敓鏌愮闄愬埗銆�
鍋囪鏈鍒犻櫎 \(x\)锛岄偅涔堝墠闈㈡墍鏈夊皬浜� \(x\) 鐨勫厓绱犻兘蹇呴』琚姞鍏� \(A\)锛屽ぇ浜� \(x\) 鐨勫厓绱犻兘蹇呴』琚姞鍏� \(B\)锛岀瓑浜� \(x\) 鐨勫厓绱狅紝濡傛灉 \(x\) 灏忎簬 \(A\) 鐨勬渶澶у€煎垯蹇呴』琚姞鍏� \(A\)锛屽ぇ浜� \(B\) 鐨勬渶灏忓€煎垯蹇呴』琚姞鍏� \(B\)锛屽惁鍒欏彲浠ヤ换鎰忛€夋嫨锛屾€绘柟妗堟暟 \(\times 2\)銆�
浣嗘渶鍚庝竴娆″垹闄ゅ悗杩樺彲鑳芥湁鑻ュ共娣诲姞鎿嶄綔锛屽浜庤繖浜涙坊鍔犳搷浣滐紝鎴戜滑鍦ㄥ垹闄ゅ叾涓皬浜� \(A\) 鐨勬渶澶у€笺€佸ぇ浜� \(B\) 鐨勬渶灏忓€艰€呭悗锛屽墿浣欑殑鍏冪礌鍙互浠诲彇鍒嗗壊鐣岋紝宸︿晶鍔犲叆 \(A\) 鍙充晶鍔犲叆 \(B\)銆傚亣璁惧厓绱犱竴鍏辨湁 \(c\) 涓紝鍒欑瓟妗� \(\times (c+1)\)銆�

Description

缁欏嚭涓€涓湪浜岀淮骞抽潰鐩磋鍧愭爣绯荤涓€璞¢檺鍐呯殑锛屽崟浣嶉暱搴︿负 \(1\) 鐨勬棤闄愬ぇ缃戞牸锛屾瘡鏉$洿绾块兘浠h〃閬撹矾銆傚張缁欎綘涓€鏉$洿绾� \(ax+by+c=0\)锛屼篃浠h〃涓€鏉¢亾璺€�

鐜板湪缁欎綘涓や釜鏍肩偣 \(A,B\) 鍧愭爣 \((x1,y1)\) 鍜� \((x2,y2)\)锛岃浣犳眰璇ヤ袱鐐归棿鏈€鐭殑閬撹矾璺濈銆�

Solution

姹傜煩褰氦鐐瑰悗鍐嶆眰璺濈
锛堝張鎶� fabs 鍐欐垚 abs 浜�
锛堜互鍙婂叧閿欎簡娴佸悓姝ヨ杩

Description

缁欎綘 \(n\) 涓暟锛屽幓鎺夊敖閲忓皯鐨勬暟浣垮緱鍓╀笅鏁扮殑鏈€澶у叕绾︽暟姣斿師鏉ョ殑澶с€傛棤瑙h緭鍑� \(-1\)銆�

Solution

棣栧厛灏嗘墍鏈夋暟闄や互鏈€澶у叕绾︽暟
璁� \(M=\max a_i\)锛岀淮鎶や竴涓《 \(b[]\)锛屽姣忎釜 \(i\)锛屽湪 \(b[a[i]]\) 澶� \(+1\)
鏋氫妇 \([1,M]\) 涓殑鎵€鏈夎川鏁� \(p\)锛岃€冭檻璁╂渶澶у叕绾︽暟涔樹互 \(p\)锛屼唬浠峰氨鏄垜浠渶瑕佸垹鍘绘墍鏈夌殑 \(a_i\) 婊¤冻 \(p|a_i\)锛屼簬鏄垜浠灇涓炬墍鏈� \(p\) 鐨勬暣鏁板€� \(q\)锛岀粺璁℃墍鏈� \(b[q]\) 鐨勫拰锛屽氨鏄� \(p\) 鐨勭瓟妗�
鏈€鍚庡鎵€鏈� \(p\) 鐨勭瓟妗堝彇鏈€灏忓€煎嵆鍙�
澶嶆潅搴︽槸 \(\sum_{p \leq M} M/i\)锛岀敱浜庢敹鏁涜緝蹇紝鍙互鎺ュ彈
鍒ゆ柇鑳藉惁鏁撮櫎鍗冲彲
CF 题解汇总
濡傛灉鑷繁鏄洖鏂囦覆鍙互鍋氫腑蹇�
濡傛灉涓€涓覆鍜屽彟涓€涓覆鐨勮浆缃浉绛夊垯鍙互鍑戜竴瀵�
浼樺厛閰嶅

Description

瀹氫箟涓€涓暟瀛楁槸濂芥暟锛屽綋涓斾粎褰撳畠鐨勫崄杩涘埗琛ㄧず涓嬫湁涓嶈秴杩� $ 3 $ 涓暟瀛� $ 1 \sim 9 $銆傜粰瀹� $ [l,r] $锛岄棶鏈夊灏戜釜 $ x $ 浣垮緱 $ l \le x \le r $锛屼笖 $ x $ 鏄ソ鏁般€�$ 1 \le l_i \le r_i \le 10^{18} $

Solution

甯歌鐨勬暟浣� dp锛岃 \(f[i][j]\) 琛ㄧず鍓� \(i\) 涓暟浣嶏紝鏈� \(j\) 涓潪闆舵暟浣嶆椂锛屾湁澶氬皯涓暟婊¤冻鏉′欢

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暣鏁板簭鍒楋紝浣犲彲浠ュ鍏跺仛涓ょ鎿嶄綔:

  • 閫� \(i!=j\)锛屽皢 \(a_j\) 鏇挎崲涓� \(a_i\cdot a_j\)锛屽垹闄� \(a_i\)銆�
  • 閫変竴涓湭琚垹闄ょ殑 \(a_i\)锛屽皢鍏跺垹闄ゃ€�璇ユ搷浣滃湪浠绘剰鏃跺埢鍧囧彲鎵ц锛屾渶澶氭墽琛屼竴娆�銆�

浣犻渶瑕佹搷浣� \(n-1\) 娆★紝鍓╀笅涓€涓暟锛屼娇鍏舵渶澶с€傜敱浜庡墿涓嬬殑鏁板彲鑳戒細寰堝ぇ锛屼綘闇€瑕佽緭鍑轰换鎰忎竴绉嶅緱鍒板畠鐨勬搷浣滃簭鍒椼€�

Solution

鍒嗙被璁ㄨ

  • 濡傛灉璐熸暟鐨勪釜鏁�鏄伓鏁�

  • 濡傛灉娌℃湁 \(0\)锛屽彇缁濆鍊煎鐞嗗嵆鍙�

  • 濡傛灉鏈� \(0\)锛屽皢鎵€鏈� \(0\) 涔樺湪涓€璧凤紝娑堝幓锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

  • 濡傛灉璐熸暟鐨勪釜鏁�鏄鏁�

  • 濡傛灉娌℃湁 \(0\)锛屾秷鍘讳竴涓粷瀵瑰€兼渶灏忕殑璐熸暟锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

  • 濡傛灉鏈� \(0\)锛屽厛灏嗘墍鏈� \(0\) 涔樺湪涓€璧凤紝鍐嶅皢缁濆鍊兼渶灏忕殑璐熸暟涔樺埌 \(0\) 涓婏紝娑堝幓杩欎釜 \(0\)锛屽墿涓嬬殑鍙栫粷瀵瑰€煎鐞嗗嵆鍙�

Description

鏈� \(N\) 涓偣锛屾眰涓� \(y=0\) 鐩稿垏鐨勶紝鍖呭惈杩� \(N\) 涓偣鐨勬渶灏忓渾鐨勫崐寰勩€�

Solution

鑰冭檻浜屽垎鍗婂緞锛岀幇鍦ㄨ妫€楠� \(r\) 鏄惁鍙锛屾樉鐒跺浜庢瘡涓� \((x_i,y_i)\) 鎴戜滑鍙互璁$畻鍑� \(d=\sqrt {r^2 - (y_i-r)^2}\)锛屽垯鍖洪棿 \([x_i-d, x_i+d]\) 鏄彲琛岀殑锛屾垜浠彧闇€瑕侀獙璇佹墍鏈夊尯闂存槸鍚︽湁浜ゅ嵆鍙€�

Description

鐜板湪鏈� $ N $ 涓汉锛屾瘡涓€涓汉閮戒笉鎯冲懆鍥寸殑浜哄潗寰楃浠栧緢杩戯紝鎵€浠ュ湪浠栫殑宸﹁竟瑕佹斁 $ L_i $ 寮犳瀛愶紝鍙宠竟瑕佹斁 $ R_i $ 寮犳瀛愶紝鐜板湪浠栦滑瑕佸潗鎴愯嫢骞蹭釜鍦堬紝璇烽棶鏈€灏戣鏀惧灏戝紶妞呭瓙銆�

Solution

宸﹀彸鎵嬫暟鐩垎鍒帓搴忓悗锛岀瓟妗堝嵆涓� \(n+\sum \max(l_i,r_i)\)
缁欏畾涓€涓� \(n \times m\) 鍦板浘锛屾瘡涓牸瀛愪负绌哄湴鎴栧锛屼綘浠庝竴涓綅缃紑濮嬶紝鍥涜繛閫氱Щ鍔紝鍚戜笂鍚戜笅娆℃暟涓嶉檺锛屽悜宸︽渶澶� \(x\) 娆★紝鍚戝彸鏈€澶� \(y\) 娆★紝闂兘鍒拌揪澶氬皯涓牸瀛�

Solution

濡傛灉鍙湁涓€涓柟鍚戞湁浠d环锛岄偅涔堢畝鍗� BFS 鍗冲彲
鐒惰€岃繖閲屼袱涓柟鍚戦兘鏈変唬浠凤紝浣嗘槸鐐� \((r,c) \to (i,j)\) 鐨勬í鍧愭爣宸槸纭畾鐨勶紝鎹㈣█涔嬶紝濡傛灉璁惧悜宸﹁蛋浜� \(a\) 姝ワ紝閭d箞鍚戝彸璧扮殑姝ユ暟灏辨槸 \(i-r+a\)
浜庢槸鎴戜滑鍙鍚戝乏鐨勮竟璁句唬浠峰嵆鍙紝鏈€缁堝湪鑰冭檻 \((r,c) \to (i,j)\) 鐨勮繃绋嬫椂锛屽悓鏃惰姹� $a \leq x $ 鍜� $ j-c+a \leq y$ 鍗冲彲

CF1070A Find a Number

Description

缁欏畾涓や釜鏁� \(d \le 500\) 鍜� \(s \le 5000\)锛屾眰鏈€灏忕殑 \(n\) 浣垮緱 \(d|n\) 骞朵笖 \(n\) 鐨勫悇浣嶆暟瀛椾箣鍜屼负 \(s\)銆�

Solution

璁� \(f[i][j]\) 琛ㄧず鐢熸垚涓€涓拰涓� \(i\) 涓� \(\bmod d=j\) 鐨勬暟瀛楃殑鏈€灏� \(n\) 鐨勬湯浣嶆暟瀛�
鐢� BFS 瀹炵幇鍗冲彲

Description

鍦ㄥ钩闈㈢洿瑙掑潗鏍囩郴涓紝涓€涓満鍣ㄤ汉澶勪簬 $ (0,0) $ 鐐广€傚畠鑳借繘琛屼互涓嬬殑绉诲姩鎿嶄綔銆�$ U~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x,y+1) \(;\) D~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x,y-1) \(;\) L~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x-1,y) \(;\) R~~ $ 浠� $ (x,y) $ 绉诲姩鍒� $ (x+1,y) $銆傜幇鍦ㄦ湁涓€涓暱搴︿负 $ n $ 鐨勬搷浣滃簭鍒椼€俈asya鎯充慨鏀硅繖涓簭鍒椾娇鏈哄櫒浜烘渶缁堢Щ鍔ㄥ埌 $ (x,y) $銆傚叾淇敼鐨勮姳璐逛负 $ maxID-minID+1 \(銆�\) maxID $ 鏄慨鏀圭殑鎿嶄綔鐨勪笅鏍囩殑鏈€澶у€硷紝$ minID $ 鏄慨鏀圭殑鎿嶄綔鐨勪笅鏍囩殑鏈€灏忓€笺€傚鏋滄病鏈変慨鏀癸紝鍒欒姳璐逛负 $ 0 $銆�

Solution

鑰冭檻鍒板浜庝竴涓尯闂达紝濡傛灉瀹冨彲琛岋紝閭d箞涓€涓寘鍚畠鐨勫尯闂翠竴瀹氬彲琛�
鏁呭昂鍙栨硶鍗冲彲
缁欏畾鏃犲悜甯︽潈杩為€氬浘锛屼繚鐣欒嚦澶� \(k\) 鏉¤竟锛屾渶澶у寲鍒� \(1\) 鍙疯妭鐐规渶鐭矾闀垮害涓嶅彉鐨勭偣鐨勬暟閲忋€�

Solution

涓€涓樉鐒剁殑鍋氭硶鏄紝鏋勫缓鍘熷浘鐨勪竴妫垫渶鐭矾寰勬爲锛屼换鎰忛€夋嫨涓€涓ぇ灏忎负 \(k\) 鐨勫寘鍚牴鐨勮繛閫氬潡灏辨槸绛旀
鍙︿竴鏂归潰锛屾垜浠洖褰掑埌 Dijkstra 绠楁硶鐨勫師鐞嗭紝涓嶉毦鍙戠幇锛屾垜浠彧闇€瑕佸湪绠楁硶鍔犱簡 \(k\) 鏉¤竟浠ュ悗鍋滄锛屽綋鍓嶉€夋嫨鐨勮竟闆嗗氨鏄瓟妗�

Description

鏈� $ n $ 涓棶棰橈紝闂鐨勪富棰樺垎鍒槸 $ a_1,a_2,\cdots,a_n $锛岄渶瑕佺粍缁囦竴浜涗笓棰樻瘮璧涳紝鍚屾椂瑕佹弧瓒充互涓嬫潯浠讹細涓€鍦轰笓棰樻瘮璧涗腑鐨勬墍鏈夐鐩殑涓婚鐩稿悓锛涚粍缁囩殑鎵€鏈変笓棰樻瘮璧涗腑涓婚浜掑紓锛涗粠绗簩鍦烘瘮璧涘紑濮嬶紝姣旇禌涓殑棰樼洰鏁板繀椤绘槸鍓嶄竴鍦烘瘮璧涢鐩暟閲忕殑 $ 2 $ 鍊嶏紝绗竴鍦烘瘮璧涚殑棰樼洰鏁伴噺鍙互鏄换鎰忕殑銆傛眰鎵€鏈夋瘮璧涗娇鐢ㄧ殑棰樼洰鏁伴噺涔嬪拰鐨勬渶澶у€笺€�

Solution

鎶婃瘡涓被鍨嬬殑闂鍘嬪湪涓€璧凤紝鏋氫妇姣忎竴涓紑濮嬮棶棰樻暟鐩紝妫€楠岀瓟妗堟椂锛岀淮鎶や竴涓綋鍓嶄綅缃� \(pos\)锛屾瘡娆″湪 \(pos\) 鍚庣殑娈典腑浜屽垎锛屾壘鍒扮涓€涓彲浠ュ绾崇殑棰樼洰绫诲瀷锛屽鏉傚害 \(O(n \log^2 n)\)
缁欏畾 \(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屽浘涓� \(k\) 涓壒娈婇《鐐癸紝浣犻€夊畾涓€涓竟闆嗭紝浣垮緱 \(k\) 涓偣閫氳繃杩欎簺杈硅兘澶熻繛閫氾紝姹傞€夊畾杈归泦涓渶闀胯竟鐨勬渶灏忓€笺€�

Solution

鏄剧劧鍦ㄦ眰鏈€灏忕敓鎴愭爲鐨勬椂鍊欑淮鎶や竴涓嬪氨琛屼簡锛屽叧閿槸濡備綍鍒ゅ畾褰撳墠 \(k\) 涓偣宸茬粡杩為€�
缁存姢涓€涓� \(cnt\)锛屽鏋滄湰娆″悎骞舵秹鍙婂埌鐨勪袱涓泦鍚堜腑閮芥湁鐗规畩鐐癸紝鍒� \(cnt+1\)

Description

鐐规湁姝f潈锛岃竟鏈夎礋鏉冦€傚湪杩欐牱鐨勬棤鏍规爲涓壘鍒颁竴鏉℃潈閲嶆渶澶х殑閾惧苟杈撳嚭鏉冮噸銆�

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

閲嶈缁撹锛氬鏋滀竴鏉¤矾寰勬鍚戝弽鍚戜笉鍚屾椂鍚堟硶锛屽垯瀹冧竴瀹氬瓨鍦ㄤ竴鏉″瓙璺緞姣斿畠鏇翠紭锛堟兂鍒颁簡灏卞緢鏄剧劧锛�
浜庢槸鎴戜滑灏卞彲浠ュ綋鍋氭棤鍚戦摼澶勭悊浜�
璁� \(f[i]\) 琛ㄧず鍒� \(i\) 缁撳熬鐨勪竴鏉$洿閾剧殑鏈€澶у€�
閫掓帹 \(f[]\) 鏃讹紝閫夊彇鏈€澶у効瀛愬嵆鍙�
鏇存柊绛旀鏃讹紝閫夊彇鏈€澶у効瀛愬拰娆″ぇ鍎垮瓙鍗冲彲

[CF1092D1] Great Vova Wall - 鏍�,璐績

Description

缁欏畾涓€涓簭鍒� \(a=\{a_1,a_2,\dots,a_n\}\)锛屾湁浠ヤ笅涓ょ鎿嶄綔锛氳嫢 \(a_i=a_{i+1}\)锛屽垯鍙皢 \(a_i\) 涓� \(a_{i+1}\) 鍚屾椂鍔� \(1\)锛涘皢 \(a_i\) 鍔� \(2\)銆傛眰闂槸鍚﹀彲缁忚繃澶氭鎿嶄綔鍚庝娇寰楁墍鏈� \(a_i\) 鐩哥瓑銆�

Solution

鐩稿綋浜庢寜濂囧伓鎬у仛鍖归厤锛屼笉闅炬兂鍒扮敤鏍堢淮鎶わ紝纰板埌濂囧伓鎬х浉鍚岀殑灏辨秷鍘伙紝濡傛灉鏈€鍚庢爤鍐呭墿浣欏厓绱犳暟閲忎笉瓒呰繃 1 鍒� YES

Description

鏈� \(n\) 涓妭鐐圭殑鏍戯紝姣忎釜鑺傜偣鏈変竴鐐规潈 \(a_i\)銆傚畾涔� \(\textrm{dist}(x,y)\) 涓� \(x\) 鍒� \(y\) 鐨勮竟鏁般€傞€夊彇涓€鐐� \(v\)锛屼娇 $ \sum_{i=1}^{n}a_i \cdot \textrm{dist}(i ,v)$ 鏈€澶�

Solution

鍏稿瀷鎹㈡牴 dp锛岃 \(1\) 鍙风偣涓烘牴锛岃 \(s[i]\) 琛ㄧず鐐� \(i\) 瀛愭爲涓殑鏉冨€煎拰锛�\(f[i]\) 琛ㄧず \(v=i\) 鏃剁殑绛旀锛岄鍏堟垜浠彲浠ラ€氳繃涓€娆� DFS 绠楀嚭 \(f[1]\)锛屽悓鏃舵湁杞Щ鏂圭▼

\[f[q]=f[p]-s[q]+s[1]-s[q]=f[p]+s[1]-2s[q] \]

Description

缁欏畾涓€涓暱搴︿负 $ n $ 鐨勫皬鎷彿搴忓垪锛屾眰鏈夊灏戜釜浣嶇疆婊¤冻灏嗚繖涓綅缃殑鎷彿鏂瑰悜鍙嶈繃鏉ュ悗浣垮緱鏂板簭鍒楁槸涓€涓悎娉曠殑鎷彿搴忓垪銆傚嵆鍦ㄤ换鎰忎竴涓綅缃墠缂€宸︽嫭鍙风殑涓暟涓嶅皯浜庡墠缂€鍙虫嫭鍙风殑涓暟锛屽悓鏃舵暣涓簭鍒楀乏鍙虫嫭鍙蜂釜鏁扮浉鍚� $ 1 \leq n \leq 10^6 $

Solution

灏嗗乏鎷彿璁颁负 \(1\)锛屽彸鎷彿璁颁负 \(-1\)锛岃繖涓暟瀛楀簭鍒楄涓� \(a[]\)锛屽畠鐨勫墠缂€鍜岃涓� \(s[]\)锛屽悓鏃惰褰曟瘡涓€涓悗缂€ \(a[i..n]\) 鐨勬渶灏忓墠缂€ \(f[i]\)
璁$畻 \(f[]\) 鏃讹紝鍙渶瑕佸€掑簭閫掓帹鍗冲彲锛堢被浼兼渶澶у瓙娈靛拰鐨勫鐞嗭級
濡傛灉涓€涓綅缃� \(i\)锛屾弧瓒虫墍鏈� \(i\) 涔嬪墠鐨勫墠缂€閮藉悎娉曪紝涓� \(s[n]-2a[i]=0\)锛屽苟涓� \(s[i-1]-a[i]+f[i+1] \ge 0\)锛屽垯杩欎釜浣嶇疆鏄弧瓒虫潯浠剁殑
缁欏畾 \(n\) 涓偣锛屾瘡涓偣鏈夌偣鏉冿紝杩炵粨涓や釜鐐硅姳璐圭殑浠d环涓轰袱鐐圭殑鐐规潈鍜屻€傚彟澶栨湁 \(m\) 鏉$壒娈婅竟锛屽弬鏁颁负 \(x,y,z\)銆傛剰涓哄鏋滀綘閫夋嫨杩欐潯杈癸紝灏卞彲浠ヨ姳璐� \(z\) 鐨勪唬浠峰皢鐐� \(x\) 鍜岀偣 \(y\) 杩炵粨璧锋潵锛屽綋鐒朵綘涔熷彲浠ヤ笉閫夋嫨杩欐潯杈广€傛眰浣挎暣涓浘鑱旈€氱殑鏈€灏忎唬浠�

Solution

妯℃嫙 Kruskal 杩囩▼锛屽悓鏃剁淮鎶ゆ瘡涓泦鍚堢殑鏈€灏忕偣鏉冿紝姣忔姣旇緝褰撳墠鏈€灏忕壒娈婅竟鐨勮竟鏉冨拰鏈€灏忕偣鏉冪殑涓や釜闆嗗悎鐨勫拰锛岃蛋姣旇緝灏忕殑閭d竴涓�
鐢� std::set 缁存姢鍗冲彲

Description

鏈変竴棰楁爲锛屾瘡涓偣鏈変竴涓偣鏉冿紝杈规潈閮芥槸 \(1\)锛岄棶璺緞涓婄殑鎵€鏈夌偣鐨� gcd 涓嶆槸 \(1\) 鐨勬渶闀胯矾寰勬槸澶氬皯锛�

Solution

鍒嗘不鍒版瘡涓偣鏃讹紝鑰冭檻褰撳墠鍒嗘不鑼冨洿鍐呯粡杩囪鐐圭殑璺緞銆�
瀵逛簬姣忎釜瀛愭爲锛岃褰曚竴涓槧灏勶紝琛ㄧず姣忎釜鏁拌兘鍒拌揪鐨勬渶娣辩殑娣卞害锛岃竟鎼滅储杈规洿鏂板嵆鍙€�
缁存姢褰撳墠鍒嗘不涓绘爲鐨勬槧灏勶紝鏋氫妇瀹屼竴涓瓙鏍戝悗锛岀敤瀛愭爲鏄犲皠鍜屼富鏍戞槧灏勪腑鐨勫€兼洿鏂扮瓟妗堬紝骞跺皢瀛愭爲鏄犲皠骞跺叆涓绘爲鏄犲皠涓€�

Description

缁欏畾涓€涓洖鏂囧瓧绗︿覆锛�\(n \le 5000\)锛屽浠婃兂灏嗚繖涓瓧绗︿覆鐢� \(k\) 鍒€鍒囨垚 \(k+1\) 涓儴鍒嗭紝鐒跺悗瀵硅繖 \(k+1\) 涓瓙涓查噸鏂版帓鍒楋紙涓嶈兘鏀瑰彉瀛愪覆鍐呴儴鐨勫瓧绗﹂『搴忥級浣垮緱寰楀埌鐨勬柊涓蹭篃涓哄洖鏂囦覆涓斾笉涓庡師涓蹭竴鏍枫€傛眰鍑鸿繖涓渶灏忕殑鏁� \(k\)銆傚鏋滃仛涓嶅埌锛屽垯杈撳嚭 Impossible銆�

Solution

鏃犺В鐨勫厖瑕佹潯浠舵槸鍘熶覆瀵圭О杞翠竴渚х殑鎵€鏈夊瓧姣嶅潎鐩稿悓锛屽鏋滄湁瑙e垯瑙d笉瓒呰繃 \(2\)
鐢� \(O(n^2)\) 鐨勬椂闂存楠岀瓟妗堟槸鍚﹀彲浠ヤ负 \(1\)
濡傛灉绛旀涓� \(2\)锛屽垯涓€瀹氭槸鍓笅涓や釜闀垮害涓� \(len\) 鐨勫垎鍒槸鍓嶅悗缂€鐨勫瓙涓诧紝鐩镐簰浜ゆ崲锛屼篃鍙互鑺� \(O(n^2)\) 鐨勬椂闂存楠�
锛堢粨璁轰篃澶浠欎簡鈥︹€︼級

[CF1110D] Jongmah

Description

浣犳墜涓婃湁 \(n\) 涓夯灏嗭紝姣忎釜楹诲皢涓婃湁涓€涓湪 \(1\) 鍒� \(m\) 鑼冨洿鍐呯殑鏁存暟 \(a_i\)銆備负浜嗚耽寰楁父鎴忥紝浣犻渶瑕佸皢杩欎簺楹诲皢鎺掑垪鎴愪竴浜涗笁鍏冪粍锛屾瘡涓笁鍏冪粍涓殑鍏冪礌鏄浉鍚岀殑鎴栬€呰繛缁殑銆傝姹傚嚭浣犳渶澶氬彲浠ュ舰鎴愬灏戜釜涓夊厓缁勩€�

Solution

杩炵画涓夊厓缁勭殑鏁扮洰鍦ㄥ皯浜庝笁涓椂鎵嶆槸蹇呰鐨勶紝澶т簬绛変簬涓変釜鏃跺彲浠ョ洿鎺ョ敤鐩稿悓涓夊厓缁勪唬鏇�
鍥犳璁� \(f[i][j][k]\) 琛ㄧず鑰冭檻瀹屼簡 \([1,i]\) 鐨勭墝骞朵笖涔熷彲鑳戒娇鐢ㄨ繃 \(i+1,i+2\) 鐨勭墝锛�\((i-1,i,i+1)\) 鐨勭粍鍚堟湁 \(j\) 涓紝\((i,i+1,i+2)\) 鐨勭粍鍚堟湁 \(k\) 涓紝姝ゆ椂鐨勬渶澶т笁鍏冪粍鏁版槸澶氬皯
杩欎竴娆″仛瀹屼互鍚庯紝i 灏卞交搴曚笉鑳界敤浜嗭紝鍥犳鎴戜滑瑕佸湪杩欓噷鍒ゆ柇 i 鏄惁澶熺敤锛屽鏋滀笉澶熺敤鍒欒繖绉嶇姸鎬佺洿鎺ラ潪娉曪紝濡傛灉澶熺敤灏辫浆绉�
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

缁欏畾涓や釜鏁板垪 \(c,t\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(i\)锛屼护 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\)锛岄棶杩涜鑻ュ共娆℃搷浣滃悗锛屾槸鍚﹁兘浣垮緱鏁板垪 \(c\) 鍜� \(t\) 鐩哥瓑銆�

Solution

鍒嗘瀽宸垎搴忓垪锛屽皢 \(c_{i-1},c_i,c_{i+1}\) 鍙樹负 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 鍚庯紝宸垎搴忓垪浠� \(c_i-c_{i-1},c_{i+1}-c_i\) 鍙樹负 \(c_{i+1}-c_i,c_{i}-c_{i-1}\)锛屽嵆宸垎搴忓垪鐨勭浉閭讳袱椤逛氦鎹簡銆�
鍥犳姣忔鎿嶄綔鐨勫疄璐ㄥ氨鏄氦鎹㈠樊鍒嗗簭鍒楃殑鐩搁偦涓ら」銆�
浜庢槸锛岃嫢鍘熷簭鍒楁弧瓒� \(c_1=t_1,c_n=t_n\)锛屾垜浠彧闇€瑕佹瘮杈冨樊鍒嗗簭鍒楃殑鍏冪礌澶氶噸闆嗘槸鍚︾浉绛夊嵆鍙€�

Description

$ n $ 涓柟鍧楁帓鎴愪竴鎺掞紝绗� $ i $ 涓鑹蹭负 $ c_i $銆傚畾涔変竴涓鑹茶仈閫氬潡 $ [l,r] $ 褰撲笖浠呭綋 $ l $ 鍜� $ r $ 涔嬮棿鎵€鏈夋柟鍧楃殑棰滆壊鐩稿悓銆傜幇鍦ㄤ綘鍙互閫夊畾涓€涓捣濮嬩綅缃� $ p $锛屾瘡娆″皢 $ p $ 鎵€鍦ㄩ鑹茶仈閫氬潡鐨勬墍鏈夋柟鍧楅鑹叉敼鎴愬彟涓€绉嶃€傝繖涓搷浣滃彲鑳藉皢澶氫釜棰滆壊鑱旈€氬潡鍚堝苟鎴愪竴涓€傞棶鏈€灏戣澶氬皯姝ワ紝鑳借 $ [1,n] $ 鍙樻垚涓€涓鑹茶仈閫氬潡銆�

$ 1\le n,c_i\le 5000 $

Solution

鍏堟妸搴忓垪 unique 涓€涓嬶紝浣垮緱鐩搁偦涓や釜浣嶇疆棰滆壊鎬讳笉鍚岋紝鐒跺悗鍖洪棿 DP
鑰冨療 \(c[i]\) 涓� \(c[j]\) 鏄惁鐩哥瓑锛屽鏋滅浉绛夊垯 \(f[i][j]\) 鐨勮浆绉绘潵婧愪负 \(f[i+1][j-1]\)锛屽惁鍒欒浆绉绘潵婧愬湪 \(f[i+1][j],f[i][j-1]\) 涓€夊彇

Description

鍧愭爣绯讳笂鏈変竴鍙皬鑸癸紝鐜板湪鎯充粠 $ (x_1,y_1) $ 鍘� $ (x_2,y_2) $銆傛瘡鏃跺埢閮芥湁椋庯紝浼氭妸鑸瑰線瀵瑰簲鐨勯鍚戝惞涓€涓崟浣嶏紙姣斿鍖楅浼氭妸鑸瑰線鍗楀惞锛夛紝椋庢槸寰幆鐨勶紝鍚瑰畬 $ s_1 \sim s_n $ 灏卞張浼氫粠 $ s_1 $ 寮€濮嬨€傝埞鍦ㄦ瘡涓€鏃跺埢閮藉彲浠ュ悜鎸囧畾鏂瑰悜绉诲姩涓€涓崟浣嶃€傛眰鑸瑰埌鐩殑鍦扮殑鏈€灏戞椂闂达紝濡傛灉涓嶈兘鍒拌揪杈撳嚭 -1銆�

Solution

瀹规槗璇佹槑鍏充簬鎬绘椂闂存弧瓒冲彲浜屽垎鎬�
鍒ゆ柇鏃讹紝鍔犱笂 \([mid/n]\) 涓懆鏈熷亸绉伙紝鍔犱笂 \(mid \bmod n\) 鐨勫崟鍋忕Щ鍚庯紝妫€鏌ユ浖鍝堥】璺濈鏄惁涓嶅ぇ浜� \(mid\) 鍗冲彲

[CF1117D] Magic Gems - 鐭╅樀涔樻硶浼樺寲dp

Description

涓€棰楅瓟娉曞疂鐭冲彲浠ュ垎瑙d负 m 棰楁櫘閫氬疂鐭筹紝榄旀硶瀹濈煶鍜屾櫘閫氬疂鐭抽兘鍗犳嵁 1 浣撶Н鐨勭┖闂淬€傜幇鍦ㄦ湁涓€澶у爢甯︾紪鍙风殑榄旀硶瀹濈煶锛屽彲浠ラ€夊嚭涓€閮ㄥ垎瀹濈煶锛岀劧鍚庢寚瀹氫竴绉嶄竴閮ㄥ垎榄旀硶瀹濈煶鍒嗚В锛屾眰鏈夊灏戠閫夊嚭浣撶Н涓� n 鐨勯泦鍚堢殑鏂规銆�\(n \le 10^{18}, m \le 100\)

Solution

璁� \(f[i]\) 琛ㄧず鐢ㄤ簡 \(i\) 涓崟浣嶇┖闂存椂鐨勬柟妗堟暟锛岃€冭檻鏈€鍚庝竴涓€夊嚭鐨勯瓟娉曞疂鐭虫槸鍚﹀垎瑙o紝浜庢槸鏈� \(f[i]=f[i-1]+f[i-m]\)锛岀敱浜� \(m\) 寰堝皬锛岀煩闃靛揩閫熷箓鍗冲彲

Description

缁欏畾 \(n\) 绉嶆湪妫嶏紝绗� \(i+1\) 绉嶆湁 \(a_i\) 涓紝闀垮害涓� \(2^i\)锛屾眰鐢ㄨ繖浜涙湪妫嶅彲浠�鍚屾椂鎷煎嚭澶氬皯涓笁瑙掑舰锛堜笉鍙噸澶嶄娇鐢ㄥ悓涓€鏍癸級

Solution

瀹规槗鍙戠幇涓夎褰竴瀹氳婊¤冻 \(ABB(A\le B)\) 鐨勭粨鏋勶紝浜庢槸鎴戜滑浠庡ぇ鍒板皬鑰冭檻鎵€鏈変緷娆℃墦鍖呮垚 \(BB\)锛屽鏋滄湁澶氫綑鐨勫氨鍙互褰撳仛 \(A\) 涓庝竴涓凡鏈夌殑 \(BB\) 鍖归厤锛岀瓟妗� \(+1\)锛涙渶鍚庡鏋滄湁娌℃湁鍖归厤瀹岀殑 \(BB\)锛屽垯鑷繁鎷嗘帀涓€浜� \(BB\) 鏉ュ尮閰嶏紝璁句釜鏁颁负 \(c\)锛屽垯绛旀 \(+[2c/3]\)

Description

缁欏畾涓€涓暱搴︿负 \(n (n \le 5000)\) 鐨勫瓧绗︿覆锛岃姹傚皢鍏跺垝鍒嗕负鑻ュ共娈点€傛瘡涓€娈佃涔堥暱搴︿负 \(1\)锛岃涔堟槸鏈涔嬪墠閮ㄥ垎鐨勫瓙涓层€傚墠鑰呬唬浠蜂负 \(a\)锛屽悗鑰呬唬浠蜂负 \(b\)锛屾眰鏈€灏忔€讳唬浠枫€�

Solution

璁� \(f[i]\) 琛ㄧず鍒掑垎瀹� \(s[1..i]\) 鐨勬渶灏忔€讳唬浠凤紝鍒欐湁

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

鑰冭檻鍒� \(f[]\) 鍏锋湁鍗曡皟鎬э紝鍥犳鍦ㄧ浜岀杞Щ涓紝\(j\) 涓€瀹氳灏藉彲鑳藉ぇ锛岃 \(LCS(i,j)\) 琛ㄧず \(s[1..i]\) 涓� \(s[1..j]\) 鐨勬渶闀垮叕鍏卞悗缂€锛屽垯鏈�

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

鑰� \(LCS(i,j)\) 鍙互寰堣交鏄撳湴鐢� SA 姹傚嚭锛屼簨瀹炰笂锛岀敱浜�

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

鍙互鍦� \(O(n^2)\) 鏃堕棿鍐呴澶勭悊鍑� \(LCS(i,j)\)锛屾晠鎬绘椂闂村鏉傚害涓� \(O(n^2)\)
鏈変袱涓鏁存暟搴忓垪 \(a,b\)锛岄暱搴﹀垎鍒负 \(n,m\)銆傜粰鍑烘墍鏈� \(a_i\) 鍜� \(b_j\) \((1\le i\le n,1\le j\le m)\) 鐨勫ぇ灏忓叧绯伙紙澶т簬锛屽皬浜庢垨鑰呯瓑浜庯級锛岃鏋勯€犲嚭绗﹀悎鏉′欢鐨� \(a\) 鍜� \(b\)銆傚鏋滄棤瑙o紝杈撳嚭 NO銆傚鏋滄湁澶氫釜瑙o紝杈撳嚭 \(a,b\) 涓渶澶у厓绱犳渶灏忕殑鏂规銆�

Solution

骞舵煡闆嗗皢鎵€鏈夌瓑浜庣殑鏁板悎骞惰捣鏉ワ紝鐒跺悗寤哄浘鎷撴墤鎺掑簭锛屾渶鍚� check 涓€涓嬫嫇鎵戞帓搴忕殑缁撴灉浠ユ鏌ユ槸鍚︽湁鐜�
缁欎綘涓€涓覆 \(s\)锛屾瘡娆″彲浠ヨ姳璐� \(1\) 鐨勪唬浠峰垹鍘讳竴涓瓙涓诧紝瑕佹眰瀛愪覆鐨勬瘡涓€浣嶄负鍚屼竴涓瓧绗︺€傛眰鍒犲幓鏁翠釜涓茬殑鏈€灏忎唬浠枫€�\(1\le |s|\le 500\)

Solution

璁� \(f[i][j]\) 琛ㄧず鍒犻櫎瀛愪覆 \([i,j]\) 鐨勬渶灏忚姳璐癸紝鍒�

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

鐜版湁 \(n\) 涓汉锛屾瘡涓汉閮芥湁鍚勮嚜鐨勮兘鍔涘€硷紝瑕佷綘鎶婁粬浠垎鎴� \(k\) 缁勶紙姣忕粍浜烘暟涓嶉檺锛夛紝浣垮緱姣忕粍涓换鎰忎袱涓汉鐨勮兘鍔涘€间箣宸笉瓒呰繃 \(5\)锛岄棶浣犳渶澶氬彲浠ユ妸澶氬皯浜哄垎鍒扮粍涓€�

Solution

璁� \(f[i][j]\) 琛ㄧず灏嗗墠 \(i\) 涓汉鍒嗘垚 \(j\) 娈碉紝涓旂 \(i\) 涓汉涓€瀹氳浣跨敤鏃剁殑鏈€澶ф€讳汉鏁�

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

鍏朵腑 \(l=lower\_bound(a[i]-5)-1\)

Description

缁欏畾涓€涓暱搴︿负 $ n $ 鐨� $ 1-n $ 鐨勫叏鎺掑垪锛岀 $ i $ 涓暟琛ㄧず绔欏湪绗� $ i $ 浣嶇殑瀛︾敓鐨勭紪鍙�

缁欏畾 $ m $ 瀵� $ (u,v) $锛屽鏋滅紪鍙� $ u $ 鐨勫鐢熷湪缂栧彿 $ v $ 鐨勫鐢熷墠闈竴浣嶏紝鍒欏彲浠ュ皢浠栦滑鐨勪綅缃簰鎹紝闂渶鍚庝竴涓鐢熻兘鍚戝墠绉诲姩澶氬皯浣�

Solution

浠庡彸寰€宸︽壂鎻忔墍鏈変綅缃紝灏嗘瘡涓綅缃笂鐨勪汉灏藉彲鑳藉湴鍚戝彸鎹㈠嵆鍙�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬暟缁勶紝鍏朵腑鏈変簺浣嶇疆鏈畾锛堝彲鍦� \([1,k]\) 涓换鎰忓彇鍊硷級锛岄棶鏈夊灏戠濉暟鐨勬柟妗堝彲浠ヤ娇寰楁暟缁勪腑涓嶅瓨鍦ㄩ暱搴︿负濂囨暟鐨勫洖鏂囧瓙涓层€�

Solution

鍗充笉瀛樺湪闀垮害涓� \(3\) 鐨勫洖鏂囦覆
鍗冲浠绘剰 \(i\) 鏈� \(a_i \neq a_{i+2}\)
鑰冭檻鍒嗗鍋朵綅澶勭悊锛屾柟妗堟暟鐩镐箻
浜庢槸杞寲涓虹浉閭讳袱浣嶄笉鐩稿悓鐨勬柟妗堟暟
鑰冭檻瀵逛簬姣忎竴娈佃繛缁殑 \(-1\) 鍒嗗埆澶勭悊
璁� \(f[i][0]\) 琛ㄧず闀垮害涓� \(i\) 鐨� \(-1\) 娈电殑宸﹁竟鍜屽彸杈圭殑鍏冪礌鐩稿悓鐨勬柟妗堟暟锛�\(f[i][1]\) 涓轰笉鍚岋紝鍒欐湁

\[f[i][0]=(k-1) \cdot f[i-1][1] \\ f[i][1]=(k-2)\cdot f[i-1][1] +f[i-1][0] \]

Description

鏈変竴涓簭鍒� \(a_1,a_2,a_3...a_n (n\le 1500)\)锛屽畾涔� \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\)锛屾壘鍒版渶澶х殑 \(k\) 浣垮緱 \((l_1,r_1)=...=(l_k,r_k)\) 涓斿尯闂� \([l_1,r_1]...[l_k,r_k]\) 浜掍笉鐩镐氦

Solution

寰堟毚鍔涚殑璐績闂
澶勭悊鍑烘瘡涓€涓瓙涓茬殑鍜岋紝璁板綍涓� \((l,r,sum)\) 鐨勫舰寮忥紝灏嗗畠浠寜鐓� \(sum\) 涓虹涓€鍏抽敭瀛楋紝\(r\) 涓虹浜屽叧閿瓧鎺掑簭
鐒跺悗瀵逛簬姣忎竴涓� \(sum\) 鐩稿悓鐨勬鍐咃紝缁忓吀璐績鍗冲彲

Description

\(n\) 涓煄甯傚拰 \(n-1\) 鏉¢亾璺€傛斂搴滃喅瀹氬悜杩欎簺鍏徃鍑哄敭閬撹矾銆傛瘡鏉¤矾閮藉睘浜庝竴瀹跺叕鍙搞€傚鏋滄湁涓€瀹跺叕鍙告嫢鏈変袱鏉℃垨涓ゆ潯浠ヤ笂鐨勮繘鍏ヨ繖涓煄甯傜殑閬撹矾锛岄偅涔堣繖涓煄甯傛槸涓嶅ソ鐨勩€傚笇鏈涜繖鏍蜂笉鍏钩鐨勫煄甯傛暟閲忎笉瓒呰繃 \(k\)锛岄偅涔堟渶灏戦渶瑕佸灏戝叕鍙革紵

Solution

绛旀鏄剧劧涓哄害鏁颁粠澶у埌灏忔帓搴忓悗鐨勭 \(k+1\) 涓紝鏋勯€犳柟妗堟椂璐績鍗冲彲

Description

缁欏畾闀垮害涓� \(n\) 鐨勬瘝涓插拰涓変釜瀛愪覆 \(s_1,s_2,s_3\)銆傚垵濮嬫椂瀛愪覆鍧囦负绌恒€�
鏈� \(q\) 娆¤闂€備綘闇€瑕佹敮鎸佷袱绉嶆搷浣滐細鍚戞煇涓瓙涓叉湯灏炬坊鍔犱竴涓瓧姣嶏紝鎴栬€呭垹鍘绘煇涓瓙涓叉湯灏剧殑瀛楁瘝銆�
鍦ㄦ瘡娆℃搷浣滃悗锛屼綘闇€瑕佸洖绛旓紝鏄惁鑳戒粠姣嶄覆涓垎绂诲嚭涓変釜涓嶇浉浜ょ殑瀛愬簭鍒楋紝婊¤冻杩欎笁涓瓙搴忓垪鎭板ソ鏄� \(s_1,s_2,s_3\)銆�
鍦ㄤ换鎰忔椂鍒伙紝\(s_1,s_2,s_3\) 鐨勯暱搴﹀潎涓嶄細瓒呰繃 \(250\)銆�
\(1 \le n \le 10^5\) , \(1\le q \le 10^3\)

Solution

璁� \(f[i][j][k]\) 琛ㄧず涓変釜瀛愪覆鍒嗗埆鍖归厤鍒颁簡绗� \(i,j,k\) 涓瓧绗︼紝鍦ㄦ瘝涓蹭腑鎺ㄨ繘鐨勬渶鐭窛绂�
璁� \(g[i][c]\) 琛ㄧず \(S[i..n]\) 鍐呭瓧绗� \(c\) 绗竴娆″嚭鐜扮殑浣嶇疆

\[f[i][j][k]=\left\{ \begin{aligned} & g[f[i-1][j][k]+1][s_1[i]] \\ & g[f[i][j-1][k]+1][s_2[j]] \\ & g[f[i][j][k-1]+1][s_3[k]] \end{aligned} \right. \]

鍒濆鏉′欢 \(f[0][0][0]=0\)锛屽叾浣欏垵鍊艰涓� \(+\infty\)
瀵逛簬鎻掑叆鎿嶄綔锛屾毚鍔涜绠楀嵆鍙紝姣忔 \(O(l^2)\)
瀵逛簬鍒犻櫎鎿嶄綔锛屽噺灏忎覆闀垮嵆鍙�
瀵逛簬璇㈤棶锛屾瘮杈� \(f[l_1][l_2][l_3]\) 鏄惁 \(\le n\) 鍗冲彲

Description

缁欏畾涓や釜姝f暣鏁� $ a,b $锛屾壘鍒伴潪璐熸暣鏁� $ k $ 浣� $ a+k $ 涓� $ b+k $ 鐨勬渶灏忓叕鍊嶆暟鏈€灏忥紝濡傛湁澶氳В杈撳嚭鏈€灏忕殑 $ k $

Solution

涓ゆ暟鐨勫樊濮嬬粓涓� \(b-a\)锛岃€屼袱鏁扮殑 \(gcd\) 蹇呯劧鏄� \(b-a\) 鐨勫洜鏁�
鍥犳鏋氫妇 \(b-a\) 鐨勫洜鏁颁綔涓� \(g\)锛岀劧鍚庢眰鍑鸿兘浣垮緱 \(g|(b+k)\) 鐨勬渶灏忕殑 \(k\)锛屽緢鏄剧劧姝ゆ椂涓€瀹氭弧瓒� \(g|(a+k)\)
鏈変竴涓敱鎵€鏈夐暱涓� \(2n\) 鐨勫悎娉曟嫭鍙峰簭鍒楃粍鎴愮殑 trie锛岀幇鍦ㄨ姹傝繖妫垫爲涓婃渶澶氱殑杈规暟锛岀鍚堣竟涓や袱涔嬮棿鍧囨病鏈夊叡鍚岃妭鐐广€�

Solution

棣栧厛璁炬牴鐨勬繁搴︿负 \(0\)锛屾垜浠彲浠ュ彧閫� trie 涓婃墍鏈夋繁搴︿负鍋舵暟鐨勭偣鍜岀埗浜茬殑杩炶竟锛屼簬鏄瓟妗堝氨鏄� trie 涓婃繁搴︿负濂囨暟鐨勭偣鐨勪釜鏁�
鐒跺悗灏辨槸涓€涓緢濂楄矾鐨� dp锛岃 \(f[i][j]\) 琛ㄧず鏈変簡 \(i\) 涓乏鎷彿锛�\(j\) 涓彸鎷彿鐨勬柟妗堟暟锛屽垯

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

浜庢槸绛旀涓�

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

涓轰簡鏂逛究璧疯鍙互鎶婂潗鏍囨暣浣� \(+1\)

Description

\(n\) 涓妭鐐逛互 \(1\) 涓烘牴鐨勪竴妫垫爲锛屾瘡涓潪鍙跺瓙鑺傜偣閮芥湁涓€涓搷浣� \(\max\) 鎴� \(\min\)锛岃〃绀鸿繖涓妭鐐逛腑鐨勫€煎簲璇ュ垎鍒瓑浜庡叾瀛愯妭鐐逛腑鎵€鏈夊€肩殑鏈€澶у€兼垨鏈€灏忓€笺€傚亣璁炬爲涓婃湁 \(k\) 涓彾鑺傜偣锛屼綘鍙互灏嗘瘡涓彾鑺傜偣濉笂 \([1,k]\) 鐨勬暟瀛楋紝涓旀瘡涓暟瀛楀彧浣跨敤涓€娆★紝姹傛牴鑺傜偣鐨勬渶澶у€笺€�

Solution

璁� \(f[p]\) 琛ㄧず \(p\) 鍦ㄥ叾瀛愭爲鍙跺瓙缁撶偣涓殑鏉冨€兼帓鍚嶇殑鏈€澶у€�
瀵逛簬鍙跺瓙缁撶偣锛�\(f=1\)
瀵逛簬 \(\min\) 缁撶偣锛�\(f[p]=\sum_{p\to q} f[q]\)
瀵逛簬 \(\max\) 缁撶偣锛�\(f[p]=\min_{p \to q} f[q]\)
缁欎綘涓€涓湪鏁拌酱涓婄殑鐐归泦 \(x_1, x_2, \dots, x_n\)銆� 姣忎袱涓偣 \(i\)锛�\(j\) 鍙互鍦ㄦ弧瓒充互涓嬫儏鍐电殑鏃跺€欑浉杩�: 鐐� \(i\) 鍜岀偣 \(j\) 鍧囨湭涓庡叾浠栫偣鐩歌繛锛�\(\left| x_i - x_j \right| \geq z\)銆傞偅涔堣浣犳眰鍑烘渶澶氬彲浠ヨ繛鎺ュ灏戠偣瀵癸紵

Solution

鍙屾寚閽堜竴閬嶅嵆鍙�
涓嶇煡閬撹繖涓鎬庝箞璇勭殑鍒�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬帓鍒� \(p\)锛屾眰鏈夊灏戝尯闂� \([l,r]\) 婊¤冻 \(p[l]+p[r]=max\{p[i]\}\)锛屽叾涓� \(l \le i \le r\)

Solution

鍗曡皟鏍堥澶勭悊鍑烘瘡涓厓绱犵殑鎺у埗鍖洪棿锛堜互瀹冧负鏈€澶у€肩殑鍖洪棿锛�
鏋氫妇鏈€澶у€间綅缃� \(i\)锛屼簬鏄� \(l \in [l[i],i], r \in [i,r[i]]\)
鑰冨療涓や釜鍖洪棿鐨勯暱搴︼紝鍦ㄥ皬鐨勯偅涓腑鏋氫妇锛屽垯鍙渶瑕佹鏌ュ樊鏄惁鍦ㄥぇ鍖洪棿涓嚭鐜�
鐢ㄦ帓鍒楃殑閫嗘潵妫€鏌ワ紝鍊� \(x\) 鍦� \(p_l,...,p_r\) 涓嚭鐜帮紝鍗� \(l \le I_x \le r\)锛屽叾涓� \(I\) 鏄� \(p\) 鐨勯€�
鏄剧劧姣忎釜鍏冪礌琚灇涓炬鏁扮殑涓婄晫涓� \(O(\log n)\)锛屼簬鏄椂闂村鏉傚害涓� \(O(n \log n)\)

Description

缁欏嚭涓や釜鏁存暟 $ n \(,\) k $ 浣犻渶瑕佹瀯閫犲嚭涓€涓湁 \(k\) 椤圭殑鏁板垪 $ A $ 婊¤冻浠ヤ笅鏉′欢锛�

  • 瀵逛簬浠绘剰鐨� $ i\in [1,k] $ 鏈� $ A_i>0 $
  • 瀵逛簬浠绘剰鐨� $ i\in (1,k] $ 搴斿綋鏈� $ A_{i-1}<A_i\le2A_{i-1} $
  • $ \sum\limits_{i=1}^kA_i=n $

Solution

棣栧厛鎴戜滑鍙互鏋勯€犱竴涓瓑宸暟鍒� \(a_i=i\)锛屽鏋滄鏃� \(s>n\) 鍒欏繀鐒舵棤瑙�
鑰冭檻鍏堝姣忎釜浣嶇疆鍔犱笂 \([\frac {n-s} k]\)锛屽墿涓� \((n-s) \bmod k\) 瑕佸姞
鑰冭檻鍒� \(k\) 寰堝皬锛屾垜浠粠鍙冲線宸︿緷娆℃灇涓句綅缃紝姣忔鏆村姏鍔犱竴涓悗缂€锛屽€掑簭寰幆 \(+1\) 鍗冲彲

Description

杈撳叆 \(n\) 涓暟,鏋勯€犱竴涓渶澶х殑鐜紝鐜笂浠绘剰 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)銆�\(a_i \le 2 \times 10^5\)

Solution

涓€瀹氳鎵句竴娈� \(l,l+1,l+2,...,r\)锛屽叾涓櫎浜� \(l,r\) 鍙互鍙嚭鐜颁竴娆′互澶栵紝鍏跺畠鐨勯兘鑷冲皯瑕佸嚭鐜颁袱娆�
鑰冭檻鍒� \(a_i \le 2\times 10^5\)锛岀敤妗跺鐞嗕竴涓嬪嵆鍙�

Description

鍦ㄤ竴涓钩闈㈢洿瑙掑潗鏍囩郴涓紝缁欎綘 $ n(2鈮鈮�50) $ 涓偣鐨勫潗鏍囥€傝繖 $ n $ 涓偣涓紝姣忎袱涓偣涔嬮棿閮芥湁涓€鏉�鐩寸嚎锛堟敞鎰忎笉鏄嚎娈碉級 鐩歌繛銆傛眰锛氳繖浜涚洿绾夸腑锛屾湁澶氬皯瀵圭洿绾跨浉浜ゃ€�
1.褰撳鐐瑰叡绾挎椂锛屼笉璁や负鐢辫繖鍑犱釜鐐逛骇鐢熺殑鐩寸嚎鏈変氦鐐癸紱

2.澶氭潯鐩寸嚎浜や簬涓€鐐规椂锛�骞朵笉浠h〃杩欏嚑鏉$洿绾垮湪杩欎釜鐐圭浉浜ゆ椂鍙骇鐢熶竴涓氦鐐�锛岃€屾槸姣忎袱鏉$洿绾块兘瑕佺粺璁′竴娆°€�

Solution

鐔熸倝涓€涓嬫澘瀛愶紙杩欓涓轰粈涔堟湁1900锛燂級
缁欏畾鐢� \(n\) 涓暣鏁扮粍鎴愮殑闆嗗悎 \(A\)銆傜幇缁欏畾 \(m\) 缁勯泦鍚堬紝姣忎釜闆嗗悎 \(S_i\) 閮芥槸 \(A\) 鐨勪竴涓湡瀛愰泦锛堣繖閲岀殑闆嗗悎鎻忚堪涓� \(A\) 涓厓绱犱笅鏍囬泦鍚堬級锛屾眰鏄惁瀛樺湪闆嗗悎 \(A\) 浣垮緱瀵� \(\forall_{1 \leq i \leq m}\) 涓嶇瓑寮� \(LCM(S_i) > LCM(A - S_i)\) 鎭掓垚绔嬨€�

Solution

濡傛灉瀛樺湪涓や釜闆嗗悎娌℃湁浜ら泦锛岃涓� \(S,T\)锛屽垯 \(LCM(S)> LCM(A-S) \ge LCM(T)\)锛岀牬鍧忎簡瀵圭О鎬э紝鍒欎竴瀹氭棤瑙�
鍚﹀垯鎴戜滑缁欐瘡涓泦鍚堝畨鎺掍竴涓川鏁� \(p_i\)锛岃鐢ㄨ繃鐨勬墍鏈夎川鏁伴泦鍚堜负 \(P\)锛岃 \(\prod S\) 鏄暣鏁伴泦鍚� \(S\) 鐨勫箍涔夌Н锛岄偅涔堝浜庨泦鍚� \(i\)锛屽叾 \(LCM\) 涓� \(\prod P\)锛岃€屽叾琛ラ泦涓€瀹氫笉澶т簬 \(\prod P-\{ p_i \}\)锛屼簬鏄竴瀹氬瓨鍦ㄨВ
缁欏嚭 \(01\) 涓� \(s\)锛屾眰鏁板 \([l,r]\) 涓暟锛屼娇寰楄兘鎵惧埌鑷冲皯涓€瀵� \(x,k\)锛屼娇 \(1\le x,k \le |s|\) 涓� \(l\le x<x+2k \le r\) 涓�\(s[x]=s[x+k]=s[x+2k]\)

Solution

鑰冭檻涓€涓毚鍔涳紝瀵逛簬鎵€鏈夌殑 \(l\)锛屾毚鍔涙壘鍒版渶灏忕殑鑳芥弧瓒虫潯浠剁殑 \(r\)
瀹规槗璇佹槑 \(r\) 鏄叧浜� \(l\) 鍗曡皟鐨勶紝浜庢槸鍊掑簭鎵弿 \(l\) 鍗冲彲
缁欏畾涓€鍦嗭紝涓婂潎鍖€鍒嗗竷鏈� \(n\) 涓妭鐐癸紙涓嶉噸鍚堬紝浠� \(1\) 鍒� \(n\) 缂栧彿锛夈€傚畠浠寜鐓ц緭鍏ヨ繛鎴愪竴妫垫爲銆傛眰鍚堟硶鏍戠殑鏂规鎬绘暟锛屽 \(998244353\) 鍙栨ā銆備竴妫垫爲鏄悎娉曠殑锛屽綋涓斾粎褰撹繖妫垫爲涓棤浜ゅ弶鐨勮竟锛堜袱杈瑰叡鐢ㄤ竴绔偣闄ゅ锛夈€�

Solution

鎬濊矾涓婄被浼兼爲褰� dp 鍚�
瀵逛簬鐐� \(p\) 鐨勫瓙鏍戯紝瀹冨湪鎺掑垪涓繀瀹氭槸涓€娈佃繛缁殑鍖洪棿锛屽惁鍒欏氨浼氬拰鍏跺畠鐨勫瓙鏍戠浉浜�
涓嶅Θ璁� \(p_1=1\)锛岃鐐� \(i\) 鐨勫害鏁颁负 \(d_i\)锛屼粠鏍� \(1\) 寮€濮嬶紝鎴戜滑鍙互浠绘剰鍐冲畾鍚勪釜瀛愭爲涔嬮棿鐨勯『搴忥紝鐒跺悗閫掑綊涓嬪幓
浜庢槸绛旀涓� \(n \prod_{i=1}^n d_i!\)

Description

缁欎袱涓暟 $ n $ 鍜� $ x $锛屾瀯閫犱竴涓弧瓒充互涓嬫潯浠剁殑搴忓垪锛�

  • 瀵逛换浣曞簭鍒椾腑鐨勫厓绱� $ a_i \(锛�\) 1\le a_i<2^n $
  • 搴忓垪涓病鏈夐潪绌鸿繛缁瓙搴忓垪寮傛垨鍜�涓� $ 0 $ 鎴� $ x $
  • 搴忓垪闀垮害 $ l $ 搴旇鏈€澶�

Solution

鏋勯€犲墠缂€鍜屽簭鍒� \(s_i = \oplus_{j=1}^i a_i\)锛屾瘡娆℃毚鍔涙壘涓€涓� \([1,2^n)\) 鐨勬暟锛屼娇寰� \(s_i\) 娌℃湁鍑虹幇杩囧嵆鍙�
涓ゆ暟鍒� \(a , b\)锛屽鏋� \(a_i\) 鏄礌鏁帮紝閭d箞 \(b\) 鏁板垪閲屾坊鍔犱笂绗� \(a_i\) 涓礌鏁帮紙\(2\) 涓虹涓€涓級锛屽鏋滀笉鏄礌鏁帮紝閭d箞 \(b\) 鏁板垪閲屾坊鍔犱笂 \(a_i\) 鐨勬渶澶у洜瀛愩€傜幇鍦ㄧ粰鍑烘坊鍔犲畬涔嬪悗鐨� \(b\) 鏁板垪锛屾眰鍑� \(a\) 鏁板垪銆�

Solution

浠庡ぇ鍒板皬鏋氫妇鍚堟暟锛屽垹鍘诲畠鐨勬渶澶у洜瀛�
浠庡皬鍒板ぇ鏋氫妇璐ㄦ暟 \(p\)锛屽垹鍘荤 \(p\) 涓川鏁�

Description

搴忓垪 \(123456789101112131415161718192021222324252627282930313233343536...\) 鏄棤绌锋棤灏界殑,鐜板湪浣犺杈撳嚭瀹冪殑绗� \(k\) 椤广€�\(k \le 10^{12}\)

Solution

鍒嗘澶勭悊

  • 鎵惧埌绛旀鎵€鍦ㄦ暟鐨勪綅鏁�
  • 鎵惧埌绛旀鎵€鍦ㄦ暟鍦ㄥ綋鍓嶄綅鏁颁腑鎺掔鍑�
  • 鎵惧埌绛旀鍦ㄧ瓟妗堟墍鍦ㄦ暟鏄鍑犱綅

Description

涓€闈㈠浗鏃楀彲浠ユ娊璞′负涓€涓� $ n\times m (n,m \le 1000)$ 鐨勭煩褰紝姣忎竴涓綅缃湁涓€涓鑹层€傝繖涓煩褰㈢敱鑷笂鑰屼笅涓夋潯妯悜鐨勯鑹插甫缁勬垚锛屾瘡涓€鏉¢鑹插甫瀹藉害鐩哥瓑锛岃€屼笖鐩搁偦涓や釜棰滆壊甯﹂鑹蹭笉鑳界浉鍚屻€傜幇鍦ㄤ綘鏈変竴涓� $ n\times m $ 鐨勭煩褰紝浣犻渶瑕佽绠楀叾涓兘澶熺О涓哄浗鏃楃殑瀛愮煩褰㈡暟閲忋€�

Solution

棰勫鐞� \(f[i][j]\) 琛ㄧず浠ュ厓绱� \((i,j)\) 涓洪《绔紝鍦ㄦ弧瓒抽鑹茬浉鍚岀殑鏉′欢涓嬶紝鑳藉悜涓嬪欢浼哥殑鏈€闀胯窛绂�
鐒跺悗璁$畻浠ユ瘡涓偣涓哄彸涓婅鐨� Flag 鏁伴噺
瀵逛簬鍗曞垪鐨勫垽鏂紝鍙渶瑕佷娇鐢ㄥ嚑涓潯浠跺嵆鍙紝鍒ゅ畾浣嶇疆 \(i+3d-1\) 鍚堟硶锛屽苟涓� \(i+d,i+2d\) 鐨� \(f\) 鍊兼弧瓒虫潯浠�
鑰冭檻澶嶅垪锛屽鏋滅 \(j\) 鍒椾笌绗� \(j-1\) 鍒楃殑棰滆壊瀵瑰簲鐩稿悓锛屽苟涓斿欢浼告暟绗﹀悎鏉′欢锛屽垯灏嗚鏁板櫒 \(+1\)锛屽惁鍒欏皢璁℃暟鍣ㄧ疆 \(1\)
锛堢敤濂介鐩潯浠舵潵鏋勯€犵畻娉曪紝绠€鐩村お濡欎簡锛�

Description

缁欏畾 \(m\) 涓煄甯傦紝姣忓勾浼氶€夋嫨涓€涓煄甯備妇鍔炴瘮璧涳紝鐜板湪缁欏嚭鍓� \(n\) 骞翠妇鍔炴瘮璧涚殑鎯呭喌銆傚湪鎺ヤ笅鏉ョ殑骞翠唤涓紝姣忓勾鐨勬瘮璧涗細鍦ㄤ妇鍔炴瘮璧涙鏁版渶灏忕殑鍩庡競涓惧姙锛屽鏋滄湁澶氫釜鏈€灏忓€硷紝鍒欏厛鍦ㄧ紪鍙锋渶灏忕殑鍩庡競涓惧姙銆傛湁 \(q\) 涓闂紝姣忎釜璇㈤棶缁欏畾涓€涓� \(k\)锛岄棶绗� \(k\) 骞村湪鍝釜鍩庡競涓惧姙姣旇禌銆�

Solution

鑰冭檻绂荤嚎澶勭悊锛屽皢璇㈤棶鎺掑簭锛岀淮鎶や竴涓泦鍚堣〃绀哄綋鍓嶈疆鍙互涓惧姙鐨勫煄甯傜殑缂栧彿闆嗗悎锛屾瘡娆¢€氳繃鏆村姏 kth 鏉ユ壘绛旀锛岃繖鏍烽渶瑕佺敤骞宠 鏍戠淮鎶わ紝鑰冭檻鏄惁鏈夋洿绠€鍗曠殑鍋氭硶
鍓� \(n\) 鍦烘瘮璧涙瘡涓€鍦洪兘浼氭伆濂戒娇寰楀悗闈㈢殑涓€鍦烘瘮璧涜璺宠繃锛屾垜浠彧闇€瑕佹眰鍑鸿璺宠繃鐨勬瘮璧涚殑鏃跺埢鍗冲彲
鍏堜笉鑰冭檻琚烦杩囩殑姣旇禌涔嬮棿鐨勭浉浜掍綔鐢紝璁惧墠 \(n\) 鍦轰腑鐨勭 \(i\) 鍦虹殑涓惧姙鍦扮偣鏄� \(x\)锛屽墠 \(i\) 鍦轰腑鍦� \(x\) 涓惧姙鐨勫満鏁版槸 \(c[x]\)锛屽垯瀵艰嚧鐨勮璺宠繃鐨勬瘮璧涚殑鍘熸湁鏃跺埢涓� \(m\cdot c[x]+x - 1\)
鐢变簬璺宠繃鐨勬瘮璧涗箣闂翠細鐩镐簰褰卞搷锛屾垜浠笉濡ㄥ厛璁颁负 \(a[i]=m \cdot c[x] + x\)锛屽湪瀵规墍鏈夋瘮璧涜繘琛屾帓搴忓悗锛屼护 \(a[i]=a[i]-i\)锛屽嵆寰楀埌浜嗘瘡娆¤烦杩囩殑鏃堕棿
鏈€鍚庢眰瑙g瓟妗堟椂锛屽彧闇€瑕佷簩鍒嗕竴涓嬶紝鍑忓幓 \(a[i] \le k-n\) 鐨勪釜鏁板嵆鍙�

Description

浣犳湁涓€涓暱搴︿负 $ n \le 100 $ 鐨勫瓧绗︿覆銆傚浜庝竴涓暱搴︿负 $ m $ 鐨勫瓙搴忓垪锛岄€夊嚭瀹冪殑鑺辫垂鏄� $ n-m $锛屼篃灏辨槸浣犻渶瑕佸垹鎺夌殑瀛楃鏁伴噺銆備綘鐨勪换鍔℃槸閫夊嚭 $ k $ 涓�鏈川涓嶅悓鐨勫瓙搴忓垪锛屼娇寰楁€昏姳璐规渶灏忋€傝緭鍑鸿繖涓渶灏忚姳璐广€傚鏋滈€変笉鍑� $ k $ 涓紝杈撳嚭 $ -1 $銆�

Solution

璁� \(pre[i]\) 琛ㄧず \(i\) 鐨勫墠椹变綅缃紝璁� \(f[i][j]\) 琛ㄧず鍓� \(i\) 涓瓧绗︼紝闀垮害涓� \(j\) 鐨勬湰璐ㄤ笉鍚屽瓙涓茬殑鏁伴噺锛屽垯

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

缁欏嚭涓€涓� \(n\times m\) 鐨勭煩闃碉紝浣犲彲浠ユ瘡娆℃寜鐓у瓧姣嶉『搴忔坊鍔犳í鍚戞垨绾靛悜鐨勪竴鏉¢摼锛岃繖鏉¢摼浼氭槸 a~z 杩� \(26\) 涓皬鍐欏瓧姣嶄腑鐨勪竴涓紝骞朵笖浼氳鐩栧師鏉ョ殑閾俱€傜幇鍦ㄧ粰鍑轰竴涓搷浣滃悗鐨勭煩闃碉紝瑕佹眰鍥炵瓟鏄惁鍙兘褰㈡垚杩欑鎯呭喌锛屼笖姣忔潯閾炬槸浠庡摢涓偣鍒板摢涓偣銆�

Solution

鍊掑簭澶勭悊锛屽皢瀛楁瘝涓€灞備竴灞傚墺寮€锛屽悓鏃惰褰曞墠灞備腑鐣欎笅鏉ョ殑鈥滄棤鍏斥€濅綅缃紝鍗宠浣嶇疆鐢变簬鍏堝墠琚鐩栵紝鐜板湪鍙湁鍙棤
浜庢槸鎴戜滑瀵逛簬褰撳墠瀛楁瘝 c锛屾壘鍒� c 瀛楁瘝鐨勫洓杈圭晫锛屾鏌ヨ繖鏄惁鏄竴鏉$洿閾撅紝濡傛灉涓嶆槸鍒欓€€鍑�
濡傛灉鏄紝鍒欐鏌ヨ繖鏉$洿閾捐寖鍥村唴鍔犱笂鏃犲叧瀛楁瘝鏄惁鑳藉~婊★紝濡傛灉涓嶈兘鍒欓€€鍑�
缁欏畾涓€妫� \(n\) 涓偣鐨勬爲锛屽垵濮嬪叏鏄櫧鐐癸紝瑕佹眰浣犲仛 \(n\) 姝ユ搷浣滐紝姣忎竴娆¢€夊畾涓€涓笌涓€涓粦鐐圭浉闅斾竴鏉¤竟鐨勭櫧鐐癸紝灏嗗畠鏌撴垚榛戠偣锛岀劧鍚庤幏寰楄鐧界偣琚煋鑹插墠鎵€鍦ㄧ殑鐧借壊鑱旈€氬潡澶у皬鐨勬潈鍊笺€傜涓€娆℃搷浣滃彲浠ヤ换鎰忛€夌偣銆傛眰鍙幏寰楃殑鏈€澶ф潈鍊笺€�

Solution

鏄剧劧濡傛灉閫夊畾浜嗗紑濮嬬偣锛岄偅涔堢瓟妗堝氨鏄浐瀹氱殑
璁惧紑濮嬬偣涓烘牴锛屽垯绛旀涓烘墍鏈夊瓙鏍戠殑澶у皬鍜�
璁句互 \(i\) 涓烘牴鐨勭瓟妗堜负 \(f[i]\)
鍒欐樉鐒舵湁 \(f[v]-f[u] = n-2s[v]\)
涓ゆ DFS 鍗冲彲

[CF1188B] Count Pairs - 鏁板

Description

缁欏畾涓€涓川鏁� \(p\) , 涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a_1,a_2,...,a_n\)鍜屼竴涓暣鏁� \(k\)锛屾眰鎵€鏈夋暟瀵� \((i, j) (1 \le i,j \le n)\) 涓弧瓒� \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 鐨勪釜鏁般€�

Solution

鍥犱负 \(p\) 鏄川鏁帮紝鎵€浠ヤ换鎰忛潪闆跺厓绱犳湁閫嗗厓锛屽洜姝や箻娉曡繍绠楁弧瓒虫秷鍘诲緥
杩欐牱鎴戜滑灏卞彲浠ュ湪鍘熷紡鐨勪袱渚у悓鏃朵箻涓婁竴涓� \(a_i-a_j\)锛屽寲绠€寰楀埌 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)

[CF11D] A Simple Task - 鐘舵€佸帇缂ヾp

Description

姹傜畝鍗曟棤鍚戝浘鐨勭幆鏁般€�

Solution

閽﹀畾鏈€灏忕紪鍙风殑鐐规槸姣忎釜鐜殑璧风偣锛岃繖鏍锋壘鐜氨鍙樻垚浜嗘壘鐜矾
璁� \(f[s][i]\) 琛ㄧず閬嶅巻杩囩殑鐐归泦涓� s锛屽綋鍓嶇偣涓� i 鐨勮矾寰勬暟
杞Щ鏃跺垽瀹氫竴涓嬬姸鎬佺殑 Lowbit 鍜屾柊鐐圭殑鍏崇郴鍗冲彲
鏈� \(n\) 涓崟璇嶏紝鎯虫妸杩欎釜 \(n\) 涓崟璇嶅彉鎴愪竴涓彞瀛愶紝鍏蜂綋鏉ヨ灏辨槸浠庡乏鍒板彸渚濇鎶婁袱涓崟璇嶅悎骞舵垚涓€涓崟璇嶏紝鍚堝苟涓や釜鍗曡瘝鐨勬椂鍊欙紝瑕佹壘鍒版渶澶х殑 \(i(i\ge 0)\)锛屾弧瓒崇涓€涓崟璇嶇殑闀垮害涓� \(i\) 鐨勫悗缂€鍜岀浜屼釜鍗曡瘝闀垮害涓� \(i\) 鐨勫墠缂€鐩哥瓑锛岀劧鍚庢妸绗簩涓崟璇嶇 \(i\) 浣嶄互鍚庣殑閮ㄥ垎鎺ュ埌绗竴涓崟璇嶅悗闈紝杈撳嚭鏈€鍚庨偅涓崟璇嶃€�

Solution

鍓嶇紑閰嶅悗缂€锛屾兂鍒� KMP
姣忔鏋勯€犱竴涓緟鍖归厤涓插湪鍓嶏紝宸插尮閰嶄覆鍦ㄥ悗鐨勪覆锛岃绠楄繖涓覆鏈€鍚庝竴浣嶇殑 \(next\) 鍊煎氨鏄湰娆″尮閰嶇殑瀹藉害
娉ㄦ剰宸插尮閰嶄覆鐨勯暱搴︽渶澶氬彧闇€瑕佹埅鍙栧埌寰呭尮閰嶄覆鐨勯暱搴﹀嵆鍙�
鏈変竴涓� \(n\times m\) 鐨勭綉鏍硷紝鏂规牸涓婃湁 \(k\) 涓疂钘忥紝涓€涓汉浠� \((1,1)\) 鍑哄彂锛屽彲浠ュ悜宸︽垨鑰呭悜鍙宠蛋锛屼絾涓嶈兘鍚戜笅璧般€傜粰鍑� \(q\) 涓垪锛屽湪杩欎簺鍒椾笂鍙互鍚戜笂璧帮紝鍏朵粬鍒椾笉鑳藉悜涓婅蛋銆傚彲浠ラ噸澶嶇粡杩囧悓涓€涓偣銆傛眰浠� \((1,1)\) 鍑哄彂锛岀粡杩囨墍鏈夊疂钘忕殑鏈€鐭矾寰勯暱搴︺€�\(n,m,k,q\leq 2\times 10^5\)

Solution

璁� \(f[i][0/1]\) 琛ㄧず浠� \((0,0)\) 璧板埌 \(i\) 琛岀殑宸︿晶/鍙充晶锛屽苟閬嶅巻浜� \(1 \to i-1\) 琛岀殑鎵€鏈夊疂鐗╃殑鏈€鐭矾寰勯暱搴�
锛堟尯鎬曡繖绉嶉鐨勶級

Description

缁欎綘涓€涓暟 $ n $锛屾眰鍑轰竴涓湁 $ n $ 涓瓙搴忓垪涓� $ 1337 $ 鐨勫簭鍒楋紝搴忓垪闀垮害涓嶈兘澶т簬 $ 10^5 $銆�

Solution

鑰冭檻 1 + n涓�3 + m涓�7
鍒欐柟妗堟暟涓� \(\frac {mn(n-1)} 2\) 绉嶏紝涓嶄竴瀹氳兘鐢�
浜庢槸鑰冭檻 133 + k7 + (n-2)3 + m7
鍒欐柟妗堟暟涓� \(\frac {mn(n-1)} 2 +k\) 绉�
涓嶅Θ鍙� \(n=300\)锛岀劧鍚庢毚鍔涘皾璇� \(m\) 骞惰绠� \(k\)锛屾渶鍚庨€夋嫨涓€涓彲琛岀殑鍗冲彲

[CF1203F1] Complete the Projects - 涓撮」浜ゆ崲鎺掑簭

Description

鎵撶 i 鍦烘瘮璧涢渶瑕� ai 鐨� rating锛屾墦瀹岀 i 鍦烘瘮璧涘悗 rating change 鏄� bi锛宺ating 蹇呴』闈炶礋銆傛眰鏄惁瀛樺湪椤哄簭鑳藉畬鎴愭墍鏈夐」鐩€�\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

涓撮」浜ゆ崲鎺掑簭
瀵逛簬 bi > 0 鐨勯儴鍒嗭紝鏄剧劧鎸� ai 鎺掑簭
鍚﹀垯锛屾寜 ai+bi 鎺掑簭鍗冲彲

鍋囧 1,2锛屽垵鎬佷负 r锛屾鏃惰姹� r>=a1, r>=a2-b1锛岃嫢浜ゆ崲锛屽垯 r>=a2, r>=a1-b2锛屼簬鏄垜浠笇鏈� max(a1,a2-b1)<=max(a2,a1-b2)
浜庢槸 a2+b2>=a1+b1
## [CF1204D2] Kirk and a Binary String - 鎬濈淮 ### Description 缁欏畾涓€涓� 01 涓诧紝瑕佷綘姹傚嚭鍙︿竴涓暱搴︾浉绛変覆浣垮緱浠绘剰鍖洪棿鍐呮渶闀夸笉闄嶅瓙搴忓垪鐨勯暱搴︿笌鍘熶覆鐩哥瓑涓� 0 鐨勬€绘暟灏介噺澶氥€� ### Solution 鎴戜滑瑕佸皢涓€浜� 1 鏀规垚 0锛屽皢鏌愪竴涓� 1 鏀规垚 0 鐨勬潯浠舵槸瀹冨悗闈㈢殑 0 鐨勪釜鏁颁笉灏戜簬 1 鐨勪釜鏁帮紝杩欎釜鏉′欢淇濊瘉浜嗚繖娆′慨鏀逛笉浼氬奖鍝嶆纭€� 鍦ㄨ繖涓潯浠朵笅锛屾垜浠椽蹇冨湴淇敼锛屽€掑簭鎵弿鏁翠釜搴忓垪锛岃兘淇敼灏变慨鏀�
鎷彿搴忓垪瑙嗚锛�0 鐪嬫垚宸︽嫭鍙凤紝1 鐪嬫垚鍙虫嫭鍙凤紝閭d箞鏈€闀夸笉闄嶅瓙搴忓垪灏辨槸鏈€闀跨殑鍙互鍖归厤鐨勫瓙鎷彿搴忓垪闀垮害锛岃繖鏍风悊瑙h捣鏉ヤ細寰堟竻妤�
鏈� $n(n\leq 10^5)$ 涓暟 $a_1,...,a_n\ (a\leq 10^{18})$ 銆傛湁涓€涓浘鐢ㄨ繖涓柟娉曠敓鎴愶紝鑻� $a_i$ 鎸変綅涓� $a_j$ 涓嶄负 $0$锛屽垯鍦� $a_i,a_j$ 闂磋繛涓€鏉℃棤鍚戣竟銆傛眰杩欎釜鍥剧殑鏈€灏忕幆锛岃嫢鏃犵幆杈撳嚭 $-1$銆� ### Solution 鎶� $a_i=0$ 鐨勬暟瀛楀垹鎺� 褰� $n \ge 128$ 鏃讹紝鑷冲皯鏈変竴涓簩杩涘埗浣嶆弧瓒宠浣嶄负 $1$ 鐨勬暟涓暟 $\ge 3$锛屽嵆褰㈡垚涓夊厓鐜� 褰� $n<128$ 鏃讹紝鏆村姏寤哄浘鍚庣敤 Floyd 璺戞渶灏忕幆鍗冲彲 ## [CF1207F] Remainder Problem - 鏍瑰彿鍒嗘不 ### Description 缁欎綘涓€涓暱搴︿负 $500000$ 鐨勫簭鍒楋紝鍒濆€间负 $0$ 锛屼綘瑕佸畬鎴� $q$ 娆℃搷浣滐紝鎿嶄綔鏈夊涓嬩袱绉嶏細
  • 1 x y : 灏嗕笅鏍囦负 \(x\) 鐨勪綅缃殑鍊煎姞涓� \(y\)
  • 2 x y : 璇㈤棶鎵€鏈変笅鏍囨ā \(x\) 鐨勭粨鏋滀负 \(y\) 鐨勪綅缃殑鍊间箣鍜�

Solution

鏍瑰彿鍒嗘不锛岃 \(b=\sqrt{500000}\)锛岄偅涔堟垜浠鎵€鏈� \(r \le b\) 缁存姢 \(sum[r][i]\) 琛ㄧず涓嬫爣妯� \(r\) 绛変簬 \(i\) 鐨勬墍鏈変綅缃殑绛旀鍜�
姣忔淇敼鏃讹紝鍋囪杩欎釜浣嶇疆鐨勬柊鍊兼槸 x锛岄偅涔堟垜浠渶瑕佸鎵€鏈� \(r \le b\)锛屽湪 \(sum[r][x\%r]\) 鐨勪綅缃慨鏀癸紝鍚屾椂淇敼鏃т綅缃�
璇㈤棶鏃讹紝濡傛灉 \(x \le b\) 閭d箞鐩存帴璋冨嚭缁撴灉锛屽惁鍒欐毚鍔涙煡璇㈠師濮嬪簭鍒�

Description

鐜板湪鏈変竴涓粠 $ 1 $ 鍒� $ n $ 鐨勪竴涓叏鎺掑垪,浣嗘槸浣犱笉鐭ラ亾杩欎釜鎺掑垪鍒板簳鏄粈涔�,浣嗘槸浣犳湁涓€涓� $ sum[i] $,鍏朵腑 $ sum[i] $ 琛ㄧず $ \sum_{j=1}^{i-1}(a_j<a_i)?a_j:0 $,鐜板湪缁欎綘 $ sum $ 鏁扮粍,璁╀綘姹傚嚭杩欎釜鎺掑垪 $ a $

Solution

棣栧厛鎵惧埌鏈€闈犲悗鐨� \(0\)锛屽皢杩欎釜浣嶇疆 \(s\) 璧嬪€间负 \(\infty\)锛�\(a\) 璧嬪€间负 \(1\)锛屽悓鏃跺皢瀹冨悗闈㈡墍鏈夌殑 \(s-1\)锛岄噸澶嶄笅鍘诲嵆鍙�
鐢ㄧ嚎娈垫爲缁存姢
鏈� \(n\) 澶╂椂闂存潵涔颁竴绉嶇墿鍝侊紝涓€鍏辫涔� \(k\) 浠讹紝绗� \(i\) 澶╁彲浠ヨ喘涔扮殑鑼冨洿鏄� \([a_i,b_i]\)锛屽崟浠� \(c_i\)锛屾眰鏈€灏忔€昏姳璐�

Solution

鏆村姏璐績锛屼粠鏈€渚垮疁鐨勫紑濮嬩拱鍗冲彲
鍐欏畬鎵嶅彂鐜板師棰樿姹傜敤 Kotlin锛屾垜褰撳仛娌$湅瑙佷簡
涓昏鏄€熺潃杩欓璇曠敤浜嗕竴涓� lambda 琛ㄨ揪寮�
缁欏畾涓や釜闀垮害涓� \(2\) 鐨勪覆锛屼綘闇€瑕佹瀯閫犱竴涓暱搴︿负 \(3n\) 鐨勪覆锛屼娇寰� a,b,c 涓夌瀛楁瘝鍚勫嚭鐜� \(n\) 娆★紝涓斿畠涓嶅寘鍚繖涓や釜涓诧紝瀛楃闆嗕腑浠呮湁 a,b,c

Solution

鐢诲嚭杞Щ鍥撅紝\(3\) 涓偣锛�\(7\) 鏉¤竟锛屽彲鑳戒笉杩為€�
浣嗘槸寰堝鏄撹瘉鏄庝互涓嬫瀯閫犳ā寮忛泦鍙互瀵规墍鏈夋湁瑙g殑鎯呭喌缁欏嚭鍚堟硶鐨勬瀯閫�
锛堜互 \(n=2\) 涓轰緥锛�

aabbcc
aaccbb
bbaacc
bbccaa
ccaabb
ccbbaa
abcabc
acbacb
bcabca
bacbac
cabcab
cbacba

浜庢槸鎴戜滑鐢ㄦ瘡绉嶆ā寮忔瀯閫犱竴涓覆锛屾楠屾槸鍚﹀悎娉曞嵆鍙�
缁欎綘涓€涓湁 \(n\) 涓偣鐨勫甫鏉冩爲锛屾湁 \(m\) 涓煡璇紝姣忔鏌ヨ鏈€澶ф潈鍊间笉澶т簬 \(x\) 鐨勭偣瀵圭殑鏁扮洰

Solution

妯℃嫙 Kruskal 鐨勮繃绋嬶紝骞跺皢鏁翠釜杩囩▼鐨勭瓟妗堣褰曚笅鏉�
璇㈤棶 \(x\) 鐨勬椂鍊欙紝浜屽垎鎵惧埌鏈€鍚庝竴涓� \(\le x\) 鐨勪綅缃紝杈撳嚭杩欎釜鏃跺埢鐨勭瓟妗堝嵆鍙�
缁欎綘 \(d_i (\le n)\)锛岃姹備綘鏋勯€犱竴妫垫爲婊¤冻鐐� \(2i\) 涓� \(2i-1\) 璺濈涓� \(d_i\)銆�

Solution

鍏抽敭鍦ㄤ簬杩欎釜绁炲鐨� \(d \leq n\)
鎸夌収 \(d_i\) 浠庡ぇ鍒板皬鎺掑簭锛屽苟涓斿皢鎵€鏈夊鏁扮偣涓叉垚涓€鏉¢摼
渚濇鑰冭檻姣忎釜鍋舵暟鐐规寕鍦ㄥ摢閲�
瀵逛簬閾句笂绗� \(k\) 涓偣锛屽畠鐨勫伓鏁扮偣搴旇琚寕鍦� \(k+d_i-1\) 涓偣鐨勪笅闈�
濡傛灉绗� \(k+d_i-1\) 鏄摼涓婃渶鍚庝竴涓偣锛屽氨闇€瑕佸啀鎸備竴涓偣鏉ヨ繘琛屾墿鍏�
鍙互璇佹槑琚寕鐨勭偣涓€瀹氬瓨鍦�
铏界劧鍒嗙被璁ㄨ搴旇鏄瘮杈冩帹宕囩殑瑙f硶锛屼絾鏄垜灏辨槸鍠滄鏆村姏
缁欎竴涓湁鍚戝浘鐫€鑹诧紝浣垮緱娌℃湁涓€涓幆鍙湁涓€涓鑹诧紝闇€瑕佹渶灏忓寲浣跨敤棰滆壊鐨勬暟閲忋€�

Solution

濡傛灉鍥句腑娌℃湁鐜紝閭d箞鏄剧劧鍙渶瑕佷竴绉嶉鑹�
濡傛灉鍥句腑鏈夌幆锛屽垯灏� DFS 鏍戜腑鎵€鏈夋í鍙夎竟鍜屾爲杈规煋鎴� \(1\)锛岃繑绁栬竟鏌撴垚 \(2\) 鍗冲彲锛屾晠鍙渶瑕佷袱绉嶉鑹�
\(n\times m\) 鐨勭綉鏍间腑锛屽湪绗� \(i\) 琛� \(j\) 鍒楁湁 \(a[i][j]\) 涓场娉★紝姣忔鍙互鏀跺壊涓€琛屾垨涓€鍒楃殑娉℃场锛屾渶澶氭敹鍓� \(4\) 娆★紝闂渶澶氬彲浠ユ敹鍓插埌澶氬皯娉℃场銆�\(nm \leq 10^5\)

Solution

璁ㄨ绛旀鐨勫悇绉嶆儏鍐�

  • 鍥涜锛岃繖绉嶆儏鍐典笅鐩存帴姹傚拰鍙栧墠 \(4\) 涓渶澶у€煎嵆鍙�
  • 涓夎涓€鍒楋紝鏋氫妇鍙栧摢涓€鍒楋紝鐒跺悗姣忔鏆村姏鎻愬彇鍓� \(3\) 涓鏈€澶у€�
  • 涓よ涓ゅ垪锛屾樉鐒� \(n,m\) 涓繀鏈変竴涓� \(\leq \sqrt{10^5}\)锛岃瀹冩槸琛岋紝鍒欐毚鍔涙灇涓鹃€夊摢涓よ锛岀劧鍚庝粛鐒舵寜鐓у墠杩版柟娉曡绠楃瓟妗堝嵆鍙�

鍏朵綑鎯呭喌鍙互鐢变笂闈笁绉嶅熀鏈儏鍐垫棆杞緱鍒�
澶嶆潅搴� \(\mathcal{O} (nm \min(n,m))\)

[CF1220C]

Description

缁欏畾涓€涓瓧绗︿覆 \(S\) 锛� 鍚屾椂缁存姢涓€涓尯闂� \([l,r]\) 銆傝疆娴佹搷浣滐紝姣忔鍙互鎵╁睍鍒颁竴涓柊鍖洪棿浣垮緱鍘熷尯闂存槸鏂板尯闂寸殑鐪熷瓙鍖洪棿锛屽苟涓斿瓧鍏稿簭鏇村皬锛屼笉鑳芥搷浣滅殑浜鸿緭銆傚垵鎬佸尯闂翠负 \([k,k]\) 锛屼綘闇€瑕佸 \(k=1,2,...,|S|\) 鍒ゆ柇鑳滆礋鎬с€�

Solution

寰堝鏄撳彂鐜版父鎴忔渶澶氱帺涓€杞紝鎵€浠ュ彧闇€瑕佸垽鏂瘡涓瓧姣嶄箣鍓嶆湁娌℃湁鏇村皬鐨勫瓧姣嶅氨鍙互浜嗐€�
鏈� \(n\) 涓暟鐨勫簭鍒楋紝姣忔鎿嶄綔鍙互閫夋嫨涓€绉嶆暟锛屽皢浠栦滑鍏ㄩ儴绉诲埌寮€澶存垨缁撳熬锛岄棶鏈€灏戦渶瑕佸灏戞鎿嶄綔锛屾墠鑳戒娇搴忓垪鍙樹负闈為€掑噺搴忓垪銆�

Solution

灏嗘瘡绉嶆暟鍑虹幇鐨勬渶宸︽渶鍙充綅缃涓鸿繖涓暟鐨勫嚭鐜颁綅缃尯闂�
浜庢槸鎴戜滑瑕佹壘鑻ュ共涓€艰繛缁笅闄嶇殑鍖洪棿锛屽苟涓斾綅缃粠宸﹀埌鍙充緷娆℃帓甯冿紝浜掍笉鐩镐氦
绂绘暎鍖栧悗棰勫鐞嗗嚭鍖洪棿锛岀劧鍚庢壂涓€閬嶅嵆鍙�
缁欏畾涓€寮犲浘锛屽垽瀹氬畠鏄惁鏄畬鍏ㄤ笁鍒嗗浘銆�

Solution

鑰冭檻鍒版渶缁堝垝鍒嗗埌鍚屼竴闆嗗悎涓殑鐐癸紝瀹冧滑鐨勭洿鎺ュ彲杈剧偣閮芥槸鐩稿悓鐨�
浜庢槸鎴戜滑璁板綍姣忎釜鐐圭殑鐩存帴鍙揪鐐归泦鍚堬紝鎺掑簭锛岀劧鍚庡垎娈�
濡傛灉涓嶆槸涓夋锛屽垯涓嶅瓨鍦�
鍚屾椂瑕侀鍏堢瓫鍘绘湁瀛ょ珛鐐圭殑鎯呭喌
鏈変袱涓瓧绗︿覆 \(S,T\)銆傛瘡娆℃搷浣滃彲浠ュ皢 \(S\) 涓煇涓瓧绗︾Щ鍒板紑澶存垨缁撳熬銆傝嫢鎯宠 \(S=T\) 锛屽垯闇€瑕佺殑鏈€灏戞搷浣滄鏁版槸澶氬皯銆�\(Q \leq 100, n\leq 100\)

Solution

鑰冭檻璐績锛屾垜浠鎵句竴涓覆锛屽畠鏄� \(S\) 鐨勫瓙搴忓垪锛�\(T\) 鐨勫瓙涓诧紝骞朵笖闀垮害鏈€澶�
浜庢槸鎴戜滑鏆村姏鏋氫妇杩欎釜涓插湪 \(T\) 涓殑寮€澶翠綅缃紝鐒跺悗鎵竴閬� \(S\) 鍗冲彲

CF1234F Yet Another Substring Reverse

Description

缁欏畾涓€涓瓧绗︿覆锛屽彲浠ヤ换鎰忕炕杞竴涓瓙涓诧紝姹傛渶缁堟弧瓒虫墍鏈夊瓧绗︿簰涓嶇浉鍚岀殑瀛愪覆鐨勬渶澶ч暱搴︺€�
鏁版嵁鑼冨洿锛� \(n \le 10^6, \Sigma \le 20\)

Solution

鐢变簬琚炕杞瓙涓茬殑閫夋嫨鏄换鎰忕殑锛屾垜浠彲浠ュ皢鏈€缁堢殑瀛愪覆鐪嬩綔涓や釜鍘熶覆鐨勫墠缂€鐨勫悗缂€鐨勬嫾鍚堛€傜敱浜庨鐩殑鍚勭鎬ц川锛屾垜浠彧闇€瑕佽€冭檻鎵€鏈夊瓙涓叉瀯鎴愮殑瀛楃闆嗙殑鎵€鏈夊彲鑳界姸鎬侊紝鑰屼笌浣嶇疆鏃犲叧銆�
鑰屽瓧绗﹂泦鐨勭姸鎬佷緷鐒惰姹備笉鑳芥湁閲嶅瀛楃锛屽洜姝ゅ浜庢瘡涓€涓綅缃殑瀛楃锛屼互瀹冪粨灏剧殑瀛愪覆鏈€澶氬彧鏈� \(\Sigma\) 涓槸鍚堟硶鐨勶紝鍥犳鎴戜滑鐘跺帇骞� \(O(n\Sigma)\) 鎵竴閬嶅嵆鍙鐞嗗嚭瀛楃闆嗙殑鎵€鏈夌姸鎬併€�
鍘熼棶棰樿姹傜殑鏄袱涓簰鏂ョ殑瀛楃闆� \(P,Q\) 锛岀浉褰撲簬鎶婂瓧绗﹂泦鍒掑垎涓哄绔嬬殑涓ら儴鍒� \(A,B\)锛� 骞跺彇浠绘剰 \(P \subset A, Q \subset B\) 銆傛垜浠� \(O(\Sigma 2^\Sigma)\) 棰勫鐞嗗嚭瀛愰泦鍓嶇紑鍜岋紝鏆村姏鏋氫妇杩欑瀵圭珛鐨勫垝鍒嗭紝鍗虫灇涓惧瓙闆嗭紝鍗冲彲鍦� \(O(2^\Sigma)\) 鏃堕棿璁$畻鍑虹瓟妗堛€�

Code

[CF1236D] Alice and the Doll

Description

\(N \times M\)缃戞牸锛屾湁 \(K\) 涓牸瀛愰噷鏈夐殰纰嶇墿銆傛瘡娆$粡杩囦竴涓牸瀛愮殑鏃跺€欏彧鑳界洿璧版垨鑰呭彸杞竴娆°€傚垵鎬佸湪 \((1,1)\) 鏍煎瓙鍚戜笂銆傛眰鏄惁瀛樺湪涓€鏉¤矾寰勭粡杩囨墍鏈夋棤闅滅鏍煎瓙鎭板ソ涓€娆°€�

Solution

鏈€浼樼殑璧版硶鏄亣鍒伴殰纰嶆垨鑰呰竟鐣屽氨鍙宠浆锛屽惁鍒欑洿璧般€�
璧拌繃涓€鎺掓牸瀛愮浉褰撲簬鎸姩杈圭晫绾裤€�
杩欎袱涓粨璁轰粩缁嗗搧鍛宠捣鏉ュ緢鎸烘湁娣卞害鐨勩€�
鐒跺悗鏆村姏妯℃嫙灏卞彲浠ヤ簡锛屾壘闅滅鐗╃殑杩囩▼鍙互鐢� set 浼樺寲銆�
杩欓鐨勫潗鏍囩郴濂藉儚鏈夌偣濂囨€紝SB鐨勬垜灏辫繖涔堟悶鍙嶅潗鏍嘩A浜嗕竴鍙戙€傜劧鍚庡繕璁板紑longlong鍙圵A浜嗕竴鍙戙€�

Code

缁欏畾涓€涓� \(n \times m\) 鐨勬柟鏍煎浘锛屾瘡涓牸瀛愬彲浠ヨ鏌撴垚榛戣壊鎴栫櫧鑹诧紝涓斾笌鍏剁浉閭荤殑鏍煎瓙锛堜笂锛屼笅锛屽乏锛屽彸锛変腑鑷冲鍙湁涓€涓笌鍏堕鑹茬浉鍚屻€傛眰鏂规鏁般€�

Solution

渚濈█璁板緱褰撳勾鍦ㄧ儹韬禌涓婄鍒拌繖涓锛屽ぇ瀹堕兘璇存槸 CF 鍘熼锛岀劧鍚庢垜璺簡鈥︹€�
瀵逛簬 \((i,j)\)锛屽鏋滃畠宸︺€佸乏涓娿€佷笂鐨勯鑹茬‘瀹氾紝閭d箞杩欎釜鏍煎瓙鐨勯鑹插氨纭畾浜�
浜庢槸鎴戜滑鏋氫妇 \((1,1)\) 鐨勯鑹诧紝鐒跺悗灏嗙涓€琛岀涓€鍒楃殑棰滆壊纭畾涓嬫潵锛岃繖鏃跺€欒鍒楁樉鐒剁浉浜掔嫭绔�
瀵逛簬琛岋紝绛旀鐩稿綋浜庝竴涓� \(1/2\) 鎺掑垪鍒掑垎锛屽浜庡垪鍚岀悊锛屼簬鏄瓟妗堜负

\[2(F_n+F_m-1) \]

鏈変竴寮犲畬鍏ㄥ浘锛�\(n\) 涓妭鐐癸紝鏈� \(m\) 鏉¤竟鐨勮竟鏉冧负 \(1\)锛屽叾浣欑殑閮戒负 \(0\)锛岃繖 \(m\) 鏉¤竟浼氱粰浣犮€傞棶浣犺繖寮犲浘鐨勬渶灏忕敓鎴愭爲鐨勬潈鍊笺€�

Solution

灏� \(1\) 杈硅涓轰笉瀛樺湪锛岄偅涔堟渶鍚庣殑绛旀灏辨槸 \(0\) 杈瑰舰鎴愮殑杩為€氬潡鏁� \(-1\)
椤哄簭鎵弿鎵€鏈夌偣锛屽浜庣偣 \(i\)锛屾灇涓剧敱 \([1,i-1]\) 宸茬粡褰㈡垚鐨勯泦鍚� \(j\)锛屽鏋� \(i\) 鍚� \(j\) 杩炵殑杈规暟灏忎簬 \(j\) 鐨勫ぇ灏忥紝閭d箞灏辫〃鏄庝竴瀹氭湁 \(0\) 杈癸紝浜庢槸灏� \(i\) 鎵€鍦ㄩ泦鍚堜笌闆嗗悎 \(j\) 鍚堝苟

Description

鏈� \(n\) 鍦烘瘮璧涳紝鍏� \(p\) 鍒嗭紝鑳滃埄涓€鍦哄緱 \(win\) 鍒嗭紝骞冲眬涓€鍦哄緱 \(draw\) 鍒嗭紝杈撲竴鍦哄緱 \(0\) 鍒嗐€傜粰瀹� \(n,p,win,draw (win,draw \le 10^5)\)锛屾瀯閫犲悎娉曠殑鑳滃钩璐熷満娆℃暟閲� \(x,y,z\) 鎴栬€呭垽瀹氭棤瑙c€�

Solution

鏄剧劧鎴戜滑瑕佹眰婊¤冻 \(x+y \le n, win\cdot x + draw \cdot y = p\) 鐨勬渶灏忕殑 \(x+y\) 鐨勯潪璐熺殑 \(x,y\)銆�
鍏堣€冭檻姹傚嚭浠绘剰涓€缁勫彲琛岃В銆傜敱浜� \(win \le 10^5\)锛屽洜姝� \(0 \le y < win\) 涓竴瀹氭湁涓€涓弧瓒虫潯浠剁殑 \(y\)锛屽洜姝ゆ垜浠彧闇€瑕佹毚鍔涙灇涓� \(y\) 灏卞彲浠ユ壘鍒颁竴涓彲琛岀殑 \(y\)銆�
鐜板湪鍋囪宸茬粡寰楀埌鐨勫彲琛岃В涓� \(x',y'\)锛屾垜浠€冭檻濡備綍璁� \(x+y\) 鏈€灏忓寲銆�
璁� \(g=\text{gcd}(win,draw)\)锛屽垯 \(y+win/g, x-draw/g\) 鍗冲彲鎵惧埌涓€缁勬柊鐨勫彲琛岃В锛屾鏃� \(x+y\) 鐨勫彉鍖栭噺涓� \(win/g - draw/g\)銆�
濡傛灉杩欎釜鍊� \(>0\)锛岄偅涔堟垜浠氨鎿嶄綔 \(\frac {x} {draw/g}\) 娆★紝杩欐椂 \(x+y\) 杈惧埌鏈€灏忋€�
鏈変竴涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鎿嶄綔鍙互浣垮叾涓殑涓€涓暟 \(+1\) 鎴� \(-1\)銆傛搷浣滄鏁颁笉寰楀ぇ浜� \(k\)锛岄棶 \(MAX-MIN\) 鐨勬渶灏忓€兼槸澶氬皯銆�

Solution

璐績锛岃€冭檻鍒板彧鏈夋渶澶у€煎拰鏈€灏忓€煎缁撴灉鏈夊奖鍝嶏紝鎴戜滑姣忔姣旇緝鏈€澶у€煎拰鏈€灏忓€肩殑涓暟锛屽姩灏忕殑閭d竴杈�
涓轰簡鍔犻€燂紝姣忔鍔ㄦ渶灏忓€兼椂锛岀湅鏄惁鑳藉皢瀹冧慨鏀逛负娆″皬锛屽鏋滀笉鑳藉垯缁撴潫锛屾渶澶у€煎悓鐞�
缁欏畾 \(n\) 涓偣 \((n\leq2000)\)锛屽湪绗� \(i\) 涓偣涓婂缓绔嬩竴涓熀绔欓渶瑕� \(c_i\) 鐨勪唬浠凤紝杩炴帴涓や釜鐐归渶瑕� \((|x_i-x_j|+|y_i-y_j|)(k_i+k_j)\) 鐨勪唬浠枫€傚浜庝竴涓偣瑕佷箞寤虹珛鍩虹珯锛岃涔堣繛鎺ュ缓绔嬪熀绔欑殑鐐广€傞棶鏈€灏忎唬浠锋槸澶氬皯锛屽悓鏃惰緭鍑哄缓绔嬪熀绔欑殑鐐瑰拰绾胯矾銆�

Solution

杩欎釜涓囧勾鑰侀鍒板簳琚嚭杩囧灏戦亶浜嗗晩
缁欏畾 \(n\) 鏉$嚎娈碉紝瑕佹眰鍘绘帀鏈€灏戠殑绾挎锛屼娇寰椾换鎰忎竴涓暣鏁扮偣琚鐩栫殑娆℃暟閮戒笉瓒呰繃 \(k\)

Solution

鍏堢鏁e寲锛岃€冭檻璐績锛屾寜宸︾鐐规帓搴忥紝渚濇鎵弿锛屾瘡閬囧埌涓€涓尯闂村氨鍔犲叆鍫嗭紝鍫嗘寜鍙崇鐐瑰ぇ椤讹紝濡傛灉褰撳墠浣嶇疆閲嶆暟 \(>k\)锛屽氨浠庡爢涓彇鍑哄彸绔偣鏈€澶х殑鍖洪棿鍒犻櫎鍗冲彲

Description

鍏徃鏈� $ n $ 鍚嶅憳宸ュ拰 $ k $ 涓洟闃燂紝姣忎釜鍛樺伐浠呭睘浜� $ 1 $ 涓洟闃燂紝姣忎釜鍥㈤槦鑷冲皯鏈� $ 1 $ 鍚嶅憳宸ャ€傚洟闃熺紪鍙蜂粠 $ 1 $ 鍒� $ k $銆�
缁欏嚭 $ n $ 涓暟瀛楋細$ t_1,t_2,\dots,t_n \(锛�\) t_i $ 琛ㄧず绗� $ i $ 涓憳宸ュ睘浜庣 $ t_i $ 涓洟闃熴€�
璇ュ叕鍙搁泧浣d簡涓€杈嗙彮杞︼紝杩欒締鐝溅灏嗕細寰€杩斿娆℃壙杞藉憳宸ュ幓鍙傚姞瀹翠細锛屾瘡涓€娆″彲浠ユ壙杞� $ 1 $ 涓洟闃熸垨鑰� $ 2 $ 涓洟闃燂紝涓旀瘡涓€涓洟闃熶笉鑳藉垎绂伙紝蹇呴』鍦ㄥ悓涓€娆¤溅涓娿€�
杩欒締杞﹀彲浠ユ壙杞� $ s $ 涓憳宸ワ紝$ s $ 鍙互涓轰换鎰忓€笺€�
鍋囪閫氳繃 $ r $ 娆¤繍杈擄紝鎵€鏈夌殑鍛樺伐閮藉埌杈惧浼氱洰鐨勫湴浜嗭紝璇ュ叕鍙搁渶瑕佹敮浠� $ sr $ 鍏�(鍙湁 $ 1 $ 杈嗙彮杞�)銆傜幇鍦ㄨ浣犺绠� $ rs $ 鐨勬渶灏忓€笺€�

$ 1\le n \le 5\times 10^5,1 \le k \le 8000 $

Solution

棰樼洰鍙姹� \(O(k^2)\) 鍋氭硶锛屼簬鏄垜浠灇涓� \(s\)锛岀劧鍚庢毚鍔涜椽蹇冩楠屽嵆鍙�
娉ㄦ剰鏋氫妇鐨� \(s\) 鐨勫彇鍊硷紝鍋囪 \(a\) 鏈夊簭锛岄偅涔� \(s \in \{ a_1+a_k,a_2+a_{k-1},\dots \}\)
鏈変笁涓簭鍒� \(a.b.c\)锛屾瘡娆℃搷浣滃彲浠ユ妸涓€涓簭鍒椾腑鐨勪竴涓暟绉诲姩鍒板彟涓€涓簭鍒椾腑锛岄棶鏈€灏戞搷浣滃嚑娆″悗锛屽彲浠ヤ娇寰� \(a\) 搴忓垪閲岀殑鎵€鏈夋暟灏忎簬 \(b\) 閲岄潰鐨勬墍鏈夋暟锛�\(b\) 閲岄潰鐨勫皬浜� \(c\) 閲岄潰鐨勩€�

Solution

浠庣粨鏋滃€掕繃鏉ヨ€冭檻锛屽亣璁句笁涓簭鍒楀悇鑷湁搴忥紝閭d箞鍙互淇濇寔涓嶅姩鐨勯儴鍒嗗氨鏄笁涓簭鍒楄繛鍦ㄤ竴璧风殑鏈€闀夸笂鍗囧瓙搴忓垪
璁捐涓€涓彧鏈変竴琛岀殑鎵撳瓧鏈猴紝杩欎竴琛岀殑闀垮害鏄棤闄愬ぇ锛屼竴寮€濮嬪彲浠ヨ涓烘瘡涓瓧绗﹂兘鏄┖銆傛偍鐨勬墦瀛楁満鏈変竴涓厜鏍囧彧鎸囧悜涓€涓瓧绗︼紝涓€寮€濮嬫寚鍚戞渶宸︿晶鐨勫瓧绗︺€備娇鐢ㄨ€呮湁涓夌鎿嶄綔锛歀 灏嗗厜鏍囧悜宸︾Щ涓€鏍硷紙褰撳厜鏍囧凡缁忓湪鏈€宸︿晶鏃讹紝蹇界暐杩欐鎿嶄綔锛夛紝R 灏嗗厜鏍囧悜鍙崇Щ涓€鏍硷紝涓€涓皬鍐欏瓧绗︽垨鑰�'(',')' 灏嗗綋鍓嶅瓧绗︽浛鎹负缁欏畾瀛楃銆傛偍闇€瑕佸湪姣忔鎿嶄綔鍚庯紝鍒ゆ柇杩欎竴琛屾槸鍚︽槸鍚堟硶鎷彿搴忓垪锛屼笉鏄緭鍑� -1锛屽惁鍒欒緭鍑烘渶澶氬祵濂楁暟銆�

Solution

棰勫厛鏋勯€犲嚭瀹屾暣闀垮害鐨勫簭鍒楋紝鎵€鏈変綅缃缃负绌虹姸鎬侊紝鎸夋椂闂撮『搴忓鐞嗘墍鏈夋搷浣�
灏� ( 瑙嗕负 \(1\)锛宍)` 瑙嗕负 \(-1\)锛屽叾瀹冭涓� \(0\)锛岀嚎娈垫爲缁存姢鍓嶇紑鍜屾渶澶у€笺€佹渶灏忓€间笌鍖洪棿鍜�

Description

缁欎綘 \(a\) 涓� \(0\)锛�\(b\) 涓� \(1\)锛�\(c\) 涓� \(2\)锛�\(d\) 涓� \(3\)锛岃姹傛帓鎴愪竴涓暱搴︿负 \(a+b+c+d\) 鐨勬暟鍒楋紝鐩搁偦涓や釜宸殑缁濆鍊间负 \(1\)锛屽苟杈撳嚭浠讳竴鏂规銆�

Solution

鍒嗗埆鏋勯€犻浣嶇疆涓� \(0,1,2,3\) 鐨勬儏鍐碉紝瀵逛簬姣忎釜浣嶇疆锛屽敖閲忓厛璐浣� \(-1\)锛屼笉婊¤冻鐨勮瘽璐浣� \(+1\)
鑳界粫寮€鍚勭鐗瑰垽鍋氳繖閬撻锛岃繕鏄尯浼橀泤鐨� 馃槂
鐜版湁 \(n\) 涓汉锛屾湁 \(m\) 瀵规瑺鍊哄叧绯伙細\(d(a,b)\) 琛ㄧず \(a\) 娆� \(b\ d(a,b)\) 鍏冦€傜幇瑕佺粰鍑轰竴涓渶缁堢殑娆犲€哄叧绯伙紝浣垮緱 \(\sum d\)鏈€灏忋€�

Solution

鍙渶瑕佽褰曟瘡涓偣杈撳嚭鍜岃緭鍏ョ殑鎬婚噺锛屾璐熷悇鎴愪竴閮紝鐒跺悗姝i儴鍚戠潃璐熼儴鍋氱被浼煎尮閰嶇殑鎿嶄綔鍗冲彲

Description

浣犵殑鎵嬫満涓婃湁 $ n $ 锛�$ 1 $ $\le n $ $\le 2 \times 10^6 $锛変釜杞欢锛屽叾涓 $ i $ 涓蒋浠剁殑绫诲瀷涓� $ c_i $锛屼綘闇€瑕佸湪鍙互鑷敱閫夋嫨姣忛〉澶у皬 \(s\) 鐨勬儏鍐典笅锛屾眰鍑烘渶灏忕殑椤电爜鏁伴噺 $ k $锛屼娇寰楁瘡涓€椤甸兘瑁呮弧鎴栧彧绌轰竴涓紝骞朵笖姣忎竴椤电殑鎵€鏈夎蒋浠剁被鍨嬮兘鐩哥瓑锛屾眰鏈€灏忕殑椤电爜 $ k $銆�

Solution

棣栧厛锛屽浜庣‘瀹氱殑 \(s\) 鍜屾煇绉嶇殑涓暟 \(c\)锛屽鏋滄弧瓒� \(c \in [x(s-1),xs]\)锛屽垯鍙互鐢� \(x\) 鍧楀睆骞曡涓嬪畠
瀵逛簬

\[x(s-1) \le c \le xs \]

鍙樺舰涓�

\[l=\frac c s \le x \le \frac c {s-1}=r \]

濡傛灉鍏朵腑鐨勭‘鍖呭惈涓€涓暣鏁帮紝鍗� \(x'=\lceil l \rceil \le r\)锛屽彇 \(x=x'\) 鍗冲彲
浜庢槸鍙互绠€鍖栦负 \(x=[\frac {c-1} s]+1\)锛屽啀鍒╃敤涓婃柟鏉′欢杩涜鍚堟硶鎬ф鏌�
浜庢槸鎴戜滑鑰冭檻鏆村姏鏋氫妇姣忛〉澶у皬锛屼絾鏄瘡椤靛ぇ灏忔槸涓嶈兘瓒呰繃绉嶇被鏁版渶灏忓€� \(+1\) 鐨�
璁剧绫绘暟涓� \(p\)锛屽垯澶嶆潅搴︿负 \(O(p \min(c))=O(p \frac n p)=O(n)\)
缁欏嚭涓€涓笉瑙勫垯鐨勭綉鏍笺€傚叡 \(n \leq 300000\) 鍒楋紝姣忓垪鏈� \(a_i\) 涓牸瀛愩€傜幇鍦ㄨ灏� \(1 \times 2\) 鐨勯鐗屼笉閲嶅彔鐨勮鐩栧湪缃戞牸涓婏紝姹傛渶澶氳兘鏀剧殑楠ㄧ墝鏁伴噺銆�
CF 题解汇总

Solution

鐢变簬鍙湁涓€涓仈閫氬潡锛岀瓟妗堝氨鏄粦鐧芥煋鑹插悗锛岄粦鑹茬偣鏁板拰鐧借壊鐐规暟鐨勮緝灏忓€�
璧峰垵浣犳湁 \(k\) 涓叺锛屼綘闇€瑕佹寜椤哄簭鏀诲崰 \(n\) 搴у煄鍫°€備负浜嗗崰棰嗙 \(i\) 搴у煄鍫★紝浣犻渶瑕佽嚦灏� \(a_i\) 涓+鍏碉紝澹叺涓嶄細姝伙紝鏀诲崰鎴愬姛鍚庝綘鍙互鑾峰緱 \(b_i\) 涓+鍏点€傛敾鍗犲畬涓€搴у煄鍫′綘鍙互娲惧嚭鑷冲皯涓€涓叺椹诲畧鏉ヨ幏寰楄繖搴у煄鍫$殑鍒嗘暟 \(c_i\)锛屼綘鍙互鍦ㄤ綘鏀诲崰瀹屽煄鍫� \(i\) 鍚庣珛鍗虫淳鍏典笅杞︼紝鎴栬€呭湪鏈夊悜鍥句笂閫氬悜杩欎釜鐐圭殑鐐瑰娲惧叺涓嬭溅銆備綘闇€瑕佸湪淇濊瘉鑳芥敾鍗犳墍鏈夊煄鍫$殑鍓嶆彁涓嬶紝鏈€澶у寲浣犵殑寰楀垎銆�\(n \leq 5000, m\leq 3\times 10^5\)锛岄槦浼嶄腑鐨勪汉鏁版棤璁哄浣曚笉浼氳秴杩� \(5000\)

Solution

瀵逛簬鍩庡牎 \(i\)锛屽鏋滆瀵瑰畠娲惧叺锛岄偅涔堜竴瀹氫細鍦ㄦ渶鍚庝竴涓兘鍚戜粬娲惧叺鐨勫湴鏂规淳鍏�
浜庢槸鎴戜滑鍙渶瑕佽€冨療鍏朵腑鐨� \(n\) 鏉¤竟鍗冲彲
璁� \(f[i][j]\) 琛ㄧず鍦ㄧ \(i\) 涓煄鍫″锛岃繕鍓� \(j\) 涓+鍏电殑鏈€澶ф敹鐩�
绫讳技 \(01\) 鑳屽寘鐨勬毚鍔涜浆绉�
瀹氫箟 \(f(x)=[x\bmod 2=1](x-1) + [x\bmod 2=0] (x/2)\)
瀵逛簬浠绘剰 \(x\)锛屼笉鏂护 \(x=f(x)\) 杩涜杩唬锛屾渶缁堜細寰楀埌 \(x=1\)锛屽畾涔� \(path_x\) 涓� \(x\) 鍦ㄨ繖涓凯浠h繃绋嬩腑鍑虹幇杩囩殑鎵€鏈夊€肩殑闆嗗悎
缁欏畾 \(n,k\)锛屾眰鏈€澶х殑 \(y\)锛屼娇寰楁湁鑷冲皯 \(k\) 涓� \(i \in [1,n]\) 浣垮緱 \(y \in path_i\)

Solution

闅惧害锛歀5

浠ヤ笅瀵逛簬鏁扮殑璁ㄨ閮芥槸鍦ㄤ簩杩涘埗鎰忎箟涓嬭繘琛岀殑
璁� \(f(i)\) 琛ㄧず \(i\) 鍑虹幇鍦� \([1,n]\) 澶氬皯涓暟鐨� \(path\) 涓紝璁� \(g(i)\) 琛ㄧず \(i\) 鏄� \([1,n]\) 涓灏戜釜鏁颁簩杩涘埗鎰忎箟涓嬬殑鍓嶇紑

  • 瀵逛簬濂囨暟 \(i\)锛�\(f(i)=g(i)\)
  • 瀵逛簬鍋舵暟 \(i\)锛�\(f(i)=g(i)+g(i+1)\)

鐢变簬 \(f\) 搴忓垪鐨勫鏁伴」鍜屽伓鏁伴」鍒嗗埆鍗曡皟锛屼簬鏄垜浠垎鍒簩鍒嗭紝鎵惧埌鏈€鍚庝竴涓� \(f(i) \geq k\) 鐨勫鏁伴」鍜屽伓鏁伴」鍗冲彲
鑰冭檻濡備綍璁$畻 \(g(i)\)锛岄鍏堟垜浠壘鍒颁竴涓渶灏忕殑闀垮害 \(len\)锛屼娇寰� \(i2^{len+1} >n\)锛岀劧鍚庝簩鍒嗘壘鍒� \(mid\) 浣垮緱 \(i 2^{len}+mid \leq n\)锛屾樉鐒跺彲浠ヤ簩鍒嗗緱鍒帮紝閭d箞 \(g(i)=mid+2^{len}\)
鎬讳綋澶嶆潅搴� \(O(\log^2 n)\)
缁欏嚭涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屽綋浣犲湪绗� \(i\) 鍙蜂綅缃槸锛屼綘鍙互涓€姝ヨ皟鍒� \(i-a_i\) 鍜� \(i+a_i\)锛屽墠鎻愭槸 \(1 \le\) 璺冲埌鐨勪綅缃� \(\le n\)锛屽浜庢瘡涓€涓綅缃� \(i\)锛屼綘鎯崇煡閬撴渶灏戦渶瑕佸灏戞鍙互鍒拌揪涓€涓綅缃� \(j\)锛屼娇寰� \(a_j\) 涓� \(a_i\) 鐨勫鍋舵€т笉鍚�

Solution

绗� \(i-a_i\) 涓偣锛岀 \(i+a_i\) 涓偣鍚戠 \(i\) 涓偣杩炶竟锛岃垂鐢ㄤ负 \(1\)锛屾墍鏈夊鏁扮偣鍚� \(n+1\) 杩炶竟锛岃垂鐢ㄤ负 \(0\)锛屾墍鏈夊伓鏁扮偣鍚� \(n+2\) 杩炶竟锛岃垂鐢ㄤ负 \(0\)
鍒嗗埆浠� \(n+1\)锛�\(n+2\) 涓鸿捣鐐硅窇鏈€鐭矾鍗冲彲
缁欏畾 \(n\) 涓偣锛�\(m\) 鏉¤竟锛屼互鍙婁袱涓偣 \(s,t\)锛屾眰鐐瑰 \((a,b)\) 鐨勪釜鏁帮紝婊¤冻浠绘剰涓€鏉� \(a\to b\) 璺緞閮界粡杩� \(s,t\)

Solution

浠� \(s\) 寮€濮� DFS锛岃兘涓嶇粡杩� \(t\) 鍒拌揪鐨勭偣鐨勯泦鍚堣涓� \(S\)
浠� \(t\) 寮€濮� DFS锛岃兘涓嶇粡杩� \(s\) 鍒拌揪鐨勭偣鐨勯泦鍚堣涓� \(T\)
绛旀鍗充负 \(|S/T||T/S|\)

[CF1278D] Segment Tree - 鎵弿绾�,骞舵煡闆�,set

Description

缁欏畾 n 鏉$嚎娈碉紝姣忎釜绾挎鍖呮嫭璧峰鍧愭爣锛屽鏋滀袱鏉$嚎娈典弗鏍肩浉浜わ紙闈炵浉杩烇級锛屽垯涓ゆ潯绾挎闂存湁涓€鏉¤竟锛岄棶鑳藉惁鏋勬垚涓€棰楁爲銆�

Solution

寰堝鏄撴兂鍒版寜宸︾鐐规帓搴忥紝鍥犱负瀵逛簬绾挎 a,b锛屽鏋� a.l < b.l锛屽垯 a,b 鐩镐氦褰撲笖浠呭綋 b.l < a.r < b.r
鍒ゆ柇鏍戠殑闂锛屽緢瀹规槗鎯冲埌骞舵煡闆�
鎴戜滑灏嗘墍鏈夌嚎娈垫寜宸︾鐐规帓搴忓悗鎵弿涓€閬嶏紝缁存姢涓€涓� set锛屾瘡娆℃壂鎻忓埌绾挎 i 鏃讹紝鍏堟鏌ユ弧瓒� r 鍦� i.l 鍜� i.r 涔嬮棿鐨勭嚎娈垫槸鍚﹀瓨鍦紝濡傛灉鑳芥壘鍒帮紝灏卞湪骞舵煡闆嗕腑鍚堝苟锛岀劧鍚庡啀灏� i 鍔犲叆 set 涓紝鍥犳杩欎釜 set 鏄寜绾挎鐨� r 鎺掑簭鐨�
鎴愭爲鐨勫厖瑕佹潯浠舵槸锛氬湪鍚堝苟杩囩▼涓紝娌℃湁鍑虹幇閲嶅鍚堝苟鐨勬儏鍐碉紝骞朵笖鏁翠釜娴佺▼鎵ц瀹屽悗锛屾墍鏈夌殑鍏冪礌閮藉湪鍚屼竴涓泦鍚堜腑
缁欏畾涓€妫靛甫鏉冩爲锛屼竴鍏辨湁 \(2k\) 涓偣锛屾眰浠绘剰閫夋嫨 \(k\) 瀵逛笉閲嶅鐐癸紝姣忓鐐硅窛绂诲拰鐨勬渶灏忓€间笌鏈€澶у€�

Solution

闅惧害锛歀4
鑰冭檻鏈€灏忥細濡傛灉涓€鏉¤竟鐨勬煇涓€渚ф湁濂囨暟涓偣锛岄偅涔堝緢鏄剧劧杩欐潯杈逛竴瀹氫細琚€夋嫨銆傚弽涔嬶紝杩欐潯杈逛竴瀹氫笉浼氳閫夋嫨锛屽彲浠庡綊绾宠搴﹁€冭檻銆傚洜姝わ紝杩欎釜杈归泦鏄畬澶囩殑鍖归厤杈归泦鍚堬紝姣忎釜杈逛細琚绠椾笖鍙細琚绠椾竴娆°€備簬鏄紝婊¤冻杩欎釜鏉′欢鐨勮竟鐨勬€绘潈鍊煎拰灏辨槸鏈€灏忕瓟妗堛€�
鑰冭檻鏈€澶э細寤剁画涓婃柟鐨勬€濊矾锛屾垜浠彂鐜帮紝姣忔潯杈硅鍒╃敤鐨勬渶澶氭鏁版槸瀹冩墍杩炴帴鐨勪袱閮ㄥ垎鐨勭偣鏁扮殑鏈€灏忓€硷紝杩欎釜鏈€澶ф鏁板浜庢墍鏈夌偣鏉ヨ鍙互鍚屾椂杈惧埌銆備粠鍙︿竴绉嶈搴﹀叆鎵嬶紝鎴戜滑甯屾湜姣忎釜鐐瑰尮閰嶅埌涓€涓緢杩滅殑鐐癸紝浠ラ噸蹇冧负鏍癸紝閭d箞姣忎釜鐐瑰尮閰嶇殑鐐逛竴瀹氫笉鍦ㄥ師鏉ョ殑閲嶅績瀛愭爲鍐咃紝閭d箞灏卞緢鑷劧鍦板皢闂杞寲涓轰簡姹傞噸蹇冧负鏍规椂鎵€鏈夌偣鐨勬繁搴﹀拰銆�

Description

n涓汉浣忓湪涓€涓彲浠ョ敤鏁拌酱琛ㄧず鐨勫煄甯傞噷锛岀i涓汉浣忓湪涓€涓暣鏁板潗鏍噚i鐨勬埧瀛愰噷銆傜i涓汉鍙互鍜屽潗鏍噚i - 1,xi+1涓€璧锋潵瀹堕噷搴嗙鏂板勾锛屾垨鑰呭憜鍦▁i锛屾瘡涓汉鍙兘绉诲姩涓€娆°€傚浜庢埧瀛愬湪1鎴杗鐨勪汉锛屼粬浠彲浠ユ潵鍒板潗鏍�0鎴杗+1鐨勬埧瀛愩€�

渚嬪锛屽垵濮嬩綅缃负x=[1,2,4,4]銆傛渶鍚庣殑浣嶇疆鍙互鏄痆1,3,3,4]锛孾0,2,3,3]锛孾2,2,5,5]锛孾2,1,3,5]绛夌瓑銆傝鍗犵敤鐨勬埧灞嬫€绘暟绛変簬鍦ㄦ渶缁堟埧灞嬩腑涓嶅悓浣嶇疆鐨勬€绘暟銆�

鎵€鏈変汉鍙互闅忔剰閫夋嫨涓夌鎿嶄綔涔嬩竴锛岀劧鍚庤绠楁湁浜虹殑鎴垮眿鎬绘暟銆傛湁浜虹殑鎴垮眿鍙兘杈惧埌鐨勬渶灏忔暟閲忓拰鏈€澶ф暟閲忓悇鏄灏�?

Solution

鑰冭檻鏈€灏忓€硷紝鐩稿綋浜庣敤澶氬皯涓暱搴︿负 \(3\) 鐨勬鍙互妗嗕綇鎵€鏈変汉
鑰冭檻鏈€澶у€硷紝鎴戜滑鎵竴閬嶆墍鏈夌殑鎴垮瓙锛屽浜庝竴涓潪绌烘埧瀛愶紝濡傛灉鍓嶄竴涓埧瀛愪负绌猴紝灏卞線鍓嶉€佷竴涓汉锛涘鏋滆繖鏃惰繕鏈夊浣欑殑浜猴紝灏卞線鍚庨潰鐨勬埧瀛愰噷閫佷竴涓汉

Description

缁欏畾涓€妫垫爲锛岀紪鍙蜂负 i 鐨勭偣鏉冨€间负 2^i锛屽畾涔変竴鏉¤竟鐨勬潈鍊间负杩欐潯杈归摼鎺ョ殑涓や釜鐐逛腑娣卞害杈冨ぇ鐨勭偣鐨勫瓙鏍戠殑鐐规潈鍜屻€傜粰鍑烘€荤偣鏁� n锛屾寜鐓ц竟鏉冧粠澶у埌灏忕粰鍑烘瘡鏉¤竟鐨勬繁搴﹁緝娴呯殑鐐圭殑缂栧彿锛岃姹傛瀯閫犲師鏍戙€�

Solution

杈规潈鍗冲瓙鏍戝拰锛岄偅涔堝悓涓€鏉$洿閾句笂鐨勮竟鏉冨崟璋冿紝涓旀牴澶勬渶澶э紝鍙跺瓙澶勬渶灏忋€傚洜姝ゆ帓鍦ㄦ暣涓簭鍒楁湯灏剧殑涓€瀹氭槸鍙跺瓙缁撶偣鐩稿叧鐨勮竟銆備竴涓粨鐐规椂鍙跺瓙缁撶偣锛屽綋涓斾粎褰撳畠涓嶆浘鍦ㄥ師搴忓垪涓嚭鐜般€�
鑰冭檻涓€涓瀯閫犺繃绋嬶紝姣忎竴姝ユ垜浠細瀹氬嚭涓€鏉¤竟锛屾垜浠竴瀹氬笇鏈涙垜浠瀹氬嚭鐨勮繖鏉¤竟杈规潈鏈€灏忥紝鍥犳瀵逛簬鎵€鏈夊彾瀛愮粨鐐癸紙鎸傜潃浠栦滑鐨勫瓙鏍戯級锛岀淮鎶ゅ皬椤跺爢锛屾潈鍊间负瀛愭爲鐐规潈鍜岋紝浣嗘槸杩欐牱澶毦缁存姢浜嗭紝鎵€浠ョ偣鏉冨拰鐩存帴鐢ㄧ偣鑷韩鐨勭紪鍙锋浛浠o紙棰樼洰鏉′欢鐨勪娇鐢級銆�
鎴戜滑鎸夊師搴忓垪鍊掑簭閬嶅巻鎵€鏈夌殑鐐癸紝瀵逛簬姣忎釜鐐癸紝寮瑰嚭鍫嗛《涓庡叾杩炶竟锛堢浉褰撲簬涓€涓潪鍙跺瓙鍜屽彾瀛愮殑閰嶅杩囩▼锛夛紝閰嶅鍚庣殑鐐瑰叾瀹炲氨琚€滃垹闄も€濅簡锛岃繖涓椂鍊欏鏋滀骇鐢熶簡鏂扮殑鍙跺瓙锛岄偅涔堜篃闇€瑕佸皢鍏跺姞鍏ュ爢涓€�

Description

缁欏畾 \(n\) 涓尯闂村 \(([s_a,e_a],[s_b,e_b])\)锛屾眰鏄惁瀛樺湪涓€涓瓙闆嗭紝浣垮緱瀛愰泦涓墍鏈夊尯闂村鐨� \(first\) 鍖洪棿瀵逛腑浜掍笉鐩镐氦鍜� \(second\) 鍖洪棿瀵逛腑浜掍笉鐩镐氦浜岃€呮伆濂芥湁涓€涓垚绔嬨€�

Solution

鑰冭檻鍒板鏋滃瓨鍦ㄤ竴涓弧瓒虫潯浠剁殑瀛愰泦锛岄偅涔堜竴瀹氬瓨鍦ㄤ竴涓弧瓒虫潯浠剁殑浜屽厓瀛愰泦锛屽洜姝ゆ壘瀛愰泦杞寲涓烘壘涓や釜鍖洪棿瀵癸紝婊¤冻鍓嶉」鐩镐氦鍜屽悗椤圭浉浜や笉鍚屾椂鎴愮珛銆�
鑰冭檻鍓嶉」鐩镐氦鑰屽悗椤逛笉鐩镐氦鐨勬儏鍐点€傚鍓嶉」鍖洪棿鐢ㄦ壂鎻忕嚎鎵弿锛岄偅涔堝綋鍓嶇淮鎶ょ殑灏辨槸鍓嶉」鐩镐氦鐨勬墍鏈夊尯闂达紝濡傛灉杩欎簺鍖洪棿鐨勬渶澶у乏绔偣澶т簬鏈€灏忓彸绔偣锛岄偅涔堟樉鐒舵垜浠壘鍒颁簡涓€涓繖鏍风殑鍖洪棿銆�

Description

鏈変竴涓敱 $ 1 $ - $ n $ 鏋勬垚鐨勬帓鍒楋紝鍏朵腑閮ㄥ垎琚垹闄わ紙鍒犻櫎鐨勫厓绱犵敱 $ 0 $ 浠f浛锛夛紝璇风敤琚垹闄ょ殑鍏冪礌琛ュ叏杩欎釜鏁板垪锛屼娇杩欎釜鏁板垪涓浉閭诲厓绱犲鍋舵€т笉鍚岀殑瀵规暟鏈€灏戙€�\(n \le 100\)

Solution

璁� \(f[i][j][0/1]\) 琛ㄧず鐢ㄤ簡 \(i\) 涓鏁帮紝\(j\) 涓伓鏁帮紝涓婁竴浣嶆槸濂囨暟鎴栧伓鏁版椂鐨勬渶灏忓€�
缁欏畾涓€妫垫湁鏍规爲锛屾瘡涓粨鐐规湁鏉冨€� \(a_i\)锛岃 \(c_i\) 涓� \(i\) 鐨勫瓙鏍戜腑鏉冨€� \(<a_i\) 鐨勭偣鐨勪釜鏁般€傜粰瀹� \(c_i\)锛屾瀯閫� \(a_i\)銆�\(n\leq2000\)

Solution

鏌愪釜瀛愭爲鍐呯殑鍚堟硶鎬у彧鍜岃繖涓瓙鏍戝唴鏉冨€肩殑鐩稿澶у皬鏈夊叧锛屼簬鏄竴瀹氬瓨鍦ㄤ竴绉嶅悎娉曟柟妗堬紝浣垮緱鎵€鏈夌偣鐨勬潈鍊间簰涓嶇浉鍚岋紝涓嶅Θ璁句负涓€涓� \(n\) 鐨勫叏鎺掑垪
浜庢槸鎴戜滑鑰冭檻缁存姢涓€涓泦鍚� \(S\)锛屽垵鎬佷笅 \(S\) 涓寘鍚墍鏈夌偣锛岃 \(d_i\) 琛ㄧず \(i\) 鐨勫瓙鏍戜腑鏉冨€� \(<a_i\) 鐨勪粛鐒跺湪 \(S\) 涓殑鐐圭殑涓暟锛屾樉鐒跺垵鎬佷笅 \(d_i=c_i\)
鎴戜滑姣忔浠� \(S\) 涓彇鍑烘墍鏈� \(d_i=0\) 鐨勭偣锛岀粰杩欎簺鐐硅祴鏉�
杩欎簺鐐逛箣闂村瓨鍦ㄧ鍏堝叧绯伙紝閭d箞鏄剧劧娣卞害娴呯殑鐐瑰簲璇ヨ祴灏忔潈
浜庢槸鎴戜滑姣忔鍙栧嚭鎵€鏈� \(d_i=0\) 鐨勭偣鎶婂畠浠墧杩涗竴涓爢涓紝姣忔鎶婂爢椤跺彇鍑烘潵骞朵笖缁欏畠璧嬫潈锛屽悓鏃剁粰瀹冩墍鏈夌鍏堢殑 \(d_i-1\)锛屽鏋滄煇涓鍏堢殑 \(d_i=0\) 灏辨妸杩欎釜绁栧厛鎵旇繘鍫嗕腑
濡傛灉鍫嗙┖浜嗭紝浣嗘槸杩樻湁鑺傜偣娌℃湁璧嬫潈锛屽垯杈撳嚭 NO
缁欏畾涓€涓暟 \(n\) 鍜屼竴涓暟 \(m\)锛岃鏋勫缓涓や釜鏁扮粍 \(a\) 鍜� \(b\) 婊¤冻鏉′欢

  • 鏁扮粍涓墍鏈夊厓绱犵殑鍙栧€煎湪 \([1, n]\) 涔嬮棿
  • \(a\) 鍜� \(b\) 鏁扮粍闀垮害鏄� \(m\)
  • \(a\) 鏁扮粍鏄崟璋冧笉闄嶇殑锛�\(b\) 鏁扮粍鏄崟璋冧笉澧�
  • 浠绘剰鐨勪綅缃� \(i\)锛屾湁 \(a_i \leq b_i\)

Solution

棣栧厛寰堝鏄撴兂鍒板皢 \(b\) 缈昏浆鍚庢帴鍦� \(a\) 鐨勫悗闈紝閭d箞闂灏辫浆鍖栦负鐢� \([1,n]\) 濉竴涓暱搴︿负 \(2m\) 鐨勫簭鍒楋紝浣垮叾鍗曡皟涓嶉檷鐨勬柟妗堟暟

DP 瑙f硶

璁� \(f[i][j]\) 琛ㄧず濉竴涓� \(i\) 闀垮害鐨勫簭鍒楋紝鏈€鍚庝竴浣嶄负 \(j\) 鐨勬柟妗堟暟锛屼簬鏄�

\[f[i][j]=f[i-1][j]+f[i-1][j-1] \]

鏆村姏杞Щ鍗冲彲锛屾椂闂村鏉傚害 \(O(nm)\)

缁勫悎

绛変环浜庢眰 \(x_1+x_2+...+x_n=2m\) 鐨勮В鐨勬柟妗堟暟锛屼簬鏄€冭檻闅旀澘娉曪紝绛旀涓� \(C_{2m+n-1}^{n-1}\)
鏃堕棿澶嶆潅搴� \(O(n)\)
缁欏畾涓€涓� \(n\leq 3\times 10^5\) 琛� \(m \leq 8\) 鍒楃殑鏁板瓧鐭╅樀 \(a\)锛屾壘鍑轰袱琛� \(x,y\)锛屼娇寰� \(\min_{j=1}^m \max(a_{x,j},a_{y,j})\) 鏈€澶�

Solution

浜屽垎绛旀锛岃€冭檻妫€楠� \(mid\)锛屽皢姣忎竴琛屽ぇ浜庣瓑浜� \(mid\) 鐨勬暟璁句负 \(1\)锛屽弽涔嬭涓� \(0\)锛屽帇浣嶅悗鎵旇繘妗讹紝寰€ \(1\) 鏂瑰悜鍋氫竴涓嬮珮缁村墠缂€鍜岋紝鐒跺悗鎵竴閬嶆《鍗冲彲
瀹氫箟涓や釜闀垮害鐩稿悓鐨勪覆 s,t 涓轰竴瀵光€滅濂囦覆鈥濆綋涓斾粎褰� s 閲嶆柊鎺掑垪鍚庡彲浠ュ彉鎴� t銆傚浜庝竴瀵光€滅濂囦覆鈥� s,t 锛屽畾涔変粬浠负涓€瀵光€滆秴绾х濂囦覆鈥濆綋涓斾粎褰撹兘瀵瑰畠浠垝鍒嗘垚 k锛坘鈮�2锛夋锛堣涓� s1,s2...sk,t1,t2...tk锛夛紝浣垮緱鎵€鏈夌殑 1鈮鈮 閮芥弧瓒� si,ti 涓轰竴瀵光€滅濂囦覆鈥濄€傜幇鍦ㄧ粰浣犱竴涓覆 s锛屾瘡娆¤闂竴涓瓙涓诧紝闂槸鍚﹁嚦灏戝瓨鍦ㄤ竴涓覆浣垮緱璇ヤ覆涓庡瓙涓叉槸涓€瀵光€滅濂囦覆鈥濅絾涓嶆槸鈥滆秴绾х濂囦覆鈥濄€�

Solution

绁炰粰鐨勬瀯閫�
濡傛灉杩欎釜涓查暱搴︿负 \(1\)锛屾樉鐒� Yes
濡傛灉澶村熬瀛楃涓嶅悓锛屾垜浠彲浠ュ皢鎵€鏈夊拰灏惧瓧绗︾浉鍚岀殑绉诲埌寮€澶达紝澶村瓧绗︾浉鍚岀殑绉诲埌缁撳熬锛屾樉鐒� Yes
濡傛灉瀛楃绉嶇被鏁颁笉灏忎簬 \(3\)锛屽苟涓斿ご灏惧瓧绗︾浉鍚岋紝鎴戜滑鍙互灏嗛櫎澶村熬瀛楃澶栫殑浠绘剰涓ょ瀛楃鍒嗗埆鍏ㄩ儴绉诲埌澶村熬锛屾樉鐒� Yes
鍏跺畠鎯呭喌 No
缁欏畾涓€涓� \(n\times m\) 鐭╅樀锛屽叾涓厓绱犱负 \(1 \to nm\) 鐨勪竴涓帓鍒楋紝姣忔鎿嶄綔鍙互浠婚€変竴涓厓绱犲皢瀹冨彉涓轰换鎰忔暣鏁帮紝鎴栬€呴€夋嫨涓€鍒楀皢鍏跺惊鐜Щ浣嶏紙鍚戜笂锛変竴鏍硷紝姹備娇寰楃煩闃靛彉涓烘爣鍑嗗瀷鐨勬渶灏戞搷浣滄鏁�

Solution

璁� \(a[i][j]\) 涓� \(i\) 琛� \(j\) 鍒楃殑鏁帮紝\(c[i][j]\) 琛ㄧず绗� \(j\) 鍒楀惊鐜Щ浣� \(i\) 娆″悗鏈夊灏戜釜鏁板凡缁忓尮閰嶏紝鍒欑瓟妗堜负

\[\sum_{j=1}^m (\min_{i=0}^{n-1} (i+n-c[i][j])) \]

鑰冭檻濡備綍璁$畻 \(c\)锛岀敱浜庢瘡涓厓绱犲彧浼氬涓€涓� \(c[?][?]\) 浜х敓璐$尞锛屾墍浠ユ垜浠垽鏂瘡涓厓绱犳槸鍚﹀彲鑳借濉湪褰撳垪锛屽鏋滃彲鑳斤紝璁$畻搴旇琚~鍦ㄧ殑浣嶇疆锛岀畻鍑哄潗鏍囧樊鍊硷紝鐒跺悗瀵瑰搴旂殑 \(c[?][?]\) 璁$畻璐$尞灏卞ソ浜�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬帓鍒楋紝浣犲彲浠ュ皢瀹冨垏鎴愪袱娈� \(A,B\)锛屽垎鍒綔涓轰袱涓泦鍚堬紝瀵逛簬绗� \(i\) 涓厓绱狅紝鍙互鑺辫垂 \(a[i]\) 鐨勪唬浠锋妸瀹冪Щ鍔ㄥ埌瀵归潰鐨勯泦鍚堜腑銆傛眰鑷冲皯鑺辫垂澶氬皯鐨勪唬浠凤紝鎵嶈兘浣垮緱涓€涓泦鍚堜腑鐨勪换鎰忓厓绱犳瘮鍙︿竴涓泦鍚堜腑鐨勪换鎰忓厓绱犲皬銆�

Solution

鏋氫妇鍒濇€佸垎鐣岀偣 \(pos\) 鍜屽垎鐣屽€� \(val\)锛岃姝ゆ椂鐨勭瓟妗堜负 \(f(pos,lim)\)锛屾毚鍔涜绠楃殑璇濆鏉傚害涓� \(O(n^2)\)銆�
鑰冭檻鍒� \(f(pos,lim)-f(pos-1,lim)=\sum_{lim < p_{pos}} a_{pos} - \sum_{lim \ge p_{pos}} a_{pos}\)锛屾垜浠敤绾挎鏍戞潵缁存姢瀵逛簬鏌愪釜纭畾鐨� \(pos\) 鐨勬墍鏈� \(f(pos,lim)\)锛屾瘡娆′慨鏀� \(pos\) 鏃讹紝鍙渶瑕佸皢 \(1 \le lim < p_{pos}\) 閮ㄥ垎 \(+a_{pos}\)锛屽皢 \(p_{pos} \le lim \le n\) 閮ㄥ垎 \(-a_{pos}\)銆傚尯闂翠慨鏀癸紝鍖洪棿璇㈤棶鏈€灏忓€笺€�
鐗瑰埆娉ㄦ剰锛宍lim鏄彲浠�=0` 鐨勩€�

Description

鏍戜笂姣忔潯杈规湁涓€涓潈鍊� \(x_i\) 鏈煡锛岀粰瀹� \(m\) 涓檺鍒舵瘡涓檺鍒舵弿杩颁簡璺緞 \(p,q\) 涓婄殑鏈€灏忓€硷紝鏋勯€犳潈鍊兼柟妗堟垨鑰呭垽瀹氭棤瑙c€�

Solution

璐績锛屽浜庢瘡涓檺鍒讹紝璺緞涓婃墍鏈夌偣鏆村姏鍙� max 鍗冲彲銆傛渶鍚庡啀鎵竴閬嶆鏌ユ槸鍚︽墍鏈夋潯浠堕兘琚弧瓒炽€�

Description

缁欏畾涓€涓敱 $ n $ 涓偣缁勬垚鐨�涓ユ牸锛堜笉瀛樺湪涓夌偣鍏辩嚎锛夊嚫澶氳竟褰€€�
浣犺灏嗚繖涓浘褰㈠钩绉� $ n $ 娆★紝姣忔灏嗕竴涓《鐐逛笌鍘熺偣 $ (0,0) $ 閲嶅悎銆�
璇峰垽鏂繖 $ n $ 涓钩绉诲悗鐨勫杈瑰舰闄や簡涓庡師鐐归噸鍚堢殑鐐逛箣澶栫殑鐐圭粍鎴愮殑澶氳竟褰㈡槸鍚︿笌鍘熷浘褰㈢浉浼笺€�
鍦ㄨ鍏ヤ腑锛屼繚璇佽緭鍏ョ殑鐐规寜閫嗘椂閽堥『搴忔帓鍒楋紝褰㈡垚涓ユ牸鍑稿杈瑰舰銆�
$ 3\le n\le 10^5 $

Solution

鏈€缁堢殑杩欎釜鍥惧舰灏辨槸 \(S\) 涓� \(-S\) 鐨勯椀鍙か鏂熀鍜�
缁撹锛氭柊鍥惧舰涓庡師鍥惧舰鐩镐技锛屽綋涓斾粎褰撳師鍥惧舰鏄腑蹇冨绉板浘褰�

Description

缁欏畾涓€涓簭鍒楋紝鍙互杩涜鏃犻檺娆℃搷浣滐紝姣忔閫夊畾涓€涓尯闂达紝灏嗚鍖洪棿鍐呯殑鎵€鏈夋暟鍙樻垚鍖洪棿鐨勫钩鍧囨暟锛屾眰鎿嶄綔鍚庡瓧鍏稿簭鏈€灏忕殑搴忓垪銆�

Solution

鑰冭檻鍗曡皟鏍堬紝姣忔濡傛灉鏍堥《姣斿甫鍏ユ爤鍏冪礌楂樺氨鏆村姏寮规爤锛屽皢琚脊鍑虹殑鍏冪礌鍜屽甫鍏ユ爤鐨勫厓绱犲悎骞躲€�

Description

璁� \(f(s)\) 琛ㄧず \(01\) 涓� \(S\) 涓鏈夊皯涓瓙涓蹭腑鑷冲皯鏈変竴涓� \(1\)銆傚浜庨暱搴︿负 \(n\) 涓旀伆濂芥湁 \(m\) 涓� \(1\) 鐨� \(01\) 涓诧紝姹� \(f\) 鐨勬渶澶у€间负澶氬皯銆�

Solution

瑕佹渶澶у寲 \(f\)锛屽浜庣粰瀹氱殑 \(n,m\) 灏辨槸瑕佹渶灏忓寲 \(\sum x_i\)锛屽叾涓� \(x_i\) 浠h〃绗� \(i\) 娈佃繛缁� \(0\) 鐨勯暱搴︺€�
鍗冲皢 \(n-m\) 涓� \(0\) 鍒嗘垚 \(m+1\) 浠斤紝姣忎唤鐨勬暟閲忓彲浠ユ槸浠绘剰闈炶礋鏁存暟锛屾渶灏忓寲 \(\sum x_i\)锛屾樉鐒跺敖鍙兘鍧囧寑鍒嗛厤鏄渶浼樼殑锛屽嵆淇濊瘉 \(\max - \min \le 1\)銆�
CF 题解汇总

Solution

鎵惧埌杈圭晫鐒跺悗寰幆鎵竴閬嶆暟涓暟鍗冲彲
CF 题解汇总

Solution

  • \(2a>n\)锛屼竴娆℃€х粨鏉燂紝鐩存帴杈撳嚭 \(n\)
  • \(a \geq b\)锛岄偅涔堜竴鐩翠慨鍗冲彲锛岀洿鎺ヨ緭鍑� \(n\)
  • 鍚﹀垯锛�\(a\) 鍗犲急鍔匡紝鎴戜滑鑰冭檻鐢� \(a\) 淇竴鍗婇渶瑕佺殑瀹屾暣杞鏁颁负 \([(n-1)/2a]\) 锛岄偅涔堣繖浜涜疆涓紝 \(a\) 淇帀鐨勪釜鏁颁负 \([n/2a]a\)锛岃€� \(b\) 淇帀鐨勪釜鏁板垯鏄� \([n/2], [n/2a]b\) 涓殑杈冨皬鍊笺€傝绠楀墿浣欓噺鐒跺悗鏆村姏淇嵆鍙€�
CF 题解汇总 ### Solution 鏍规嵁鍘熷瓧绗︿覆寤哄浘锛屾瘡涓瓧绗︽槸涓€涓偣锛岀浉閭诲垯杩炶竟 鐒跺悗浠庢瘡涓€涓害鏁颁负 $1$ 鐨勭偣寮€濮嬬垎鎼滆繛閫氬潡锛屽悎娉曟儏鍐典笅搴旇鏄竴鏉¢摼 CF 题解汇总 ### Solution 鑰冭檻浠庝綆浣嶅線楂樹綅璐績锛岃褰撳墠鍦ㄥ鐞嗙 $i$ 浣嶏紝鏇翠綆浣嶅墿浣欑殑閮ㄥ垎涓€鍏卞彲浠ユ嫾鍑� $cnt$ 涓� $2^i$ 濡傛灉 $n$ 鐨勮繖涓€浣嶆槸 $1$ 锛岄偅涔堣繖涓€浣嶅氨闇€瑕佸鐞�
  • 濡傛灉 \(cnt>0\)锛岄偅涔堢洿鎺ヤ粠 \(cnt\) 閲屾嬁涓€涓紝绛旀涓嶅彉
  • 鍚﹀垯锛屾毚鍔涘悜鏇撮珮浣嶆壘鍒版渶灏忕殑閭d竴涓紝姣斿瀹冨湪 \(j\) 浣嶏紝閭d箞灏� \(a_j\) 鍑� \(1\)锛屽悓鏃跺皢 \(a_{j-1},...,a_{i}\) 閮藉姞涓� \(1\)锛屽苟涓旂瓟妗堝鍔� \(j-i\)

鍋氬畬姣忎竴浣嶅悗锛岀淮鎶や竴涓� \(cnt\) 鍗冲彲
锛堣繃鏅氫簡涓€鍒嗛挓锛�
CF 题解汇总

Solution

涓嶇敱鍒嗚鍦版灇涓惧垎鍓茬偣
浠� \(f[i][j]\) 琛ㄧず鍘熶覆澶勭悊鍒� \(i\) 锛�\(s_1\) 澶勭悊鍒� \(j\)锛�\(s_2\) 鏈€澶氳兘澶勭悊鍒板摢閲�

閲囩敤涓诲姩杞Щ

浠绘剰鎯呭喌锛� \(f[i][j] \to f[i+1][j]\)

濡傛灉 \(s[i+1]=s_1[j+1]\) 锛岄偅涔� \(f[i][j] \to f[i+1][j+1]\)

濡傛灉 \(s[i+1]=s_2[f[i][j]+1]\) 锛岄偅涔� \(f[i][j]+1 \to f[i+1][j]\)

鏃堕棿澶嶆潅搴� \(O(n^3)\)
鏈変竴涓� \(n \times m\) 鐭╅樀锛屽垵鎬佷笅鍏ㄦ槸 \(0\)銆�
濡傛灉涓や釜鐩搁偦鍏冪礌锛堝洓杩為€氾級鐩哥瓑锛屾垜浠氨璇村畠浠槸杩為€氱殑锛屼笖杩欑鍏崇郴鍙互浼犻€掋€�
鏈� \(q\) 娆℃搷浣滐紝姣忔鎸囧畾涓€涓綅缃� \((x_i,y_i)\) 鎶婂畠鏇挎崲涓� \(c_i\)銆�
姣忔鎿嶄綔鍚庢眰杩欎釜鐭╅樀鏈夊灏戜釜杩為€氬潡銆�
\(q \leq 2\times 10^6\), \(n,m \leq 300\)

Solution

甯﹀垹闄ょ殑骞舵煡闆嗛棶棰樺彲浠ョ绾匡紝鎵€浠ユ鐫€鍊掔潃鍚勫仛涓€娆★紝鐒跺悗灏嗙瓟妗堝仛宸氨鍙互浜�
鑰冭檻姝g潃鍋氱殑杩囩▼锛屽垰寮€濮嬪氨鏄竴鍧� \(0\) 鐨勬澘鏉�
姣忔鎴戜滑鍒涘缓涓€涓柊鑺傜偣锛岀劧鍚庤瘯鍥惧皢瀹冧笌鍛ㄥ洿鐨勮妭鐐瑰悎骞讹紝璁惧悎骞剁殑娆℃暟涓� \(t\)锛岄偅涔堣繖涓€娆″绛旀鐨勮础鐚紙鍗宠繖娆℃搷浣滄柊澧炰簡澶氬皯涓繛閫氬潡锛夊氨鏄� \(1-t\)
鍙嶅悜鎿嶄綔鏃跺悓鐞嗭紝璐$尞甯︿釜璐熷彿灏卞彲浠ヤ簡
鏈€鍚庤緭鍑虹瓟妗堢殑鏃跺€欙紝鎶婅础鐚暟缁勬眰涓墠缂€鍜屽嵆鍙�
缁欏畾涓€妫� \(n\) 涓偣鐨勫甫鐐规潈鐨勬爲锛屾眰鏍戜笂鐨勮矾寰� \(x_1,...,x_k\) 锛屾渶澶у寲 \(\sum_{i=1}^k ia_{x_i}\)

Solution

鏍戜笂璺緞闂鍙敤鐐瑰垎娌汇€�
鑰冭檻濡備綍鍚堝苟涓ゆ潯璺緞瀵规瘡鏉¤矾寰勶紝璁� \(l\) 涓洪暱搴︼紙鐐规暟锛夛紝\(v\) 涓� \(\sum_{i=1}^l ia_{x_i}\) 锛�\(s\) 涓� \(\sum a_i\) 锛岄偅涔堝浜庝袱鏉¤矾寰� \((l_1,v_1,s_1),(l_2,v_2,s_2)\)锛屽畠浠殑骞朵负 \((l_1+l_2-1,v_1+s_1l_2+v_2,s_1+s_2)\)
浜庢槸绛旀涓� \(v_1 + v_2 + s_1l_2\)锛屽叾涓� \(_1\) 鏄拰涔嬪墠鎵弿杩囩殑鏈夊叧鐨勪俊鎭紝\(_2\) 鏄拰褰撳墠姝e湪鎵弿鐨勪綅缃湁鍏崇殑淇℃伅
锛堜箣鎵€浠ヨ繖鏍峰彇鐨勫師鍥犳槸锛屼箣鍚庢潕瓒呯嚎娈垫爲涓垜浠渶瑕佹帶鍒朵笅鏍囩殑鍖洪棿锛岃€� \(l\) 鐨勮寖鍥存槸杈冨皬鐨勶級
瀵逛簬鏌愪竴娆℃煡璇㈡潵璇达紝\(v_2\) 鏄畾鍊硷紝浜庢槸鏌ヨ鍙湁涓€涓弬鏁� \(l_2\) 锛屾墍浠ョ幇鍦ㄦ垜浠鏈€澶у寲 \(l_2s_1 + v_1\)锛屼笉濡ㄨ浆鍖栦负

  • 鎻掑叆涓€鏉$洿绾� \(y=ax+b\)锛屽叾涓� \(a=s_1,b=v_1\)
  • 璇㈤棶 \(x=l_2\) 涓庢墍鏈夌洿绾夸氦鐐逛腑鏈€涓婇潰鐨勯偅涓€涓�

鏍囧噯鐨勬潕瓒呯嚎娈垫爲妯℃澘
鎴戝張鎶婄偣鍒嗘暡閿欙紝鏁扮粍寮€灏�

涓€鏉尪涓€鍖呯儫锛屼竴涓牬棰樿皟涓€澶�CF 题解汇总
缁存姢涓€鍖洪棿 \([l,r]\)
浜烘寜鐓ф椂闂村崌搴�
鑰冭檻 \((l_i, h_i, t_i)\)锛屽綋鍓嶇殑鎵€鏈夊尯闂翠笌杩欎釜鍖洪棿鍙栦氦
鎺ㄥ埌 \(t_{i+1}\) 鏃讹紝鎵€鏈夊尯闂寸殑绔偣鍚戜袱杈规墿寮犲嵆鍙�
娉ㄦ剰鎶婄┖鎺夌殑鍖洪棿鍒犳帀
CF 题解汇总
鐪嬫牱渚嬶紝>><>><锛岃鏋勯€� LIS 鏈€鐭殑锛屾垜浠渶瑕佹壘鏈€灏忛摼鍒掑垎鐨勬柟妗堬紝鍗冲寘鍚渶灏戠殑涓嬮檷鍒�
寰堝鏄撴兂鍒版妸杩炵画 < 鐨勭湅鎴愪竴娈碉紝姣斿鏍蜂緥灏辨槸

.|.|. .|.|. .

姣忎竴娈靛唴蹇呴』涓婂崌锛岃€冭檻璁╁畠杩炵画锛岀劧鍚庤娈垫湯鍙栧綋鍓嶆病鍙栬繃鐨勬渶澶у€煎嵆鍙�
瑕佹瀯閫� LIS 鏈€闀跨殑锛屽悓鐞嗭紝鎴戜滑鎶婅繛缁� > 鐨勫牚绉颁竴娈碉紝姣斿鏍蜂緥灏辨槸

. . .|. . .|.

姣忔鍐呭繀椤讳笅闄嶏紝鑰冭檻璁╁畠杩炵画锛岀劧鍚庤娈佃啘鍙栧綋鍓嶆病鍘昏繃鐨勬渶灏忓€煎嵆鍙�
CF 题解汇总
鐢变簬鍙互璧伴噸杈癸紝鎵€浠ヤ换鎰忎竴鏉¤矾寰勯暱 + 2 浠嶇劧瀵瑰簲鑷冲皯涓€鏉″悎娉曡矾寰�
寰堟樉鐒舵垜浠湁 \(3\) 绉嶅熀鏈矾寰�

涓嶇粡杩� \((x,y)\)

缁忚繃 \(x \to y\)

缁忚繃 \(y \to x\)

鍋囪鏌愪釜鍩烘湰璺緞鐨勭瓟妗堟槸 \(d\)锛岃闂槸 \(k\)锛屽鏋滃悓鏃舵弧瓒充互涓嬫潯浠讹紝鍒欒鍩烘湰璺緞鍙互浣滀负绛旀

\(d \leq k\)

\(d = k \ (mod \ 2)\)

浜庢槸鏆村姏鍋氬嵆鍙�
CF 题解汇总
璁� \(f[i][j]\) 涓虹 \(i\) 澶╁湪绗� \(j\) 涓綅缃斁缃殑鏈€澶у€硷紝璁� \(s[i][j]\) 鏄 \(i\) 琛岀殑鍓嶇紑鍜岋紝鍒�

\[\begin{align} f[i][j] & =s[i+1][j+k-1]-s[i+1][j-1]+ \\ \max_l & \begin{cases} f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (1 \leq l \leq j-k) \\ f[i-1][l]+s[i][j+k-1]-s[i][l+k-1] & (j-k+1 \leq l \leq j) \\ f[i-1][l]+s[i][l-1]-s[i][j-1] & (j+1 \leq l \leq j+k-1) \\ f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (j+k \leq l \leq m-k+1) \end{cases} \end{align} \]

濡傛灉鏆村姏杞Щ锛屽垯澶嶆潅搴� \(O(nm^2 )\)
濡傛灉 \(k\) 寰堝皬锛岄偅涔堝涓棿涓ょ鎯呭喌鏆村姏杞Щ锛屾梺杈逛袱绉嶇敱浜庡彧鏈� \(f[i-1][l]\) 涓� \(l\) 鏈夊叧锛屽彲浠ラ澶勭悊鍓嶅悗缂€ \(\max\) 鏉ヨВ鍐筹紝澶嶆潅搴� \(O(nmk)\)
褰� \(k\) 鍙樺ぇ鏃讹紝涓や晶鐨勬儏鍐典粛鐒舵毚鍔涜浆绉伙紝涓棿鐨勬儏鍐靛彲浠ユ毚鍔涚敤浠� \(l\) 涓轰笅鏍囩殑鍗曡皟闃熷垪缁存姢 \(f[i-1][l]-s[i][l+k-1]\) 鍜� \(f[i-1][l]+s[i][l-1]\)
锛堝鏋滄兂鍋锋噿涔熷彲浠ユ暡涓嚎娈垫爲缁存姢涓€涓嬶級
锛堝彂鐜板崟璋冮槦鍒椾紭鍖朌P涓嶅お鐔熺粌锛屽噯澶囪澶嶄範涓嬶級

[CF1305E] Kuroni and the Score Distribution - 鏋勯€�

Description

鏋勯€犱竴涓暱搴︿负 n 鐨勶紝鏁板瓧涓嶈秴杩� 1e9 鐨勶紝鍗曡皟閫掑鐨勶紝鎭板ソ鏈� m 涓弧瓒� \(i<j<k\) 涓� \(a_i +a_j=a_k\) 鐨勪笁鍏冪粍 \((i,j,k)\) 鐨勫簭鍒椼€�

Solution

瑕佹兂璁╀笁鍏冪粍涓暟鏈€澶氾紝鏄剧劧鎴戜滑浼氭寜鐓� 1,2,3,... 杩欐牱鐨勬柟寮忔瀯閫犮€�
娉ㄦ剰鍦ㄨ繖涓繃绋嬩腑锛岀 k 涓厓绱狅紙鏂板姞鍏ワ級浜х敓鐨勮础鐚负 \((k-1)/2\)銆�
濡傛灉鎴戜滑鎯宠娣诲姞鐨勮础鐚笉鍒� \((k-1)/2\)锛屽亣璁句负 \((k-1)/2-x\)锛岄偅涔堟垜浠彲浠ユ坊鍔犱竴涓� \(k+2x\) 鐨勫厓绱犮€�
鎸夌収浠ヤ笂鐨勬柟娉曟瀯閫犲嚭鐨勫簭鍒楁樉鐒舵槸鏈€鐭殑銆�
鑰冭檻濡備綍琛ラ綈 n 涓厓绱狅紝鎴戜滑鍙互浠� 1e9 鍚戜笅鎶撹嫢骞蹭釜鍏冪礌濉湪鏈€鍚庛€�
缁欎竴寮犺仈閫氭棤鍚戝浘锛岃竟鏉冨叏 1锛屽叾涓湁 k 涓叧閿偣锛屾眰閫夊彇涓€瀵瑰叧閿偣澧炲姞涓€鏉¤竟涔嬪悗 1~n 鐨勬渶鐭矾鐨勬渶澶у€�

Solution

浠� \(1,n\) 涓鸿捣鐐� BFS 鍑烘渶鐭矾鏁扮粍锛屽垎鍒涓� \(a[],b[]\)
瀵圭壒娈婄偣鐨勭紪鍙锋寜鐓� \(x_i\) 鍗囧簭鎺掑簭锛岄偅涔堝鏄撹瘉鏄庡浜庢瘡涓� \(x_i\)锛屽彧闇€瑕佽€冭檻 \(y_{i+1}\) 鍗冲彲
CF 题解汇总

Solution

a<b, delta=odd, ans=1
a<b, delta=even, ans=2
a=b ans=0
a>b, delta=odd, ans=2
a>b, delta=even, ans=1
CF 题解汇总

Solution

鎸夌収 \(p[i]\) 杩涜鍒嗘锛屽鏋滄煇涓� \(k\) 涓嶅瓨鍦� \(p[i]=k\)锛岄偅涔堝氨鎶� \(i,i+1\) 鍒嗗壊寮€
澶勭悊鍑烘瘡涓€娈电殑宸︾鐐瑰拰鍙崇鐐�
杩涜€屽鐞嗗嚭姣忔鐨勬渶灏忓€煎拰鏈€澶у€�
濡傛灉瀛樺湪绗� \(i\) 娈电殑鏈€澶у€煎ぇ浜庣 \(i+1\) 娈电殑鏈€灏忓€硷紝灏辫緭鍑� NO
CF 题解汇总

Solution

鍓嶇紑鍜屾悶涓€涓嬪嵆鍙�
CF 题解汇总

Solution

鏋氫妇 \(a\)锛屾灇涓� \(b\ s.t. a|b\)锛屽垯 \(c\) 涓€瀹氭槸 \([c/b]b\) 鎴� \(([c/b]+1)b\)
CF 题解汇总

Solution

棰勫鐞嗗嚭 \(i\) 涓偣缁勬垚鐨勪簩鍙夋爲鐨勬渶澶х瓟妗堝拰鏈€灏忕瓟妗�
閫掑綊鍋氾紝鐢变簬鍙渶瑕佹瀯閫犱竴绉嶆柟妗堬紝鎴戜滑璁╁乏瀛愭爲澶у皬鑳藉皬灏卞皬锛屽洜姝ゆ瘡娆′粠灏忓埌澶ф灇涓惧乏瀛愭爲鐨勭偣鏁板苟妫€楠岋紝濡傛灉妫€楠岄€氳繃灏遍€夊畾涔�
鐜板湪杩橀渶瑕佺‘瀹氬乏鍙冲瓙鏍戝悇鍒嗛厤澶氬皯绛旀涓婂幓锛屼竴绉嶆瀯閫犳€х殑鎯虫硶鏄紝瑕佷箞璁╁乏瀛愭爲閫夋渶灏忥紝瑕佷箞璁╁彸瀛愭爲閫夋渶澶с€傚浜庝换鎰忎竴绉嶅叾瀹冩柟妗堬紝鎴戜滑鍙互閫氳繃鎶婂乏瀛愭爲涓婄殑绛旀涓嶆柇绉诲埌鍙冲瓙鏍戜笂锛岀洿鍒版煇涓€杈硅揪鍒扮晫闄愶紝鏁呯瓑浠枫€�
鎵撻敊鍙橀噺鍚嶆煡鍗婂ぉ鈥︹€�
CF 题解汇总

Solution

鎸� \(x\) 鍏抽敭瀛楀崌搴忔帓搴忥紝渚濇鏋氫妇姣忎釜鐐�
鑰冭檻瀵逛换鎰� \(x_j < x_i\)锛岄偅涔堝綋 \(v_j \leq v_i\) 鏃讹紝瀹冧滑涓嶄細鐩镐氦锛屼笖 \(dis\) 灏辨槸瀹冧滑鍒濇€佺殑璺濈 \(x_i-x_j\)
寮€涓や釜鏍戠姸鏁扮粍锛屼互绂绘暎鍖栧悗鐨� \(v\) 涓轰笅鏍囷紝涓€涓淮鎶や釜鏁板拰锛屼竴涓淮鎶ゅ潗鏍囧拰
閭d箞姣忔璇㈤棶鐨勭瓟妗堝氨鏄� 涓暟鍜� $\cdot x_i - $ 鍧愭爣鍜�
鐒跺悗鎶婅繖涓偣鎻掕繘鍘诲嵆鍙�
鏈変竴涓泦鍚堬紝涓夌鍏冪礌锛屾瘡绉嶅垎鍒湁 \(a_i\) 涓紝姹傛渶澶氳兘鍒嗗嚭鐨勪笉鍚岀殑涓嶅彲閲嶉潪绌哄瓙闆嗙殑涓暟

Solution

璐績锛屽厛鍙� \(1\) 涓殑锛屽啀鍙� \(2\) 涓殑锛屾渶鍚庡彇 \(3\) 涓殑
缁欏畾涓€涓汉涓ゅ満姣旇禌鐨勬帓鍚嶅拰姣旇禌浜烘暟锛屾€绘帓鍚嶆寜鐓т袱鍦烘瘮璧涚殑鎺掑悕鍜岃繘琛岋紝闂繖涓汉鐨勬帓鍚嶏紙鍗冲皬浜庣瓑浜庡畠鐨勫寘鎷粬鑷繁鐨勪汉鏁帮級

Solution

澶у姏鐚滅粨璁猴紙瑙佷唬鐮侊級
鏈� \(n\) 涓綅缃紝鍒嗗埆鍦ㄤ笂闈㈢洊妤硷紝绗� \(i\) 涓笉鑳借秴杩� \(m_i\) 灞傦紝瀵逛换鎰忎竴鏍嬫ゼ锛屽畠鐨勫乏杈规墍鏈夋ゼ涓拰鍙宠竟鎵€鏈夋ゼ涓紝涓嶈兘閮芥湁姣斿畠楂樼殑妤硷紝姹傛渶澶у寲妤煎眰鎬绘暟鍜岀殑鏂规

Solution

Easy锛氭毚鍔涙灇涓惧嘲鍦ㄥ摢锛岀劧鍚庡悜涓や晶閫掓帹杩囧幓鍗冲彲
Hard锛氭棦鐒堕兘鍗曡皟浜嗭紝鐢ㄥ崟璋冩爤缁存姢涓€涓嬪崟鍚戠殑鍓嶇紑/鍚庣紑绛旀锛岀劧鍚庢灇涓惧嘲浣嶇疆鎷艰捣鏉ュ嵆鍙�
搴忓垪闀垮害涓� \(m\)锛屽垵鎬佷负 \(0\)锛屼綘鍙互浠� \(n\) 涓搷浣滀腑閫夋嫨鑻ュ共涓墽琛岋紝绗� \(i\) 涓搷浣滃鍖洪棿 \([l_i,r_i]\) 涓瘡涓綅缃姞涓� \(1\)锛屾渶澶у寲鏈€鍚庢槸濂囨暟鐨勫厓绱犱釜鏁般€備繚璇佸鏋滄柦鍔犱簡鎵€鏈夋搷浣滐紝涓€涓厓绱犵殑鏈€澶у€间笉浼氳秴杩� \(k \leq 8\)

Solution

棣栧厛灏嗘墍鏈夊尯闂寸鏁e寲鎴愬乏闂彸寮€鍖洪棿锛岃€冭檻鐘跺帇 dp锛屼负姣忎釜鍖洪棿鍒嗛厤缂栧彿锛岀紪鍙风殑鍒嗛厤鑼冨洿鏄� \(0\to k-1\)锛屼繚璇佹病鏈夐噸鍙犲嵆鍙紝杩欐牱鍗冲彲璁剧姸鎬佷负 \(f[i][j]\) 琛ㄧず鑰冭檻鍒颁簡绗� \(i\) 涓綅缃紝鍦� \([pos_{i-1},pos_i)\) 杩欐鍖洪棿鍐呯殑鏈夋晥鐘舵€佹槸 \(j\)锛屽湪 \([1,pos_i)\) 杩欐鍖洪棿鍐呮敹鑾风殑鏈€澶у€�
杞Щ鏃讹紝濡傛灉杩欎釜浣嶇疆鏄粨鏉熶篃鏄紑濮嬶紝閭d箞灏卞彲浠ラ€夋嫨淇濇寔鎴栬€呮敼鍙橈紱濡傛灉杩欎釜浣嶇疆鏄粨鏉燂紝閭d箞杩欎釜浣嶅氨褰掗浂锛涘鏋滆繖涓綅缃槸寮€濮嬶紝閭d箞鍐崇瓥鏄惁鎵撳紑銆備负浜嗘柟渚匡紝鎴戜滑鍦ㄧ \(i\) 涓綅缃笂鍋氬尯闂� \([pos_{i-1},pos_i)\) 鐨勫喅绛栵紝杩欐牱濡傛灉 \(popcount(j)\) 鏄鏁帮紝灏辩畻涓婅繖涓€娈电殑璐$尞锛屽惁鍒欎笉绠�
娌℃兂鍒颁竴涓姸鍘� DP 鎶婃垜鍗℃浜�
姣忎釜瀛︾敓鐨勫垎鏁版渶灏戜负 \(0\)锛屾墍浠ユ垜浠彧瑕佹妸闄や簡绗� \(1\) 鍚嶅鐢熶箣澶栫殑鎵€鏈夊鐢熺殑鍒嗘暟鍏ㄩ儴缁欑 \(1\) 涓鐢熷氨鑳戒娇浠栫殑鍒嗘暟鏈€澶с€�
CF 题解汇总

Solution

瀹炶川涓婂氨鏄暣涓瓧绗︿覆宸︾Щ鑻ュ共浣嶏紝澶氬嚭鏉ョ殑閮ㄥ垎鎸埌鍙宠竟锛屽苟鏍规嵁濂囧伓缈昏浆
缁欏畾涓や釜搴忓垪 \(a,b\)锛屼繚璇佹瘡涓簭鍒椾腑鎵€鏈夋暟瀛楃殑 GCD 涓� \(1\)锛岃 \(a*b=c\)锛岀粰瀹氳川鏁� \(p\)锛屾眰 \(t\) 浣垮緱 \(c_t\) 涓嶈兘琚� \(p\) 鏁撮櫎
\(n,m \leq 10^6, x \leq 10^9\)

Solution

瑕佷娇 \(c_i \bmod p \neq 0\)锛屽垯 \(a_0b_i, a_1b_{i-1}, \dots, a_ib_0\) 涓嚦灏戞湁涓€椤规弧瓒� \(a_xb_y \neq 0 \bmod p\)锛岃繖瑕佹眰 \(a_x,b_y \neq 0 \bmod p\)锛屼簬鏄垜浠彧闇€瑕佹寜涓嬫爣浠庡皬鍒板ぇ鎵惧埌绗竴涓� \(a_i \neq 0, b_j \neq 0 \bmod p\)锛岄偅涔� \(i+j\) 灏辨槸绛旀
鑰冭檻鍏呭垎鎬э紝璁剧涓€涓笉鑳借 \(p\) 鏁撮櫎鐨勬槸 \(a_i,b_j\)锛岄偅涔堝浜� \(c_{i+j}\)锛屽畠鐨勫叾瀹冮」涓竴瀹氶兘鍚湁 \(p\) 鍥犲瓙
瀵逛竴涓� \(n\times n\) 鐨勬鐩橈紝姣忎釜鏍煎瓙涓婃湁涓€涓瓧姣嶏紝琛ㄧず閬囧埌杩欎釜鏍煎瓙灏卞悜鐫€鏌愪釜鏂瑰悜璧版垨鑰呭仠姝€€傜幇鍦ㄧ粰瀹氫粠姣忎釜浣嶇疆寮€濮嬩細璧板埌鐨勪綅缃紝鎴栬€呮寰幆锛岃瘯鏋勯€犱竴涓悎娉曠殑妫嬬洏锛屾垨鑰呰緭鍑� INVALID銆�

Solution

闄ゅ幓姝诲惊鐜殑閮ㄥ垎锛岀粓鐐圭浉鍚岀殑鐐逛細褰㈡垚鐙珛鐨勮仈閫氬潡锛屾垜浠粠缁堢偣寮€濮嬪弽鍚� DFS 鍗冲彲
濡傛灉姝诲惊鐜槸鍗曠嫭鐨勪竴涓偣锛屽垯 INVALID
鍚﹀垯锛屾垜浠己琛屾瀯閫犲嚭涓€涓簩鍏冪幆锛岀劧鍚庡綋鍋氱涓€绉嶆儏鍐靛仛鍗冲彲
闇€瑕佸湪 \(n\) 涓汉涓€夊嚭 \(p\) 涓汉绔欑潃闃熶紞涓殑鍚勪釜浣嶇疆涓婏紝鍐嶄粠鍓╀笅鐨� \(n-p\) 涓汉涓€夊嚭 \(k\) 涓汉浣滀负瑙備紬銆傜 \(i\) 涓汉浣滀负瑙備紬鍙互鏈� \(a_i\) 鐨勫緱鍒嗭紝浣滀负闃熶紞涓 \(j\) 涓綅缃笂鐨勪汉鍙互鏈� \(s_{i,j}\) 鐨勫緱鍒嗭紝姹傚緱鍒嗙殑鏈€澶у€笺€�\(n\leq 10^5, p\leq 7\)

Solution

灏嗕汉鎸夌収 \(a\) 浠庡ぇ鍒板皬鎺掑簭锛岃繖鏍峰鏋滄暡瀹氫簡鍝簺浜烘槸闃熶紞锛岄偅涔堝墿涓嬬殑闈犲墠鐨� \(k\) 涓竴瀹氭槸瑙備紬
鑰冭檻鐘跺帇 DP锛岃 \(f[i][j]\) 琛ㄧず鑰冭檻浜嗗墠 \(i\) 涓汉锛岄槦浼嶄腑鍚勪釜浣嶇疆鐨勭姸鎬佷负 \(j\) 鐨勫緱鍒嗘渶澶у€硷紝鍐崇瓥涓嬩竴涓汉鏀惧湪闃熶紞鐨勫摢涓€涓綅缃紝鎴栬€呬笉鍏ラ槦锛屽鏋滀笉鍏ラ槦鍒欏垽瀹氬鏋� \(i-popcount(j) \leq k\) 鍒欏幓褰撹浼�
瀹氫箟涓€涓� \(n\) 鍏冨簭鍒� \(p_i\)锛屽鏋� \(n=1\)锛屽垯搴忓垪鏉冨€间负 \(0\)锛屽惁鍒欏簭鍒楁潈鍊煎氨鏄師搴忓垪鎺掑簭鍚庣浉閭讳袱椤逛箻绉殑鍜屻€傜幇鍦ㄧ瓑姒傜巼鍦伴€夊嚭涓€涓瓙搴忓垪锛岄棶瀹冪殑鏉冨€肩殑鏈熸湜鏄灏戙€傛敮鎸佸姩鎬佸崟鐐逛慨鏀广€�

Solution

瀵逛簬闈欐€佹儏鍐碉紝绛旀涓�

\[\sum_{i=1}^n \sum_{j=i+1}^n \frac{p_i p_j}{2^{j-i+1}} \]

鑰冭檻鐢ㄧ嚎娈垫爲缁存姢锛屽浜庡尯闂� \([l,r]\)锛屾垜浠 \(val\) 涓哄綋鍓嶅尯闂存潈鍊硷紝\(lv=\sum_{i=l}^r p_i2^{i-l}\)锛�\(rv=\sum_{i=l}^r p_i/2^{i-l+1}\)锛�\(sz\) 鏄綋鍓嶅尯闂村唴鏁扮殑涓暟锛屽垯

\[val=val_L+val_R+\frac{1}{2} vl_Lvr_R/2^{sz_L} \\ sz=sz_L+sz_R \\ vl=vl_L+vl_R2^{sz_L} \\ vr=vr_L+vr_R/2^{sz_L} \]

瀵逛簬鍗曠偣 \(a\)锛屽畠鐨� \(val=0, sz=1, vl=a, vr=a/2\)
鑰冭檻鍒板簭鍒椾腑鏈夐噸澶嶅厓绱狅紝鎴戜滑鍏堝皢鎵€鏈夊厓绱狅紙鍖呮嫭淇敼鐨勶級涓€璧疯杩涙潵鎺掑簭锛岀劧鍚庡皢鍘熷鐨勫厛婵€娲伙紝淇敼鍚庣殑鍏堜笉婵€娲伙紙\(val=0,sz=0,vl=0,vr=0\)锛夛紝涓€璧锋寕鍦ㄧ嚎娈垫爲涓�
灏� \(i\) 鍚� \(p[i]\) 杩炶竟锛屽垯鍦ㄦ瘡涓暱搴︿负 \(l\) 鐨勭幆閲岋紝鎴戜滑鍙互鑺辫垂 \(\mathcal{O}(l^2)\) 鐨勬椂闂村幓鏆村姏鏋氫妇绛旀
鑰岀瓟妗� \(k\) 鍚堟硶绛変环浜庣瓟妗� \((k,l)\) 鍚堟硶
浜庢槸鎴戜滑鍙渶瑕佹灇涓� \(l\) 鐨勬瘡涓洜鏁板嵆鍙紝澶嶆潅搴� \(\mathcal{O}(n \sqrt n)\)
缁欏畾涓€妫垫湁鏍规爲锛屾瘡娆¤闂粰瀹氫竴涓偣闆嗭紝闂槸鍚﹀瓨鍦ㄦ牴鍒版煇鐐圭殑閾撅紝浣垮緱鐐归泦涓墍鏈夌偣鍒伴摼鐨勮窛绂讳笉澶т簬 \(1\)銆�

Solution

灏嗘瘡娆¤闂殑缁撶偣鎸夋繁搴︽帓搴忓ソ锛岀浉閭荤殑涓や釜缁撶偣 \(p,q\) 涓€瀹氭弧瓒� \(d[p]-d[lca] \le 1 \or d[q]-d[lca] \le 1\)锛屽叾涓� \(lca=lca(p,q)\)
蹇呰鎬ф樉鐒讹紝鍏呭垎鎬ц€冭檻璁╂瘺姣涜櫕鐨勮寧涓€鐩村線宸€煎ぇ鐨勯偅杈硅蛋鍗冲彲

Solution

鏋氫妇閫夋嫨涓€涓腑闂寸偣锛岃绠楁妸杈逛笂鍘嬪埌涓棿杩欐潯绾夸笂鐨勭瓟妗�
鍘嬬殑鏃跺€欒鑰冭檻涓よ竟鍘嬪拰鍗曡竟鍘嬬殑鎯呭喌
锛堜互涓嬩唬鐮佷腑鐨勪簩鍒嗘樉寰楀緢绱禈锛岀函绮逛负浜嗗伔鎳掕€屽嚭鐜帮級

using namespace std;

define int long long

const int N = 200005;

int n,k,a[N],pre[N],suf[N],ans=1e18;
map<int,int> mp;

signed main() {
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++) {
pre[i]=pre[i-1]+a[i];
}
for(int i=n;i>=1;--i) {
suf[i]=suf[i+1]+a[i];
}
for(int i=1;i<=n;i++) mp[a[i]]++;
for(auto i:mp) if(i.second>=k) {
cout<<0<<endl;
return 0;
}
for(int i=1;i<=n;i++) {
int x=a[i];
int e=upper_bound(a+1,a+n+1,x)-lower_bound(a+1,a+n+1,x);
int g=n-(upper_bound(a+1,a+n+1,x)-a)+1;
int l=lower_bound(a+1,a+n+1,x)-a-1;
int sg=suf[n-g+1];
int sl=pre[l];
int tmp=sg-gx+lx-sl-(n-k);
ans=min(ans,tmp);
if(n-l>=k) {
int tx=sg-gx-(n-l-k);
ans=min(ans,tx);
}
if(n-g>=k) {
int tx=l
x-sl-(n-g-k);
ans=min(ans,tx);
}
//cout<<l<<" "<<e<<" "<<g<<endl;
}
cout<<max(0ll,ans);
}

瀵逛竴涓� \(n\times m\) 鐨勭煩闃碉紝姣忎釜浣嶇疆鏈夋潈鍊� \(a_{ij}\)锛屾瘡娆℃搷浣滀綘鍙互灏嗕竴涓綅缃� \(+2\)锛屾垨灏嗗洓鐩搁偦鐨勪袱涓綅缃悇 \(+1\)銆傚鏋滀竴涓煩闃电粡杩囪嫢骞叉鎿嶄綔锛屽彲浠ヤ娇寰楁墍鏈変綅缃潈鍊肩浉鍚岋紝鎴戜滑绉板畠涓哄ソ鐭╅樀銆傞棶鏈夊灏戜釜濂界煩闃垫弧瓒冲ぇ灏忎负 \(n\times m\)锛屼笖姣忎釜浣嶇疆鐨勬潈鍊奸兘鍦� \([L,R]\) 鍐呫€�

Solution

棣栧厛瑙傚療鍒帮紝濡傛灉 \(nm\) 鏄鏁帮紝涓€瀹氬悎娉曪紱濡傛灉 \(nm\) 鏄伓鏁帮紝鍒欏綋涓斾粎褰� \(\sum_{(i,j)} a_{i,j}\) 鏄伓鏁版椂鍚堟硶
\(nm\) 鏄鏁扮殑鏂规鏁颁綅 \((r-l+1)^{nm}\)
\(nm\) 鏄伓鏁版椂锛岃嫢 \(r-l+1\) 鏄伓鏁帮紝鍒欐墍鏈夋柟妗堜腑鎬诲拰濂囧伓鍚勫崰鎹竴鍗婏紝鏁� \((r-l+1)^{nm}/2\)锛涜嫢 \(r-l+1\) 鏄鏁帮紝鍒欐樉鐒舵€诲拰涓哄伓鏁扮殑姣旀€诲拰涓哄鏁扮殑鏂规鏁板 \(1\)锛屼簬鏄瓟妗堜负 \(((r-l+1)^{nm}+1)/2\)

[CF1333D] Challenges in school 鈩�41 - 閫嗗簭瀵�,鍐掓场鎺掑簭

Description

缁欏畾涓€涓惈 L,R 鐨勫簭鍒楋紝涓€娆℃搷浣滃彲浠ュ皢鑻ュ共涓浉閭� R,L 瀵圭炕杞紝闂兘鍚﹂€氳繃鎭板ソ \(k\) 杞搷浣滃畬鎴愭暣涓炕杞繃绋嬨€�

Solution

棰樼洰缁欏嚭鐨勪氦鎹㈡柟娉曞緢瀹规槗鎯冲埌鍐掓场鎺掑簭銆�
鏈€澶х瓟妗堢瓑浜庨€嗗簭瀵规暟锛岃繖涓彲浠� \(O(n)\) 姹傚嚭锛屾渶灏忕瓟妗堜笉澶ソ姹傘€�
姣忔鍏堢粺璁″嚭閫嗗簭瀵规暟 x锛岀劧鍚庢毚鍔涘幓鍋氫竴杞啋娉★紝浣嗘槸鍐掓场鐨勬鏁颁笂闄愭槸 x-k銆�

Description

闆嗗悎 \(S = \{1,2,...,n\}\) 鐨勪竴涓瓙闆� \(M\) 鐨勪笉瀹岀編鍊肩瓑浜� \(\max_{a,b\in M} gcd(a,b)\) 涓� \(a \neq b\)锛屽浜� \(k =2,3,...,n\)锛屾眰婊¤冻 \(|M|=k\) 鐨勬墍鏈� \(M\) 涓笉瀹岀編鍊肩殑鏈€灏忓€笺€�

Solution

瀵逛簬涓€涓瓙闆嗭紝濡傛灉 \(a,b \in M\) 涓� \(a \bmod b \equiv 0\)锛屽垯鍒犲幓 \(a\) 涓€瀹氭瘮鍒犲幓 \(b\) 浼�
浜庢槸锛岃嫢 \(a\) 鍦ㄦ暟鍒椾腑锛屽垯 \(a\) 鐨勬墍鏈夌害鏁颁竴瀹氬湪鏁板垪涓紝浜庢槸 \((a,b)=c\) 鏃� \(c\) 涓€瀹氬瓨鍦�
浜庢槸涓€涓瓙闆嗙殑绛旀灏辨槸鍏朵腑鎵€鏈夋暟鐨勬渶澶х湡鍥犲瓙鐨勬渶澶у€�
鐩存帴 \(O(n\log n)\) 鏆村姏棰勫鐞嗘渶澶х湡鍥犲瓙锛屾帓搴忚緭鍑哄嵆鍙�

Description

缁欏畾涓€涓暟 \(D \le 10^{15}\)锛屽浜庢墍鏈� \(D\) 鐨勫洜鏁颁綔涓虹粨鐐癸紝鏋勯€犳棤鍚戝浘锛屽鏋滀袱涓偣 \(x>y\) 婊¤冻 \(x/y\) 鏄竴涓川鏁帮紝閭d箞鎴戜滑灏卞湪 \(x,y\) 涔嬮棿杩炰竴鏉¤竟锛岃竟鏉冪瓑浜� \(x\) 鏈夎€� \(y\) 娌℃湁鐨勫洜瀛愮殑涓暟銆傜粰瀹� \(q \le 3 \times 10^5\) 涓闂紝姣忔缁欏畾涓や釜鐐� \(u,v\)锛岃姹傚洖绛旇繖寮犲浘涓� \(u,v\) 鐨勬渶鐭矾寰勭殑鏉℃暟銆�

Solution

鍥句笂涓や釜鐐� \(x,y\) 濡傛灉婊¤冻 \(x | y\)锛岄偅涔� \(x,y\) 涔嬮棿鐨勮窛绂诲氨鏄� \(d(y)-d(x)\)锛屽叾涓� \(d(x)\) 琛ㄧず \(x\) 鐨勫洜瀛愪釜鏁帮紝骞朵笖鏈€鐭矾鐨勬暟閲忓氨鏄� \(y/x\) 鐨勬墍鏈夎川鍥犲瓙鏋勬垚鐨勫閲嶉泦鍚堢殑鎺掑垪鏁扮洰锛堣繖闈炲父绫讳技浜庝竴涓妸璐ㄥ洜瀛愪竴涓釜濉炶繘鍘荤殑杩囩▼锛夈€�
鍥犳 \(p,q\) 闂寸殑鏈€鐭矾涓€瀹氫細缁忚繃 \((p,q)\)锛屽苟涓斿彲浠ユ媶鎴� \(p \to (p,q) \to q\) 涓ゆ锛屾渶鐭矾闀垮害鐩稿姞锛屾渶鐭矾鏁伴噺鐩镐箻銆�
浜庢槸鎵€姹傚嵆涓� \(P(p\)p,q)) \times P(q\(p,q))\)锛岀摱棰堝湪浜� \(P\) 鐨勮绠楀嵆璐ㄥ洜瀛愬垎瑙c€�
鑰冭檻鍒拌繖閲屽嚭鐜扮殑鎵€鏈夎川鍥犲瓙閮芥槸 \(D\) 鐨勮川鍥犲瓙锛岃€� \(D\) 鐨勮川鍥犲瓙鏄剧劧涓嶄細瓒呰繃 \(O(\log D)\) 绉嶏紝鍥犳鏆村姏鏋氫妇鍗冲彲銆�

Description

缁欏畾 \(n \times m\) 鐨勬鐩橈紝姣忎釜鏍煎瓙鏈変竴涓鑹插拰鏂瑰悜銆傚鏋滀竴涓満鍣ㄤ汉姝ゆ椂鍦ㄦ煇涓牸瀛愪腑锛岄偅涔堜笅涓€鏃跺埢浠栦細绉诲姩鐨勮繖涓牸瀛愮殑鏂瑰悜鎵€鎸囧悜鐨勭浉閭荤殑鏍煎瓙涓€傝嫢骞蹭釜鏈哄櫒浜哄湪妫嬬洏涓婃棤闄愬湴璧颁笅鍘伙紝璇锋壘鍑轰竴绉嶆斁缃満鍣ㄤ汉鐨勬柟妗堬紝闇€瑕佷繚璇佷换鎰忔椂鍒讳笉浼氭湁涓や釜鏈哄櫒浜哄悓鏃跺嚭鐜板湪鍚屼竴涓牸瀛愪腑锛屽湪鏈€澶у寲鏈哄櫒浜烘€绘暟鐨勫墠鎻愪笅锛屾渶澶у寲鍒濇€佷笅浣嶄簬榛戣壊鏍煎瓙涓婄殑鏈哄櫒浜烘€绘暟銆�

Solution

寰堟樉鐒舵垜浠渶瑕佸姣忎竴涓€滆繛閫氬潡鈥濆垎鍒€冭檻锛岃繖涓繛閫氬潡涓€瀹氬寘鍚竴涓幆浠ュ強鑻ュ共涓唴鍚戦摼銆�
鏆村姏鎵剧幆鐢ㄥ苟鏌ラ泦缁存姢褰撶劧鍙互锛屼絾鏄湁鐐归夯鐑︺€�
鑰冭檻鍒板湪瓒冲闀跨殑鏃堕棿鍚庯紝鎵€鏈夋満鍣ㄤ汉涓€瀹氶兘浼氳蛋鍒扮幆涓婂幓锛屽洜姝ゆ垜浠彧闇€瑕佺粰鍑轰竴涓冻澶熷ぇ鐨� \(M\)锛屾眰鍑� \(M\) 鏃堕棿鍚庯紝姣忎釜鍒濇€佷綅缃彲浠ュ埌杈剧殑浣嶇疆锛岃繖浜涗綅缃殑骞堕泦鐨勫ぇ灏忓氨鏄瓟妗堛€�
鑰冭檻鍊嶅锛屼护 \(f[i][j]\) 琛ㄧず鐐� \(i\) 璧颁簡 \(2^j\) 姝ュ悗鐨勪綅缃紝甯歌澶勭悊鍗冲彲銆�

Description

缁欏畾涓€涓瓧绗︿覆 \(S\) 鍜屼竴涓瓧绗︿覆 \(T\)锛屾瘡娆℃搷浣滃彲浠ヤ粠 \(S\) 鐨勫紑澶村垹鍘讳竴涓瓧绗︼紝鎶婂畠鍔犲埌涓€涓垵濮嬩负绌虹殑涓茬殑寮€澶存垨缁撳熬锛屼笉蹇呭垹瀹岋紝姹傛湁澶氬皯绉嶄笉鍚岀殑鏂规硶浣垮緱 \(T\) 鏄� \(A\) 鐨勫墠缂€銆�

Solution

鎵€璋撹姹� \(T\) 鏄� \(A\) 鐨勫墠缂€锛屽嵆瑕佹眰 \(A\) 鐨勫墠 \(T\) 涓瓧绗︽槸 \(A\)銆�
鑰冭檻 dp锛岃 \(f[i][j]\) 琛ㄧず鐢� \(S\) 鐨勫墠 \(j-i+1\) 涓瓧绗︽瀯閫犲嚭 \(T[i..j]\) 鐨勬柟妗堟暟銆�
鑰冭檻杞Щ锛屾瘡娆¤嫢 \(T[i]=S[j-i+1]\)锛岄偅涔� \(f[i][j] \leftarrow f[i+1][j]\)锛屽弽杩囨潵涔熷悓鐞嗐€�
鍒濇€佹潯浠跺彲浠ョ洿鎺ヤ护鎵€鏈� \(f[i][i-1]=1\)銆�
鏈€缁堢殑绛旀鍗充负 \(\sum_{i=|T|}^{|S|} f[1][i]\)銆�

Description

缁欏畾涓€妫� $ n $ 涓偣鐨勬棤鏍规爲锛岃姹傜粰姣忔潯杈瑰垎閰嶄竴涓�姝f暣鏁�鏉冨€硷紝浣垮緱浠绘剰涓や釜鍙跺瓙鑺傜偣涔嬮棿璺緞涓婄殑杈规潈寮傛垨鍊间负 $ 0 \(銆傛眰鏈€灏戣澶氬皯绉嶄笉鍚屾潈鍊硷紝浠ュ強鏈€澶氬彲浠ヤ娇鐢ㄥ灏戠涓嶅悓鏉冨€笺€�<br> 杩欓噷锛屽~鍏ョ殑杈规潈鍊煎彲浠ヤ负浠绘剰澶с€�<br> \) 3 \le n\le 10^5 $

Solution

鑰冭檻鏈€灏忓€硷紝濡傛灉瀛樺湪涓や釜鍙跺瓙涔嬮棿鐨勮窛绂讳负濂囨暟锛屽垯绛旀涓� \(3\)锛堟病鏈夎繛鎺ュ彾鑺傜偣鐨勮竟涓婁氦鏇垮~ \(1,2\)锛岄儴鍒嗗彾瀛愯竟鍙兘濉� \(3\)锛夛紝鍚﹀垯绛旀涓� \(1\)
鑰冭檻鏈€澶у€硷紝灏嗘瘡涓粨鐐圭殑鍙跺瓙缁撶偣鍚堝苟涓轰竴涓粨鐐瑰悗锛岃绠楁爲杈圭殑鎬绘暟

Description

鎸夌収濡備笅鏂瑰紡鏋勯€犱竴涓棤绌锋暟鍒� \(S\)銆傞€夊彇涓€涓瓧鍏稿簭鏈€灏忕殑涓夊厓缁� \((a,b,c)\) 婊¤冻 \(a,b,c \notin S\)锛屽苟涓� \(a \oplus b \oplus c = 0\)锛屽皢 \(a,b,c\) 渚濇鍔犲叆鍒板簭鍒� \(S\) 鏈熬銆傜粰瀹� \(n\) 姹傛暟鍒楃殑绗� \(n\) 椤广€�

Solution

瑙傚療鍒帮紝涓変釜鎴愮粍锛岀瓟妗堝彲浠ュ垎涓鸿嫢骞叉锛岀 \(i \ge 0\) 鐨勯暱搴︿负 \(4^{i-1}\)銆�
璁惧綋鍓嶇粍鐨勫紑澶存暟瀛椾负 \(B\)锛屽垯 \(B \sim B+4^{i-1}-1\) 閮芥槸鍒嗛厤缁� \(a\) 鐨勶紝\(B \sim B+4^{i-1} \sim B + 2 \times 4^{i-1} - 1\) 閮芥槸鍒嗛厤缁� \(b\) 鐨勶紝\(c\) 鍙互鍋锋噿鐢� \(a,b\) 姹傚嚭銆�
涓轰簡姹� \(b\)锛屽彲浠ュ皢褰撳墠鍖洪棿鍒嗘垚鍥涙锛屽垎鍒彇绗� \(1,3,4,2\) 灏忕殑 \(B \sim B+4^{i-1} \sim B + 2 \times 4^{i-1} - 1\) 鍒掑垎鎴愬洓娈靛悗鐨勫瓙鍖洪棿锛岀劧鍚庨€掑綊鍒嗘不涓嬪幓锛岀洿鍒版眰鍑恒€�
鍏跺疄 \(c\) 涔熷彲浠ョ敤绫讳技 \(b\) 鐨勬柟娉曠洿鎺ユ眰鍑猴紝鍙鎶婇『搴忔崲鎴� \(1,4,2,3\) 鍗冲彲銆�
褰撶劧涔熷彲浠ヤ笉閫掑綊锛岀洿鎺ュ啓鍏ヤ簩杩涘埗鍚勪綅鐨勫€笺€�

Description

缁欏畾鏃犲悜鍥惧拰涓€涓潈鍊煎閲嶉泦锛岀敤瀹冪粰鏃犲悜鍥惧垎閰嶈竟鏉冿紝瑕佹眰鏄叏鎺掑垪锛屾眰璺緞 \(a \to b \to c\) 鏈€鐭暱搴︺€�

Solution

鑰冭檻鍒� \(a \to b\) 鍜� \(b \to c\) 鍙兘鏈変竴娈甸噸澶嶇殑 \(b - d\)锛屾灇涓� \(d\)锛岃繖鏍峰彧闇€姹傚嚭 \(a \to d, d \to b, b \to d, d \to c\) 鐨勬渶灏忓€�
璁惧鏌愪釜 \(d\)锛�\(a-d,b-d,c-d\) 闀垮害鍒嗗埆涓� \(x,y,z\)锛屽垯鎴戜滑浼氬皢鏈€灏忕殑 \(y\) 涓竟鏉冨垎閰嶇粰 \(b-d\)锛屽墿浣欎腑鏈€灏忕殑 \(x+z\) 涓垎閰嶇粰 \(a-d,c-d\)锛屽洜姝ゅ彲浠ュ湪 \(O(1)\) 涓绠楀嚭闀垮害锛屾晠鏃堕棿澶嶆潅搴︿负 \(O(n)\)

Description

鏈変竴涓� \(n \times m\) 鐨勬柟鏍煎浘锛屾牸瀛愯鏌撴垚浜嗛粦鑹叉垨鑰呯櫧鑹层€傝鍦ㄩ噷闈㈡斁涓€浜涘崟鏋佺閾侊紝涓€涓牸瀛愬唴鍙互鏀剧疆澶氫釜纾侀搧銆�
瀹氫箟纾侀搧鐨勫惛寮曪細濡傛灉 N 涓� S 澶勫湪鍚屼竴琛�/鍒椾腑锛岄偅涔� N 浼氬悜鐫€ S 鐨勬柟鍚戠Щ鍔ㄤ竴鏍笺€�
姣忚姣忓垪鑷冲皯鏈変竴涓� S銆�
瀵逛簬姣忎釜榛戣壊鏍煎瓙锛岃嚦灏戝瓨鍦ㄤ竴涓� N 浣垮緱缁忚繃涓€绯诲垪鍚稿紩鎿嶄綔鍙互缁忚繃瀹冦€�
瀵逛簬姣忎釜鐧借壊鏍煎瓙锛屼笉瀛樺湪浠讳綍涓€涓� N 浣垮緱缁忚繃绯诲垪鍚稿紩鎿嶄綔鍙互缁忚繃瀹冦€�
姹傝嚦灏戦渶瑕佸嚑涓� N 纾侀搧銆�

Solution

瀵逛簬姣忎釜榛戣壊杩為€氬潡锛屾毚鍔涙妸姣忎釜鏍煎瓙鏀句笂 S锛岄偅涔堣繖涓繛閫氬潡涓彧瑕佹斁涓€涓� N锛岃繖涓繛閫氬潡灏� OK 浜嗐€�
涓€琛�/鍒椾腑锛屼笉鑳藉瓨鍦ㄤ袱涓笉鐩搁偦鐨勯粦鑹插潡锛堝洜涓烘瘡琛屾瘡鍒楄嚦灏戞湁涓€涓� S锛夈€�
涓€涓牸瀛愬彲浠ユ斁 S锛屽綋涓斾粎褰撳畠鏄粦锛屾垨鑰呭畠鎵€鍦ㄨ鍒楀潎娌℃湁榛戙€傚悓鏃舵垜浠姹傛瘡琛屾瘡鍒楅兘鑷冲皯鏈変竴涓� S锛屽洜姝よ繕闇€瑕佹牴鎹繖涓潯浠舵楠屼竴涓嬨€�
缁间笂鎵€杩帮紝鎴戜滑棣栧厛鍒ゆ柇姣忚/鍒椾腑鏄惁瀛樺湪涓や釜涓嶇浉閭荤殑榛戝潡锛岀劧鍚庡垽鏂浜庢瘡琛屾瘡鍒楁槸鍚﹂兘鑷冲皯瀛樺湪涓€涓綅缃弧瓒冲畠鏄粦锛屾垨鑰呭畠鎵€鍦ㄨ鍒楀潎娌℃湁榛戙€傚鏋滄垚绔嬶紝閭d箞鎴戜滑杈撳嚭榛戣壊杩為€氬潡鐨勪釜鏁板嵆鍙€�

Description

鏈変竴涓川閲忎负 \(1\) 鐨勭粏鑿屻€傛帴涓嬫潵鐨勬瘡涓€澶╋紝浼氭湁鑻ュ共涓粏鑿屽垎瑁傛垚涓や釜锛�0 $ \le $ 鍒嗚鐨勭粏鑿岀殑鏁伴噺 $ \le $ 褰撳墠鐨勭粏鑿屾暟锛夛紝涓や釜缁嗚弻鐨勮川閲忕殕涓哄師鏉ョ粏鑿岀殑涓€鍗娿€傛墍鏈夌粏鑿屽垎瑁傚畬涔嬪悗姣忎釜缁嗚弻鐨勮川閲忓闀�1銆�

缁欏嚭浣犱竴涓暣鏁� $ n $锛屾瀯閫犳柟妗堣兘澶熷湪鑻ュ共澶╁悗浣垮緱缁嗚弻璐ㄩ噺鐨勫拰绛変簬 $ n $

Solution

鍒嗚涓嶄細褰卞搷鎬昏川閲忥紝鍙細褰卞搷姝ゅ悗璐ㄩ噺澧炲姞鐨勯€熷害锛岃嫢褰撳墠鏁伴噺涓� \(x\)锛屽垯 \(x \le \Delta m \le 2x\)
浜庢槸璐績鍦板彇锛屽綋涓嶅鐨勬椂鍊欏氨灏嗕笉澶熺殑涓€娆″彇璧板嵆鍙�

Description

缁欎釜n*m鐨勭綉鏍硷紝閲岄潰涓€浜涙牸瀛愪竴寮€濮嬫槸鐧借壊(0)锛屽彟涓€浜涙槸榛戣壊(1)锛屾帴涓嬫潵缃戞牸鍙繘琛岃凯浠o紝瀵逛簬姣忔杩唬锛屾牸瀛愰噷棰滆壊鐨勫彉鍖栭伒寰互涓嬭鍒欙細鑻ヨ鏍煎瓙鏈夌浉閭绘牸瀛愮殑棰滆壊涓庝箣鐩稿悓锛屽垯棰滆壊缈昏浆锛涜嫢璇ユ牸瀛愭病鏈夌浉閭绘牸瀛愮殑棰滆壊涓庝箣鐩稿悓锛屽垯棰滆壊涓嶅彉銆傛湁t娆¤闂紝姣忔璇㈤棶閮芥湁i, j, p锛岃〃绀洪棶绗琲琛岀j鍒楁牸瀛愬湪绗琾娆¤凯浠e悗鏄粈涔堥鑹层€�

Solution

濡傛灉鐩搁偦鐨勪袱涓偣鏈変竴鏍风殑棰滆壊锛屽氨浼氬湪涓嬩竴娆℃搷浣滀腑淇濇寔鍚屾牱鐨勯鑹插苟寮€濮嬪彉鑹�
鑰冭檻姹傚嚭 \(f[i][j]\) 琛ㄧず绗� \((i,j)\) 涓偣鍦ㄥ灏戞杩唬鍚庡紑濮嬪彉鑹�
濡傛灉涓€涓牸瀛愪竴寮€濮嬪氨鑳藉彉鑹诧紝璁� \(f[i][j]=0\)锛屽惁鍒欒 \(f[i][j] = \infty\)
浠庡紑濮嬪氨鑳藉彉鑹茬殑鏍煎瓙寮€濮� BFS锛屽綋鍋氳竟鏉冧负 \(1\) 鐨勬渶鐭矾闂 BFS 鍗冲彲
澶勭悊璇㈤棶鏃讹紝濡傛灉涓€涓牸瀛愮殑 \(f[i][j]=\infty\)锛屽垯鍙栧叾鍘熷棰滆壊锛涘鏋� \(time<f[i][j]\)锛屼篃鍙栧叾鍘熷棰滆壊锛涘鏋� \(time \ge f[i][j]\)锛屽垯鑰冭檻 \(time-f[i][j]\) 鐨勫鍋舵€э紝濡傛灉鏄鏁板垯涓庡師濮嬮鑹茬浉鍙嶏紝鍋舵暟鍒欑浉鍚�

Description

缁欏畾涓€涓� \(n \times m\) 鐨勭煩闃碉紝浠� \((1,1)\) 璧板埌 \((n,m)\)锛屾瘡娆″彧鑳戒粠鏉冨€间负 \(x\) 鐨勪綅缃蛋鍒版潈鍊间负 \(x+1\) 鐨勪綅缃紝鍒濇€佷笅鍙互瀵硅嫢骞蹭釜鏍煎瓙杩涜涓€浜涙搷浣滐紝姣忔浣垮緱涓€涓牸瀛愮殑鏉冨€煎噺灏� \(1\)銆傛眰鏈€灏戣鎿嶄綔澶氬皯娆′娇寰楀瓨鍦ㄥ悎娉曠殑璺緞銆�

Solution

濡傛灉璺緞涓婄涓€涓偣鐨勬潈鍊肩‘瀹氾紝閭d箞鏁存潯璺緞鐨勬潈鍊间篃闅忎箣纭畾銆�
鍥犳鎴戜滑鏆村姏鏋氫妇绗竴涓偣鐨勬潈鍊� \(h\) 鐒跺悗 dp 鍗冲彲銆�
浠� \(f[i][j]\) 琛ㄧず鍒拌揪 \((i,j)\) 涓烘鑺辫垂鐨勬渶灏忎唬浠枫€�
濡傛灉 \(a[i][j]<h+i+j-2\)锛屽垯闈炴硶锛岀洿鎺ヤ护 \(f[i][j] \to \infty\)銆�
鍚﹀垯锛岄渶瑕佽姳璐� \(a[i][j]-h-i-j+2\)锛屼粠 \((i-1,j)\) 鎴� \((i,j-1)\) 杞Щ杩囨潵銆�

Description

缁欏畾涓€涓竟闀夸负 \(1\) 鐨勬 \(2n\) 杈瑰舰锛屾眰鑳藉绾冲畠鐨勬渶灏忕殑姝f柟褰㈢殑杈归暱銆�

Solution

鏍规嵁瀵圭О鎬у緱锛屽湪杞姩 \(\pi / 4n\) 鐨勬椂鍊欏彇寰楁瀬鍊硷紝瀹规槗楠岃瘉鍏朵负鏈€灏忓€笺€�
鑰冭檻杈归暱涓� \(1\) 鏃讹紝寮﹀績璺濅负 \(\frac {1} {2 \sin(\pi / 2n)}\)锛屼簬鏄鏂瑰舰杈归暱涓� \(2 \frac {cos(\pi / 4n)} {2 \sin(\pi / 2n)}\) = $ \frac {cos(\pi / 4n)} {\sin(\pi / 2n)}$銆�

[CF1354D] Multiset

Description

缁存姢涓€涓彲閲嶉泦銆傚垵濮嬫椂閲岄潰鏈� \(n\) 涓鏁存暟 \(\{A_1,A_2,\cdots A_n\}\)锛屽畠浠殑鍊煎煙涓� \([1,n]\)銆傜幇鍦ㄦ湁 \(q\) 涓搷浣滐紝鍏辨湁涓ょ被锛氬垹闄ゆ帓鍚嶄负 \(|k|\) 鐨勬暟瀛楋紝鑻ヤ笉瀛樺湪鎺掑悕涓� \(|k|\) 鐨勬暟瀛楋紝鍒欏拷鐣ヨ繖娆℃搷浣滐紱鍔犲叆鏁板瓧 \(k\)锛屾弧瓒� \(k\in[1,n]\)銆傝緭鍑轰换鎰忎竴涓暟鍒椾腑瀛樺湪鐨勬暟瀛楁垨鍒ゅ畾闆嗗悎涓虹┖銆�

Solution

鐢变簬鍙渶瑕佽緭鍑轰竴涓暟锛屾垜浠彲浠ヨ€冭檻閽﹀畾杈撳嚭鏈€灏忕殑閭d釜鏁般€�
浜屽垎绛旀锛屽嵆姝ゆ椂鎴戜滑纭畾浜嗘渶鍚庡墿涓嬬殑鏈€灏忕殑鏁版槸澶氬皯锛岃涓� \(mid\)锛岄偅涔堝皬浜庣瓑浜� \(mid\) 鐨勬暟鎴戜滑閮藉綋鍋� \(0\)锛屽ぇ浜� \(mid\) 鐨勬暟鎴戜滑閮藉綋鍋� \(1\)銆�

Description

缁欏畾 \(n\) 涓偣鐨勬棤鍚戝浘鍜屼竴涓暣鏁� \(k \le n\)锛岃姹傝В鍐充竴涓嬮棶棰樹腑鐨勪换浣曚竴涓細姹備竴涓ぇ灏忔伆濂戒负 \(\lceil \frac n 2 \rceil\) 鐨勭嫭绔嬮泦锛涙眰涓€涓ぇ灏忎笉瓒呰繃 \(k\) 鐨勭幆銆傚凡缁忓彲浠ヨ瘉鏄庡浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓€�

Solution

鐢变簬宸茬粡淇濊瘉浜嗗浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓紝鎴戜滑涓嶅Θ鍙� \(k=n\)锛屾鏃跺鏋滃師鍥炬槸涓€妫垫爲锛岄偅涔堟垜浠洿鎺ヤ簩鍒嗗浘鏌撹壊鍗冲彲锛涘惁鍒欙紝蹇呯劧鏈変竴涓暱搴︿笉瓒呰繃 \(n\) 鐨勭幆銆�
鑰冭檻鍘熼棶棰橈紝鎴戜滑鍙渶瑕佹壘涓€涓粨鐐规暟涓� \(k\) 鐨勮繛閫氬瓙鍥撅紙鐢变簬鍘熷浘鏄繛閫氱殑鎵€浠ユ垜浠竴瀹氳兘鎵惧埌锛夛紝瀵硅繖涓瓙鍥捐繘琛屼笂闈㈢殑姹傝В鍗冲彲銆�

Description

浣犺淇悊涓€鍫靛锛岃繖鍫靛鐢� \(N\) 涓搴︿负涓€鐨勭爾鍧楁瀯鎴愶紝鍏朵腑绗� \(i\) 鍧楃爾鐨勯珮搴︿负 \(h_i\) 銆備綘闇€瑕佹墽琛屼笅鍒楁搷浣滆杩� \(N\) 鍧楃爾鐨勯珮搴﹀彉寰楀叏閮ㄧ浉绛夈€�
1銆佷娇涓€鍧楃爾鐨勯珮搴﹀姞涓€锛岃繖闇€瑕佽姳璐� \(A\) 鐨勪唬浠枫€�
2銆佷娇涓€鍧楅珮搴︿负姝g殑鐮栫殑楂樺害鍑忎竴锛岃繖闇€瑕佽姳璐� \(R\) 鐨勪唬浠枫€�
3銆佷娇涓€鍧楅珮搴︿负姝g殑鐮栫殑楂樺害鍑忎竴锛屽彟涓€鍧楃爾鐨勯珮搴﹀姞涓€锛岃繖闇€瑕佽姳璐� \(M\) 鐨勪唬浠枫€�
缁欏畾 \(N,A,R,M\) 锛屼綘闇€瑕佹眰鍑轰娇鎵€鏈夌爾鐨勯珮搴﹀彉寰楃浉鍚岀殑鏈€灏忎唬浠枫€�

Solution

棣栧厛灏� \(M\) 瀵� \(A+R\) 鍙� \(\min\)锛岀劧鍚庝笁鍒嗙洰鏍囬珮搴︼紝鑳界敤 3 鎿嶄綔灏卞厛鐢� 3 鎿嶄綔锛屽墿涓嬬殑鐢� 2 鎿嶄綔銆�

[CF1358D] The Best Vacation - 鍙屾寚閽�

Description

涓€骞存湁 \(n\) 涓湀锛岀 \(i\) 涓湀鏈� \(a_i\) 澶╋紝鍦ㄦ瘡涓湀鐨勭 \(j\) 澶╀綘灏嗗緱鍒� \(j\) 涓嫢鎶便€備綘鎯宠鍜屾煇浜哄緟鍦ㄤ竴璧� \(x\) 澶╋紙杩炵画锛夛紝姹傛渶澶氳兘寰楀埌澶氬皯涓嫢鎶便€�

Solution

褰撴垜浠€夋嫨鐨勭粨灏炬槸涓€涓湀鐨勬渶鍚庝竴澶╂椂锛屾樉鐒朵笉浼氫娇寰楃瓟妗堟洿鍔o紝鍥犳鎴戜滑鏋氫妇閫夋嫨鐨勭粨灏炬槸鍝竴澶╋紝杩欐牱鍙兘鐨勬儏鍐靛彧鏈� n 绉嶏紝棰勫鐞嗗墠缂€鍜屽悗鐢ㄥ弻鎸囬拡缁存姢鍗冲彲銆�

Description

姹� \(l,r\) 浣垮緱 \(\sum_{l \le i \le r} a_i - \max_{l \le i \le r} a_i\) 鏈€澶у寲銆�\(|a_i| \le 30\)

Solution

鑰冭檻鏋氫妇鍒犻櫎鐨勬暟鐨勫ぇ灏� \(val\)锛岄偅涔堢幇鍦ㄥ彧鏈� \(a_i \le val\) 鐨勬暟鎵嶆槸鍙敤鐨勶紝杩欐牱鍘熷簭鍒楀氨琚垎鍓叉垚浜嗚嫢骞叉锛岄€夋嫨涓嶈兘璺ㄦ銆�
鍋囧鐩搁偦鐨勪袱涓笉鍙敤浣嶇疆鏄� \(p,q\)锛岄偅涔堝彲鐢ㄥ尯闂村氨鏄� \([p+1,q-1]\)锛屽湪鍓嶇紑鍜屽簭鍒椾笂鐨勯€夋嫨浣嶇疆灏辨槸 \([p,q-1]\)銆�
鎴戜滑鑰冭檻鎵弿鍥哄畾涓€涓乏绔偣锛屽彸绔偣涓嶆柇鍚戝彸骞崇Щ锛屽鏋滅疮绉拰灏忎簬闆跺垯缃负 \(0\)锛屽悓鏃朵笉鏂洿鏂扮瓟妗堬紝閬囧埌涓嶅彲鐢ㄧ偣鏃讹紝灏嗙疮绉拰缃负 \(0\) 骞惰烦杩囥€�

Description

姹傛湁澶氬皯鍗曡皟閫掑鐨勬暟鍒� \(a_1,a_2,...,a_n\)锛屽浜庝换鎰忎竴涓� \(x\) 閮芥弧瓒筹紝瀵逛簬浠绘剰涓€绉嶆帓鍒� \(p\)锛岄兘鏈� \(x \mod a_{p_1} \mod a_{p_2} \mod ... \mod a_{p_n} = Const\) 鎴愮珛銆�

Solution

棣栧厛鑰冭檻鍙湁涓や釜鏁扮殑鎯呭喌锛�\(x \mod a \mod b = x \mod b \mod a\) 鎴愮珛褰撲笖浠呭綋 \(a,b\) 涓ぇ鐨勬槸灏忕殑鐨勫€嶆暟銆�
鐚滄兂搴忓垪涓换浣曚竴涓暟蹇呴』鏄渶灏忔暟鐨勫€嶆暟銆傚厖鍒嗘€ф槸鏄剧劧鐨勩€�
鍋囪鏈変竴涓暟涓嶆槸鏈€灏忔暟鐨勫€嶆暟锛岄偅涔堝皢鍏朵粬鏄€嶆暟鐨勬暟鎵撴垚涓€涓暣浣擄紝涓€浜涙槸鍊嶆暟鐨勬暟鐨勮繛缁鐞嗘湰璐ㄤ笂绛変环浜庡鏈€灏忕殑閭d釜鏁板彇妯★紝鍥犳杞寲涓轰笂闈㈠彧鏈変袱涓暟鐨勬儏鍐点€傝繖鏍峰氨鍙嶈瘉浜嗕竴涓暟涓嶆槸鏈€灏忔暟鐨勫€嶆暟鐨勬儏鍐垫槸涓嶅瓨鍦ㄧ殑锛屼笉姝竴涓暟鐨勬儏鍐靛悓鐞嗐€�
鎴戜滑鏋氫妇搴忓垪涓殑鏈€灏忔暟 \(i\)锛岄偅涔堝畠鐨勫€嶆暟鏈� \([n/i]-1\) 涓紝鎴戜滑瑕佷粠杩欎簺涓€夊嚭 \(k-1\) 涓紝鏆村姏璁$畻缁勫悎鏁板嵆鍙€�

Description

缁欏畾鍥涗釜姝f暣鏁� \(n,m,a,b\)锛屾瀯閫犳弧瓒虫潯浠剁殑 \(n \times m\) 鐭╅樀锛氱煩闃垫瘡琛屽寘鍚� \(a\) 涓� \(1\)锛岀煩闃垫瘡鍒楀寘鍚� \(b\) 涓� \(1\)锛岀煩闃靛墿涓嬬殑浣嶇疆鍏ㄤ负 \(0\)銆�

Solution

褰撲笖浠呭綋 \(na=mb\) 鏃讹紝鍙互鏋勯€犲嚭绗﹀悎瑕佹眰鐨勭煩闃点€傛瀯閫犳椂鎴戜滑鍙渶瑕佹寜琛屽垪鍒嗗埆寰幆鍗冲彲銆�

Description

涓€鍏辨湁 \(2^m\) 涓暱搴︿负 \(m\) 鐨� 01 瀛楃涓诧紝姹備粠涓垹鍘� \(n\) 涓悗锛屾眰鍓╀笅 \(2^m-n\) 涓簩杩涘埗鏁版寜鐓у瓧鍏稿簭鎺掑簭鍚庣殑涓綅鏁般€傝嫢鏈夊伓鏁颁釜鏁帮紝鍒欏彇涓棿闈犲乏鐨勬暟浣滀负杩� \(2^m -n\) 涓簩杩涘埗鏁扮殑涓綅鏁般€�\(T \le 1000, n \le 100, m \le 60\)

Solution

妯℃嫙涓€涓� Kth 鐨勮繃绋嬶紝鏄剧劧 \(k=[\frac {n+1} 2]\)锛屼粠楂樺埌浣庢灇涓句緷娆$‘瀹氬悇浣嶏紝鍋囪鐜板湪鏋氫妇鍒颁簡绗� \(p\) 浣嶏紝妫€鏌ョ \(p\) 浣嶄负 \(0\) 鏃舵暟瀛楃殑涓暟锛屽鏋滀釜鏁� \(\le k\) 鍒欏皢绗� \(p\) 浣嶅畾涓� \(0\)锛屽惁鍒欏畾涓� \(1\) 骞跺噺鍘昏繖涓凡缁忕粺璁″嚭鐨勪釜鏁�
鏃堕棿澶嶆潅搴� \(O(Tnm^2)\)锛屽叾瀹炰篃鍙互鐢ㄤ綅杩愮畻鍘嬪埌 \(O(Tnm \log m)\)

[CF1363D] Guess The Maximums

Description

缁欏畾搴忓垪 \(a\) 鐨勯暱搴� \(n\) 鍜� \(k\) 涓簰涓嶇浉浜ょ殑瀛愰泦 \(S_i\)锛屾瘡娆℃煡璇㈠彲浠ヨ緭鍑轰竴浜涗笅鏍� \(q_1,q_2,...,q_c\) 骞跺緱鍒板簭鍒椾腑杩欎簺浣嶇疆鐨勬暟鐨勬渶澶у€笺€傚姣忎釜瀛愰泦 \(S_i\)锛屾眰鍑哄簭鍒� a 涓笉鍦ㄨ瀛愰泦涓嬫爣鑼冨洿鍐呯殑鏈€澶у€笺€�

Solution

閫氳繃涓嶈秴杩� 11 娆¤闂壘鍑哄簭鍒椾腑鏈€澶у€肩殑涓嬫爣 m锛屽惈鏈� m 鐨勫瓙闆嗘樉鐒跺彧鏈変竴涓� \(S_x\)锛屽垯瀵逛换鎰� \(S_i, i \neq x\) 鍏剁瓟妗堟樉鐒朵负 m锛屽浜� \(S_x\)锛屾垜浠墜鍔ㄦ眰涓€娆′笉鍦ㄨ瀛愰泦鍐呯殑鏈€澶у€煎嵆鍙€�

Description

缁欏畾涓€妫垫爲锛屾瘡涓偣鏈変竴涓唬浠� \(a_i\)锛屼竴涓垵濮嬪€� \(b_i\) 鍜屼竴涓洰鏍囧€� \(c_i\)锛屾瘡娆″彲浠ラ€夋嫨浠� \(u\) 涓烘牴鐨勫瓙鏍戯紝閫夋嫨涓€涓� \(k\) 骞堕€夋嫨瀛愭爲涓� \(k\) 涓粨鐐逛氦鎹㈠叾鍊硷紝浠d环 \(k \cdot a_u\)銆傛眰鏈€灏忎唬浠枫€�

Solution

鏍戜笂鍓嶇紑 \(\min\) 鍚庯紝鏄剧劧瀵逛簬浠绘剰涓や釜闇€瑕佷氦鎹㈢殑鐐规垜浠敤涓斿彧浼氱敤瀹冪殑 LCA 澶勬潵浣滀负浜ゆ崲鎿嶄綔鐨勬牴銆�
鍥犳鎴戜滑鍙渶瑕佹妸鏁存5鏍� DFS 涓€閬嶏紝鍦ㄦ瘡涓偣澶勮椽蹇冧氦鎹㈡墍鏈夎兘浜ゆ崲鐨勶紝鍓╀綑鐨勪笂浼犲嵆鍙€�

Description

缁欏畾 \(n\) 涓偣鐨勬棤鍚戝浘鍜屼竴涓暣鏁� \(k \le n\)锛岃姹傝В鍐充竴涓嬮棶棰樹腑鐨勪换浣曚竴涓細姹備竴涓ぇ灏忔伆濂戒负 \(\lceil \frac n 2 \rceil\) 鐨勭嫭绔嬮泦锛涙眰涓€涓ぇ灏忎笉瓒呰繃 \(k\) 鐨勭幆銆傚凡缁忓彲浠ヨ瘉鏄庡浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓€�

Solution

鐢变簬宸茬粡淇濊瘉浜嗗浜庝换鎰忕粰瀹氱殑鏁存暟 \(k\) 涓€瀹氬彲浠ヨВ鍐宠繖涓や釜闂涓殑涓€涓紝鎴戜滑涓嶅Θ鍙� \(k=n\)锛屾鏃跺鏋滃師鍥炬槸涓€妫垫爲锛岄偅涔堟垜浠洿鎺ヤ簩鍒嗗浘鏌撹壊鍗冲彲锛涘惁鍒欙紝蹇呯劧鏈変竴涓暱搴︿笉瓒呰繃 \(n\) 鐨勭幆銆�
鑰冭檻鍘熼棶棰橈紝鎴戜滑鍙渶瑕佹壘涓€涓粨鐐规暟涓� \(k\) 鐨勮繛閫氬瓙鍥撅紙鐢变簬鍘熷浘鏄繛閫氱殑鎵€浠ユ垜浠竴瀹氳兘鎵惧埌锛夛紝瀵硅繖涓瓙鍥捐繘琛屼笂闈㈢殑姹傝В鍗冲彲銆�

[CF1365E] Maximum Subsequence Value - 璐績

Description

缁欏嚭涓€涓暱搴︿负 \(n\) 鐨勬暟鍒� \(a\)锛屼綘闇€瑕侀€夊嚭涓€涓瓙搴忓垪锛屼娇鍏朵环鍊兼渶澶э紝杈撳嚭鏈€澶х殑浠峰€笺€傚浜庝竴涓暱搴︿负 \(k\) 鐨勫瓙搴忓垪锛岃嫢鍦ㄨ繖涓瓙搴忓垪涓湁涓嶅皯浜� \(\max(1,k-2)\) 涓暟鐨勪簩杩涘埗浣� \(i\) 涓婃槸 \(1\)锛屽垯鍏朵环鍊煎鍔� \(2^i\)銆�

Solution

鑰冭檻褰� \(k \le 3\) 鏃讹紝閫夋嫨鎵€鏈夌殑鏁颁竴瀹氭渶浼樸€�
褰� \(k > 3\) 鏃讹紝鐢变簬閫夋嫨鐨勬暟姣忓鍔犱竴涓紝姣忎竴浣嶈浜х敓璐$尞瑕佹眰鐨勬暟鐨勪釜鏁颁篃浼氬鍔犱竴涓紝杩欐牱鏃犺濡備綍閮戒笉浼氬彉寰楁洿浼橈紝鍥犳鎴戜滑鍙渶瑕佹灇涓鹃€夋嫨涓変釜鏁板嵆鍙€�
鎹㈣█涔嬶紝绠€鍗曞湴璇达紝褰撲笖浠呭綋 \(k \le 3\) 鏃舵垜浠槸鍦ㄥ仛鎴栬繍绠椼€�

Description

缁欏畾涓や釜闀垮害涓� \(n\) 鐨勬暟缁� \(a,b\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(k\)锛屼氦鎹� \(a\) 涓殑闀垮害涓� \(k\) 鐨勫悗缂€涓庨暱搴︿负 \(k\) 鐨勫墠缂€銆傛眰鏄惁鑳介€氳繃鑻ュ共娆℃搷浣滀娇寰� \(a,b\) 瀹屽叏鐩稿悓銆�

Solution

瑙傚療鍒颁换鎰忔搷浣滀腑锛屾墍鏈夋棤搴忓 \((a_i,a_{n-i+1})\) 鏋勬垚鐨勯泦鍚堟槸涓嶅彉鐨勩€傚苟涓旀垜浠彲浠ラ€氳繃澶氭鎿嶄綔鏉ュ疄鐜板浠绘剰涓€瀵� \(a_i,a_{n-i+1}\) 鐨勫璋冿紝鎴栨槸瀵规棤搴忓 \((a_i,a_{n-i+1})\),\((a_j,a_{n-j+1})\) 鐨勪綅缃簰鎹€€�
鍥犳锛屽彧闇€瑕佸垽鏂墍鏈夋棤搴忓 \((a_i,a_{n-i+1})\) 鏋勬垚鐨勯泦鍚堟槸鍚︾浉绛夊嵆鍙€�

Description

鏈� \(n\) 涓闂紝姣忔缁欏畾涓€涓暟 \(a \le 10^7\)锛屾眰鍏舵槸鍚﹀瓨鍦ㄤ袱涓笉涓� \(1\) 鐨勪笉鍚屽洜瀛� \(d_1,d_2\) 婊¤冻 \((d_1+d_2,a)=1\)銆�

Solution

璁� \(x=p_1^{q_1} p_2^{q_2} ... p_k^{q_k}\)$锛屽垯 \(k=1\) 鏃舵樉鐒舵棤瑙o紝鑰冨療 \(k>1\) 鏃讹紝鍒╃敤鍙嶈瘉娉曞彲浠ヨ瘉鏄庝护 \(a=p_1^{q_1}, b=p_2^{q_2} ... p_k^{q_k}\)锛屽垯涓€瀹氭弧瓒� \((a+b,x)=1\)銆�
浜庢槸闂杞寲涓哄鎵句竴涓暟鐨勬渶灏忚川鍥犲瓙銆�

Description

缁欏畾涓€涓暱涓� \(n\) 鐨勫簭鍒� \(a_i\) 鍜屼竴涓暱涓� \(m \le n\) 鐨勪弗鏍间笂鍗囧簭鍒� \(b_i\)锛岃姹傚皢 \(a_i\) 鍒掑垎涓� \(m\) 娈碉紝绗� \(i\) 娈电殑鏈€灏忓€兼伆濂戒负 \(b_i\)锛屾眰鍒掑垎鏂规鏁般€�

Solution

鍏抽敭鍦ㄤ簬濡備綍鍒╃敤 \(b_i\) 涓ユ牸涓婂崌杩欎釜鏉′欢銆�
鑰冭檻姹傚嚭 \(a_i\) 搴忓垪鐨勫悗缂€鏈€灏忓€� \(f_i\)锛岄偅涔堝浜庝换鎰忎綅缃� \(i\)锛屽鏋滄垜浠璁╁畠浣滀负绗� \(j\) 娈电殑棣栧厓绱狅紝閭d箞蹇呴』瑕佹弧瓒� \(f_i=b_j\)锛屽洜涓� \(b_j\) 蹇呴』瑕佸湪鍚庨潰杩欎簺鏁颁腑鑷冲皯鍑虹幇涓€娆★紝骞朵笖蹇呴』鏄悗闈㈣繖浜涙暟涓渶灏忕殑鏁般€�

Description

缁欏畾涓€涓簭鍒楋紝鍙互杩涜鑻ュ共娆℃搷浣滐紝姣忔灏嗕竴涓暟璋冨埌寮€澶存垨鑰呰皟鍒版渶鍚庛€傛眰灏嗗簭鍒楁帓搴忕殑鏈€灏忔鏁般€備繚璇佸簭鍒椾腑鏁板瓧浜掍笉鐩稿悓銆�

Solution

鍏堢鏁e寲鎴愭帓鍒楋紝鐒跺悗鍙戠幇锛屼笉鍔ㄧ殑鏁板氨鏄師鎺掑垪涓殑鏈€闀胯繛缁笂鍗囧瓙搴忓垪銆�
鍏呭垎鎬ф槸鏄剧劧鐨勩€�
鑰冭檻蹇呰鎬э紝瀵逛簬浠绘剰涓€绉嶆搷浣滄柟妗堬紝閭d簺娌℃湁琚搷浣滅殑鏁板繀鐒朵細鏋勬垚鍘熸帓鍒椾腑鐨勬渶闀胯繛缁笂鍗囧瓙搴忓垪锛屽洜涓鸿繖浜涙暟娌¤绉诲姩浠栦滑鏈€鍚庡繀鐒舵槸杩炲湪涓€璧风殑銆�

Description

涓€涓骇鍒负 \(1\) 鐨� RDB 鏄竴涓崟鐙殑鑺傜偣銆�

鎺ョ潃锛屽浜庢墍鏈� \(i > 1\)锛岀骇鍒负 \(i\) 鐨� RDB 鐨勬瀯鎴愭柟娉曞涓嬨€�

鍏堟眰鍑虹骇鍒负 \(i-1\) 鐨� RDB锛岀劧鍚庡浜庤 RDB 涓殑姣忎釜鑺傜偣 \(x\)銆�

  • 濡傛灉 \(x\) 娌℃湁瀛╁瓙锛岄偅涔堢粰浠栧姞涓婁竴涓瀛愩€�
  • 濡傛灉 \(x\) 鍙湁涓€涓瀛愶紝閭d箞缁欎粬鍔犱笂涓や釜瀛╁瓙銆�
  • 濡傛灉 \(x\) 宸茬粡鏈変簡瓒呰繃涓€涓瀛愶紝閭d箞鎴戜滑璺宠繃鑺傜偣 \(x\)銆�

鎺ヤ笅鏉ワ紝鎴戜滑瀹氫箟涓€涓� claw 锛堣涓嬪浘锛夛紝瀹冧篃鏄竴妫靛叿鏈夌壒娈婃€ц川鐨勬爲锛屽苟涓斿皢鑺傜偣 \(1\) 绉颁负杩欎釜 claw 鐨勪腑蹇冿紝鍏朵粬鐨勭О涓哄簳閮ㄨ妭鐐广€�
鐜板湪锛岀粰鍑轰竴涓骇鍒负 \(n\) 鐨� RDB锛屽垵濮嬫椂浠栦笂闈㈢殑鎵€鏈夎妭鐐归兘涓虹豢鑹诧紝浣犲彲浠ヨ繘琛屼竴浜涙搷浣溿€�

瀵逛簬姣忔鎿嶄綔锛屼綘闇€瑕佸湪缁欏嚭鐨� RDB 涓壘鍒颁竴涓� claw锛屾弧瓒虫墍鏈夊簳閮ㄨ妭鐐瑰湪 RDB 涓兘鏄腑蹇冭妭鐐圭殑鍎垮瓙锛屼笖杩欏洓涓妭鐐瑰湪 RDB 涓兘鏄豢鑹层€傜劧鍚庡皢杩欏洓涓妭鐐规煋涓洪粍鑹层€�

闂渶澶氬彲浠ュ皢澶氬皯涓妭鐐规煋鎴愰粍鑹层€�

Solution

瀹规槗鎵惧埌涓€涓€掓帹鍏崇郴锛�\(n\) 闃舵爲鐨勬牴缁撶偣鐨勪笁涓瓙鑺傜偣瀵瑰簲鐨勫瓙鏍戯紝鍏跺垎鍒负 \(n-1,n-2,n-2\) 闃剁殑鏍戯紝骞朵笖锛屽綋 \(3|n\) 鏃讹紝鏍圭粨鐐规椂琚€夋嫨鐨勶紝鍏跺畠鎯呭喌涓嬫牴缁撶偣鏄笉琚€夋嫨鐨勩€�
鍥犳鎴戜滑寰堝鏄撳緱鍒伴€掓帹鍏崇郴 \(f_n = f_{n-1} + 2f_{n-2} + 4[3|n]\)

Description

缁欏畾闀垮害涓� \(n\) 鐨勬暟鍒楋紝鍦ㄥ叾鎵€鏈夐暱搴︿负 \(k\) 鐨勫瓙搴忓垪涓紝姹傛渶灏忕殑鏉冨€兼槸澶氬皯銆備竴涓瓙搴忓垪鐨勬潈鍊煎畾涔変负鍏跺鏁颁綅缃渶澶у€煎拰鍋舵暟浣嶇疆鏈€澶у€间箣闂寸殑鏈€灏忓€笺€�

Solution

鑰冭檻浜屽垎绛旀锛岀幇鍦ㄥ鏋滄垜浠姹傝繖涓渶灏忓€� \(\le mid\)锛屼篃灏辨槸瑕佹眰涓や釜鏈€澶у€间腑鑷冲皯鏈変竴涓� \(\le mid\)銆�
鍥犳妫€楠屾椂锛屾垜浠彧闇€瑕佸垎鍒鏌ヤ竴閬嶅鏁板拰鍋舵暟鐨勬儏鍐靛嵆鍙€�

Description

缁欏畾涓や釜 0-1 涓� \(S,T\)锛屾瘡娆℃搷浣滀綘鍙互閫夋嫨 \(S\) 鐨勪竴涓瓙搴忓垪锛屽皢鍏跺惊鐜Щ浣嶄竴鏍硷紝姹傛渶灏戞搷浣滃灏戞鑳藉皢 \(S\) 鍙樻垚 \(T\)銆�

Solution

鍘绘帀閭d簺宸茬粡鐩稿悓鐨勯儴鍒嗭紝瀵逛簬鍓╀笅鐨勶紝鎴戜滑鍦ㄤ竴娆℃搷浣滀腑鏄剧劧浼氫氦鏇块€夋嫨閭d簺 1 鍙� 0 鍜� 0 鍙� 1 鐨勪綅缃紝閭d箞闇€瑕佺殑鏈€灏忔鏁板氨鏄竴涓尯闂村唴 1 鍙� 0 鍜� 0 鍙� 1 鐨勪綅缃殑鏁扮洰宸殑缁濆鍊肩殑鏈€澶у€笺€�

Description

缁欏畾涓€涓暱搴︿负濂囨暟 \(n\) 鐨勭幆褰㈠簭鍒楋紝杩涜鑻ュ共娆℃搷浣滐細閫夋嫨 \(i\)锛屽皢鍏舵浛鎹负 \(a_{i-1}+a_{i+1}\)锛屽苟鍒犻櫎 \(a_{i-1},a_{i+1}\)銆傛渶鍚庡墿涓嬩竴涓暟銆傛眰鏈€鍚庡墿涓嬬殑鏁扮殑鏈€澶у€笺€�

Solution

鎵捐寰嬪彂鐜帮紝浼氬绛旀浜х敓璐$尞鐨勶紝涓€瀹氭槸绗� \(...,i-4,i-2,i,i+1,i+3,i+5,...\) 涓暟鐨勫拰銆�
鏆村姏鏋氫妇 \(i\)锛屽墠闈㈠彧鍙栧鍋舵€т笌 \(i\) 鐩稿悓鐨勶紝鍚庨潰鍙彇濂囧伓鎬т笌 \(i\) 涓嶅悓鐨勶紝鏈€鍚庡彇鏈€澶у€煎嵆鍙€�

Description

瀵� \(n \le 150, k \le 9\)锛屾眰鏈€灏忕殑闈炶礋鏁存暟 \(x\) 婊¤冻 \(f(x)+f(x+1)+...+f(x+k)=n\)锛屽叾涓� \(f(x)\) 琛ㄧず \(x\) 鐨勫悇涓暟浣嶇殑鍜屻€�

Solution

姣忓鍔犱竴浣嶆暟锛屾暟瀛楀ぇ灏忕殑澧為暱鏄寚鏁扮殑锛岃€� \(f\) 鍊肩殑澧為暱鏄嚎鎬х殑銆�

姣斿 $k=1$ 鏃讹紝$f(8)+f(9)=17$锛岃€� $f(80)+f(81)=17$锛�$f(98)+f(99)=35$锛岃€� $f(980+981)=35$
鐚滄兂鎴戜滑鍙互灏嗘墍鏈夊悎娉曠殑 $n$ 琛ㄧず鎴� $f(x)+...+f(x+k)$ 鐨勫舰寮忥紝涓斾竴瀹氭湁 $a99..99bc$ 杩欐牱褰㈠紡鐨� $x$ 婊¤冻鏉′欢锛屾湰璐ㄤ笂鎴戜滑鐩稿綋浜庢毚鍔涙灇涓句簡 $x$ 鐨勯暱搴︼紝鏈€楂樹綅锛屾渶浣庝簩浣嶇殑鍊硷紝灏嗗畠琛ㄧず涓� $i \times 10^j - l$锛屾灇涓� $i,j,l$锛堣竟鐣屼笉澶т細璇佹槑锛� ### Description 缁欏畾涓€涓暱搴︿负 $n$ 鐨勬暟鍒楋紝鍙互杩涜涓嶈秴杩� $2n$ 娆℃搷浣滐紝姣忔鍙互閫夋嫨涓€涓綅缃紝灏嗗畠鐨勫€艰涓哄綋鍓嶆暣涓暟鍒楃殑 mex銆傛瀯閫犱竴绉嶆搷浣滄柟妗堬紝浣垮緱鏁翠釜鏁板垪鐨勫€煎崟璋冧笉闄嶃€� ### Solution 鎴戜滑鑰冭檻灏嗘暣涓暟鍒楀仛鎴� $0,1,2,...,n-1$ 鐨勫舰寮忋€傛垜浠粰鍑轰竴绉嶆瀯閫犳柟妗堜娇寰楄兘鍦ㄤ笉瓒呰繃 $2n$ 姝ュ唴灏嗕换浣曚竴涓簭鍒楀仛鎴愯繖绉嶅舰寮忋€� 褰撴暣涓暟鍒楃殑 mex 灏忎簬 n 鏃讹紝鎵ц A 绫绘搷浣滐紝鍗冲皢 $a[mex+1]$ 璧嬪€间负 $mex$锛涘惁鍒欙紝鎵ц B 绫绘搷浣滐紝浠绘剰鎵句竴涓笉婊¤冻 $a[i]=i-1$ 鐨勪綅缃紝灏� $a[i]$ 璧嬪€间负 $mex=n$銆� 鏄剧劧姣忎竴涓� B 绫绘搷浣滃悗涓€瀹氱揣璺熺潃涓€涓� A 绫绘搷浣滐紝鑰屼竴涓� A 绫绘搷浣滀細鎼炲畾涓€涓綅缃紝骞朵笖杩欎釜浣嶇疆浠ュ悗鍐嶄篃涓嶄細琚搷浣滃埌銆� ### Description 鏈� $m$ 绉嶇墿鍝侊紝姣忕鐗╁搧绗竴娆′拱浠峰€间负 $a_i$锛屼互鍚庢瘡娆′拱閮芥槸 $b_i$銆傛眰涔� $n$ 浠剁墿鍝佺殑鏈€澶ф€讳环鍊笺€�$n \le 10^9, m \le 10^5$ ### Solution 瀹规槗璇佹槑锛屾渶澶氬彧閲嶅鎷夸竴绉嶈姳锛屼竴瀹氫笉浼氭洿鍔� 鍋囪鎵€鏈夎姳宸茬粡鎸夌収 $a$ 闄嶅簭鎺掑垪 璁捐繖绉嶈姳鏄 $i$ 绉嶏紝鍒欐墍鏈夎鍗曟閫夋嫨鐨� $j$ 涓€瀹氭弧瓒� $a_j > b_i$锛堢瓑鍙峰彲鍙栧彲涓嶅彇锛� 鏁呭彧闇€姹傚嚭婊¤冻 $a_j > b_i $ 鐨� $a_j$ 涓墠锛堜笉瓒呰繃锛� $k-1$ 澶х殑鍜� 鍦ㄥ墠缂€鍜屽簭鍒椾笂浜屽垎瀹炵幇锛屾敞鎰忓鏋滀簩鍒嗗嚭鐨勯€夋 $[1,pos]$ 涓寘鍚簡 $i$锛屽垯鑻� $posb[i]$ 闇€瑕佸皢 $pos$ 棰濆 $+1$ ### Description 鑰冭檻 $[0,n+1]$ 涔嬮棿鐨勬墍鏈夋暣鐐癸紝浣犺浠� $0$ 璧板埌 $n+1$锛屾瘡绉掗挓鍙互浠� $x$ 璧板埌 $x+1$ 鎴栬€呬笉鍔ㄣ€傛瘡涓綅缃湁涓€涓珮搴� $h_i$锛屾瘡涓椂鍒绘湁涓€涓珮搴� $p_t$锛堝湪 $[0,k]$ 涔嬮棿鍧囧寑寰幆锛�$0,1,...,k-1,k,k-1,...,1,0,...$锛夈€傚鏋� $h_i+p_t>l$ 鍒欏け璐ャ€傞棶鏄惁鑳借蛋鍒� $n+1$銆� ### Solution 濡傛灉涓€涓偣姘歌繙鏄畨鍏ㄧ殑锛岄偅涔堝氨绉板畠涓哄畨鍏ㄧ偣銆傚湪姣忎釜瀹夊叏鐐癸紝鎴戜滑鍙互鏆村姏绛夊埌浠讳綍涓€涓椂鍒诲啀寰€鍚庤蛋锛屽洜姝ゆ暣涓繃绋嬭瀹夊叏鐐瑰垎鎴愪簡鑻ュ共娈碉紝鎴戜滑鍙渶瑕佽€冭檻鐩搁偦涓や釜瀹夊叏鐐逛箣闂寸殑鐐广€� 鎴戜滑鑰冭檻褰撳墠鍗冲皢璧板埌浣嶇疆 $i$ 骞朵笖褰撳墠鐨勬氮楂樹负 $tide$锛屽鏋� $dep_i+tide>l$ 閭d箞鏄剧劧鎴戜滑闇€瑕佺瓑寰� $\Delta=dep_i+tide-l$ 鐨勬椂闂磋娴疆鎺ョ潃涓嬮檷锛屼簬鏄护 $tide \leftarrow tide-\Delta$锛岃嫢 $<0$ 鍒欓潪娉曘€� 杩欓噷鍏抽敭鏄繖绉嶆柟妗堢殑缁撹瀵逛簬闈炴硶鎬ф潵璇翠负浠€涔堟槸蹇呰鐨勩€傚洜涓哄湪涓婁竴涓畨鍏ㄧ偣涔嬪悗锛屾垜浠鐞嗙殑鎵€鏈夌偣閮戒笉鑳界鍒版渶楂樹簡閭d釜浣嶇疆锛屾墍浠ユ湰璐ㄤ笂涓€浜涜繛缁殑闈炲畨鍏ㄧ偣蹇呴』瑕佸湪涓€涓氮娼潵鍥炵殑杩囩▼涓澶勭悊瀹屻€� ### Description 缁欏畾涓€妫垫爲锛屾爲涓婃瘡涓粨鐐瑰垰寮€濮嬫湁涓€涓汉锛岀幇鍦ㄦ瘡涓汉闇€瑕佽蛋鍒颁竴涓笉鍚屼簬鍘熸潵鐨勭粨鐐癸紝骞朵笖蹇呴』淇濊瘉姣忎釜缁撶偣涓婁粛鐒舵湁涓斾粎鏈変竴涓汉锛屽湪鏍戜笂璧颁竴鏉¤竟鐨勪唬浠蜂负 $1$锛屾眰鏈€灏忎唬浠枫€� ### Solution 鑰冭檻杩欐牱涓€涓繃绋嬶紝鎴戜滑閫掑綊澶勭悊鎺夎繖妫垫爲涓婄殑鎵€鏈夊彾瀛愮粨鐐癸紝濡傛灉瀹冧滑杩樻病鏈夌Щ鍔ㄧ殑璇濓紝灏嗗畠鍜屽畠鐨勭埗浜叉崲锛屾鏃朵唬浠峰鍔� $2$锛岀劧鍚庡垹闄よ繖涓粨鐐广€傞噸澶嶄笅鍘伙紝鐩村埌鏍戜负绌恒€傛敞鎰忓綋鍙墿涓嬫牴缁撶偣鐨勬椂鍊欙紝瀹冨鏋滄病鏈夎鎹㈣繃锛岄偅鎴戜滑鍙渶瑕佹寫瀹冪殑浠绘剰涓€涓瀛愯窡瀹冩崲鍗冲彲銆� ### Description 鏈夐暱搴︿负 $n$ 鐨勪袱涓暟缁� $a$ 鍜� $b$ 銆備竴寮€濮嬶紝绛旀 $ans$ 绛変簬 $0$ 銆傜幇鍦ㄦ垜浠畾涔夊涓嬫搷浣滐細閫夋嫨涓€涓綅缃� $i$ $(1\leq i \leq n)$锛涜 $ans$ 澧炲ぇ $a_i$锛涘鏋� $b_i \neq -1 $ 灏卞皢 $a_{b_i}$ 澧炲ぇ $a_i$銆傚鏋滄瘡涓€涓� $i$ $(1\leq i \leq n)$ 鍙兘閫変竴娆★紝璇烽棶 $ans$ 鏈€澶ф槸澶氬皯锛� 骞剁粰鍑� $ans$ 鏈€澶ф椂閫夋嫨 $i$ 鐨勯『搴忋€� ### Solution 瀵规瘡涓《鐐圭畻涓€涓疮绉€� $f[i]$锛屽鏋� $f[i]>0$ 灏卞悜涓婃洿鏂般€� 鏈€鍚庢壂涓€閬嶏紝瀵逛簬涓€涓偣鐨勬墍鏈夊瀛愶紝鍏堣蛋閭d簺 $f[i]>0$ 鐨勶紝鍐嶈蛋鏍癸紝鏈€鍚庤蛋閭d簺 $f[i]<0$ 鐨勩€� ### Description 鏈� $n$ 瀵圭嚎娈碉紝鍒濇€佷笅姣忓鐨勭涓€鏉¢兘鏄� $[l_1,r_1]$锛岀浜屾潯閮芥槸 $[l_2,r_2]$銆傚畾涔夋€讳氦闆嗛暱搴︿负姣忓绾挎鐨勪氦闆嗛暱搴︿箣鍜屻€傚彲浠ヨ姳璐逛唬浠� $1$ 鏉ュ欢闀夸竴鏉$嚎娈碉紝寰€宸︽垨寰€鍙冲欢浼� $1$ 涓崟浣嶃€傛眰浣垮緱鎬讳氦闆嗛暱搴﹀埌杈� $k \le 10^9$ 鐨勬渶灏忎唬浠枫€� ### Solution 瀵逛簬涓€瀵圭嚎娈� $[l_1,r_1],[l_2,r_2]$锛岀О $[\min(l_1,r_1), \max(l_2,r_2)]$ 涓鸿繖涓嚎娈靛鐨勮竟鐣岀嚎娈点€傝嫢 $[l_1,r_1] \bigcup [l_2,r_2] = [\min(l_1,r_1), \max(l_2,r_2)]$锛屽垯绉拌繖涓嚎娈靛鏄繛缁殑銆� 鑰冭檻涓€涓嚎娈靛涓庡畠鐨勮竟鐣岀嚎娈典箣闂寸殑鍏崇郴锛屾樉鐒剁嚎娈靛鐨勫疄闄呴暱搴﹀拰涓庡畠鐨勮竟鐣岀嚎娈电殑闀垮害涔嬮棿瀛樺湪涓€涓樊鍊硷紝濡傛灉鐩镐氦鍒欒繖涓樊鍊间负姝o紝鐩哥鍒欒繖涓樊鍊间负璐熴€� 灏嗕竴涓嚎娈靛閫氳繃鏈€灏忕殑姝ユ暟鎿嶄綔锛屼娇寰楀畠鐨勫苟闆嗙瓑浜庡畠鐨勮竟鐣岀嚎娈碉紝杩欎釜杩囩▼绉颁负濉弧涓€涓嚎娈点€� 鎴戜滑鏆村姏鏋氫妇瑕佸~婊� $i$ 涓嚎娈靛锛岃繖鏃惰嫢鎴戜滑鍙湪杩欎簺琚€夋嫨濉弧鐨勭嚎娈靛涓婃搷浣滃氨鍙互瀹屾垚鐩爣锛岃姳璐圭殑浠d环鏄� $k-id$锛屽叾涓� $d$ 鏄笂杩扮殑宸€硷紱鍚﹀垯锛屽湪 $k-id$ 涔嬪锛屾垜浠繕闇€瑕侀澶栬姳璐� $k-is$ 鐨勪唬浠凤紝鍏朵腑 $s$ 鐨勮竟鐣岀嚎娈电殑闀垮害銆傚垽瀹氭槸鍚﹂渶瑕佸悗鑰呯殑鏉′欢灏辨槸 $k-is$ 鏄惁涓烘銆� ### Description 鐜板湪鏈変竴浜涘北鍙戠敓浜嗗北浣撴粦鍧★紝杩欎簺灞变粠宸﹀埌鍙充緷娆℃帓甯冿紝绗� $i$ 搴у北鐨勯珮搴︿负 $h_i$锛屼笖 $\forall i\in [1,n),h_i Proof. 鑰冭檻杩欐牱涓€绉嶆柟娉曪紝姣忔鍙栫 $i$ 涓厓绱犲紑濮嬪悜宸︽帹杩涳紝鑻� $i=1$ 鎴栬€� $h_i - h_{i-1}<2$ 鍒欑粨鏉燂紝鍚﹀垯淇敼 $h_i,h_{i-1}$ 骞剁户缁悜宸︽帹杩涖€�
鍦ㄨ繖鏍蜂竴杞帹杩涗腑锛岃嫢 $i$ 宸︿晶鐨勬暟瀛楀悇涓嶇浉鍚岋紝鍒欎細涓€鐩存帹杩涘埌 $1$锛岃繖鏍峰彲鑳戒細浣垮緱鐩哥瓑鐨勫鏁板鍔� $1$锛涘惁鍒欙紝鎺ㄨ繘鎿嶄綔浼氬湪 $i+1$ 鐨勫彸杈圭粨鏉燂紝鍙兘浼氫娇寰楃浉绛夊鏁板噺灏� $1$銆� 浜庢槸 $S=\sum h_i$ 鍜� $n$ 涓や釜鍙傛暟鍗崇‘瀹氫簡涓€涓敮涓€鐨勭瓟妗堝簭鍒椼€�
鏆村姏鏋勯€犺繖涓瓟妗堝簭鍒楃殑鏂规硶鏄細浠庡簭鍒� $0,1,2,...,n-1$ 寮€濮嬶紝姣忔鏆村姏瀵瑰簭鍒楃殑涓€涓敖鍙兘闀跨殑鍓嶇紑澧炲姞 $1$銆�
缁撹涓�

\[a_i = (i-1)+[\frac {s-\frac {n(n-1)}{2}} n] + [i<({(s-\frac {n(n-1)}{2})} \mod n)] \]

Description

缁欏畾涓€涓� \(n \times m\) 鐨勭綉鏍硷紝姣忎釜鏍煎瓙鏈変竴涓鑹诧紝闂湁澶氬皯涓悓鑹茶彵褰€€�\(n,m \le 2000\)

Solution

绫讳技鈥滄渶澶ф鏂瑰舰鈥濈殑濂楄矾锛岃 \(f[i][j]\) 琛ㄧず浠� \((i,j)\) 鐐逛负涓嬮《鐐圭殑鑿卞舰鐨勬渶澶ц竟闀匡紝杞Щ鏃惰€冭檻 \((i,j),(i-1,j),(i-2,j),(i-1,j-1),(i-1,j+1)\) 杩欎簲涓偣鏄惁鐩哥瓑锛屽鏋滅浉绛夊垯浠� \(f[i-1][j],f[i-2][j],f[i-1][j-1],f[i-1][j+1]\) 涓彇鏈€灏忓€艰浆绉昏繃鏉ュ嵆鍙€�

Description

缁欏畾鏈夊悜鍥撅紝鍦ㄥ浘涓婅蛋鐨勬椂鍊欙紝鍑哄害涓� \(i\) 鐨勮竟锛屽彧鑳借蛋鍒拌竟鏉冨ぇ灏忎负绗� \(c_i\) 灏忕殑杈逛笂闈紝闂� \(c\) 鏁扮粍鏈夊灏戠锛岃姣忎釜鐐归兘婊¤冻锛氫粠杩欎釜鐐瑰紑濮嬭蛋閮藉彲浠ュ洖鍒拌繖涓偣銆傛瘡涓偣鐨勫叆搴﹂兘灏忎簬绛変簬 \(9\)銆�

Solution

鏈€缁堟瘡涓偣涓€瀹氬彧浼氭湁涓€涓嚭鐐癸紝灏� \(p\) 鐨勫嚭搴︿负 \(f[p]\)锛屽垯鏄剧劧 \(f[]\) 涓€瀹氭槸 \(1..n\) 鐨勪竴涓叏鎺掑垪
鑰冭檻鍒� \(f[]\) 鐨勫叧浜� \(c[]\) 鐨勫悇涓綅鏄嫭绔嬬殑锛屽洜姝ゅ彲浠ュ垎鍒灇涓� \(c\) 鐨勬瘡涓€浣嶏紝鐢熸垚 \(f[]\) 鐨勬煇浜涙牎楠屽€硷紙缁勫悎锛夛紝涓庡叏鎺掑垪姣旇緝鍗冲彲锛屾牎楠屽彲浠� hash锛岃繖閲屼负浜嗙渷浜嬶紝瀵规瘡涓€浣嶉鍏堢敓鎴愪竴涓殢鏈烘暟 \(w[]\)锛岀劧鍚庢眰鍜屽嵆鍙�

Description

鍔ㄦ€佺淮鎶や竴涓妧鑳介泦鍚堬紝鎶€鑳藉垎涓轰袱绉嶏紝鏅€氭妧鑳藉拰瓒呯骇鎶€鑳姐€傛墍鏈夋妧鑳戒細琚寜鐓т竴涓帓鍒楁墽琛岋紝濡傛灉鎶€鑳� \(i\) 琚墽琛屾椂瀹冪殑鍓嶄竴涓妧鑳芥槸鏅€氭妧鑳斤紝閭d箞浼氫骇鐢� \(w_i\) 鐨勮础鐚紱濡傛灉鏄秴绾ф妧鑳藉垯浼氫骇鐢� \(2w_i\) 鐨勮础鐚€傛瘡娆℃坊鍔犳垨鍒犻櫎鎶€鑳藉悗锛屾眰褰撳墠鎶€鑳介泦鍚堢殑鏈€澶ц础鐚€�

Solution

鑰冭檻缁存姢涓変釜鎶€鑳介泦鍚堬細setNormal 琛ㄧず鏅€氭妧鑳介泦鍚堬紝setHigh 琛ㄧず褰撳墠鎵€鏈夋妧鑳戒腑锛岃础鐚緝楂樼殑鎶€鑳界殑闆嗗悎锛宍setLow涓�setHigh鐨勮ˉ闆嗐€� 鍦ㄤ换鎰忔椂鍒伙紝鎴戜滑鎺у埗setHigh鐨勫ぇ灏忎负褰撳墠瓒呯骇鎶€鑳界殑鎬讳釜鏁帮紝閭d箞sum(*)+sum(setHigh)鍩烘湰灏辨槸绛旀锛屼絾闇€瑕佸仛涓€鐐逛慨姝c€� 鑰冭檻濡傛灉鎴戜滑甯屾湜灏嗘墍鏈夌殑瓒呯骇鎶€鑳界炕鍊嶏紝浣嗚繖鏃朵竴瀹氭湁涓€涓秴绾ф妧鑳芥槸涓嶈兘琚炕鍊嶇殑锛堟樉鐒舵垜浠細閫夋嫨鏈€灏忕殑閭d竴涓級銆� 鑰冭檻濡傛灉鎴戜滑甯屾湜缈诲€嶇殑鎶€鑳戒腑鏈変竴涓笉鏄秴绾ф妧鑳斤紝閭d箞杩欐椂杩欎簺鎶€鑳借鍚屾椂缈诲€嶆槸鍙互婊¤冻鐨勩€� 鍥犳锛屾垜浠粠涓婇潰鐨勮繎浼肩瓟妗堜腑锛屽噺鍘诲綋鍓�setHigh闆嗗悎鐨勬渶灏忓€硷紝鍐嶅姞涓婂綋鍓�setNormal` 闆嗗悎鐨勬渶澶у€硷紝灏辨槸绛旀銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡鏉¤竟鏈変竴涓� w 鍜屼竴涓� c锛岃杩欐5鏍戠殑鏉冨€间负鎵€鏈夊彾瀛愮粨鐐瑰埌鏍圭粨鐐圭殑璺緞涓婄殑 w 鐨勫拰鐨勬€诲拰銆傛瘡娆℃搷浣滃彲浠ラ€夋嫨涓€鏉¤竟锛屽皢鍏� w 鍙樹负 w/2锛堝悜涓嬪彇鏁达級锛岃姳璐� c 鐨勪唬浠枫€�

Solution

鍏堥澶勭悊鍑烘瘡鏉¤竟鐨勬鏁� \(d\)
濡傛灉鍙湁涓€绉嶄唬浠凤紝鎴戜滑鍙渶瑕佸皢鎵€鏈夎竟浣滀负 \((w,d)\) 鎵旇繘澶ф牴鍫嗕腑锛屼互 \((w-[\frac w 2])d\) 浣滀负鍏抽敭瀛楁帓搴忋€�
鏈変袱绉嶄唬浠锋椂锛岃€冭檻缁存姢涓や釜浼樺厛闃熷垪锛屼竴涓瓨 \(c=1\) 鐨勶紝鍙︿竴涓瓨 \(c=2\) 鐨勩€傛瘮杈冭鍔ㄥ摢涓槦鍒楁洿浼樸€�

[CF13E] Holes - 鍒嗗潡

Description

鏈� \(N\) 涓礊锛屾瘡涓礊鏈夌浉搴旂殑寮瑰姏锛岃兘鎶婅繖涓悆寮瑰埌 \(i+power[i]\) 浣嶇疆銆傚叡鏈変袱绉嶆搷浣滐細鎶� \(a\) 浣嶇疆鐨勫脊鍔涙敼鎴� \(b\)锛涘湪 \(a\) 澶勬斁涓€涓悆锛岃緭鍑烘渶鍚庝竴娆¤惤鍦ㄥ摢涓礊锛岀悆琚脊鍑哄墠鍏辫寮逛簡澶氬皯娆°€�

Solution

鍒嗗潡锛岃褰曟瘡涓潡鍐呮瘡涓綅缃脊鍑鸿鍧楃殑鏃堕棿 tim[i] 鍜屽脊鍑哄埌鐨勪綅缃� pos[i]

[CF1400D] Zigzags - 浜屽垎

Description

缁欏畾涓€涓暱搴︿负 \(n \le 3000\) 鐨勬暟鍒楋紝姹傛湁澶氬皯涓洓鍏冪粍 \((i,j,k,l)\) 婊¤冻 \(1 \le i < j < k < l \le n\) 涓� \(a_i = a_k, a_j = a_l\)銆�

Solution

鏋氫妇 \(j,k\)锛岀敤鍓嶇紑鍜岀粺璁� \(i\)锛岀敤鍚庣紑鍜岀粺璁� \(l\)銆�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鍙互閫夋嫨涓€涓尯闂� \([l,r]\) 灏嗗尯闂翠腑鐨勬瘡涓暟 \(-1\)锛屾垨鑰呴€夋嫨涓€涓綅缃� \(pos\) 鍜屼竴涓€� \(x\)锛屽皢绗� \(pos\) 涓綅缃殑鏁板噺鍘� \(x\)銆傞渶瑕佷繚鎸佹墍鏈夌殑鏁伴潪璐熴€傛眰鎿嶄綔鐩村埌鎵€鏈夋暟鍙樻垚 \(0\) 鐨勬渶灏忎唬浠枫€�

Solution

鍒嗘不璐績锛岄€掑綊姹傝В銆傚浜庡尯闂� \([l,r]\)锛屽鏋滀笉鐢ㄧ涓€绉嶆搷浣滈偅涔堢瓟妗堝氨鏄尯闂撮暱锛屽鏋滅敤绗竴绉嶆搷浣滐紝閭d箞鏄剧劧鎴戜滑鍙互鎵惧埌涓€涓渶灏忕殑浣嶇疆 \(k\)锛屽皢鍖洪棿涓墍鏈夌殑鏁板噺鍘� \(a[k]\)锛岀劧鍚庨€掑綊姹傝В鍖洪棿 \([l,k-1],[k+1,r]\)銆�

Description

缁欏畾涓€涓簭鍒楋紝姣忔鍙互浠� \(i\) 璺冲埌 \(j (>i)\) 褰撲笖浠呭綋婊¤冻浠ヤ笅涓変釜鏉′欢涔嬩竴锛�

\(i+1=j\)

\(\max(h[i+1,j-1])<\min(h_i,h_j)\)

\(\min(h[i+1,j-1])>\max(h_i,h_j)\)

姹備粠涓嬫爣涓� \(1\) 鐨勪綅缃烦鍒颁笅鏍囦负 \(n\) 鐨勪綅缃姳璐圭殑鏈€灏忔鏁般€�

Solution

鑰冭檻 dp锛岃 \(f_i\) 琛ㄧず璺冲埌绗� \(i\) 涓牸瀛愮殑鏈€灏忔鏁帮紝閭d箞寰堟樉鐒� \(f_i\) 搴忓垪涓€瀹氭槸鍗曡皟鐨勶紝杩欐槸鐢辩涓€涓浆绉绘潯浠朵繚璇佺殑銆�
鍏堣€冭檻绗簩涓潯浠讹紝鍒嗘瀽 \(i\) 鐘舵€佸彲浠ヤ粠鍝簺鐘舵€佽浆绉昏繃鏉ャ€�
缁存姢涓€涓崟璋冮€掑噺鐨勬爤锛岄偅涔堟湁涓斾粎鏈夊姞鍏� \(i\) 鐨勫脊鏍堣繃绋嬩腑缁忓巻鐨勬墍鏈夋爤椤舵槸鍚堟硶鐨� \(j\)銆�
鎵€浠ユ垜浠彧闇€瑕佸湪鍔犲叆 \(i\) 鐨勮繃绋嬩腑锛屽姣忔寮规爤鍚庣殑鏍堥《 \(j\)锛屽仛涓€娆� \(j \to i\) 鐨勮浆绉诲嵆鍙€�
瀵圭涓変釜鏉′欢涔熸槸鍚岀悊鐨勩€�

Description

鏈� \(n\) 涓潗鏍囦负 \((a_i,b_i)\) 鐨勪汉锛屾湁 \(m\) 涓潗鏍囦负 \((c_i,d_i)\) 鐨勭伅銆�
姣忔鎿嶄綔锛岃涔堣鎵€鏈� \(a_i+1\)锛岃涔堣鎵€鏈� \(b_i+1\)銆�
濡傛灉涓€涓汉鐨勬í绾靛潗鏍囬兘涓嶅ぇ浜庣伅鐨勬í绾靛潗鏍囷紝閭d箞杩欎釜浜烘槸瀹夊叏鐨勩€�
姹傛渶灏忕Щ鍔ㄥ灏戞浣垮緱鎵€鏈変汉閮芥槸瀹夊叏鐨勩€�

Solution

璁句汉鐨勭紪鍙蜂负 \(i\)锛岀伅鐨勭紪鍙蜂负 \(j\)锛屽垯瀵逛簬浠绘剰 \(i,j\)锛屼互涓嬩袱寮忓繀椤昏鏈夎嚦灏戜竴涓垚绔嬶細\(x+a[i] > c[i],y+b[i] > d[i]\)
鍋囪灏嗕竴涓汉绉诲姩鍒� \((x,y)\)锛岃 \(x \le c[j]-a[i]\)锛岄偅涔� \(y \ge d[j]-b[i]+1\)銆�
浜庢槸鎴戜滑鍦� \(x=c[j]-a[i]\) 鐨勪綅缃笂鎵撲竴涓� \(d[j]-b[i]+1\) 鐨� \(\max\) 鏍囪锛屾渶鍚庡鎵€鏈夋爣璁板仛涓€娆″悗缂€ \(\max\) 鍗冲彲銆�

Description

缁欏畾涓€涓暱搴︿负 \(n \le 200\) 鐨勫瓧绗︿覆 \(S\)锛屽拰涓€涓暱搴︿负 \(2\) 鐨勫瓧绗︿覆 \(T\)锛屽彲浠ュ湪 \(S\) 涓换鎰忎慨鏀逛笉瓒呰繃 \(m\) 涓瓧绗﹀緱鍒� \(S'\)锛屾眰 \(S'\) 涓笌 \(T\) 鐩哥瓑鐨勫瓙搴忓垪鐨勬渶澶ф暟閲忋€�

Solution

璁� \(T\) 涓蹭负 ab锛屽垯瀹氫箟 \(f[i][j][k]\) 琛ㄧず瀵� \(S'\) 涓殑鍓� \(i\) 浣嶏紝鍏朵腑鏈� \(j\) 涓� a锛屼笖淇敼浜� k 娆$殑鎯呭喌涓嬶紝瀛愬簭鍒楃殑鏈€澶ф暟閲忋€傝浆绉绘椂鍙渶瑕佹灇涓炬槸鍚︿慨鏀瑰綋鍓嶅瓧绗﹀嵆鍙€�

Description

娓告垙鍙傛暟鎻忚堪涓� \(a,b,c,d\)锛岃〃绀烘湁涓€涓妧鑳斤紝鍗曟鏀诲嚮鐨勪激瀹充负 \(a\)锛岄殢鍚庣殑 \(c\) 绉掍腑姣忕鎭㈠ \(b\)锛屾瘡娆℃敾鍑诲悗 \(d\) 绉掑悗鎵嶈兘杩涜涓嬩竴娆℃敾鍑汇€傛眰鑳介€犳垚鐨勭灛鏃舵渶澶т激瀹充负澶氬皯锛屾棤瑙h緭鍑� \(-1\)銆�

Solution

鏃犺В鐨勫厖瑕佹潯浠舵槸 \(a>bc\)銆�
瀵逛簬涓€娆℃敾鍑伙紝鍦ㄥ畠鎵ц鍚庣殑姣忎竴绉掞紝鍏跺奖鍝嶅垎鍒负 \(a, a-b, a-2b, ...\)锛岃 \(t(a,b)\) 涓烘渶澶х殑婊¤冻 \(a-tb \ge 0\) 鐨勬暣鏁� \(t\)锛屾樉鐒� \(t=[\frac a b]\)锛屽垯涓€涓妧鑳界殑瀛樺湪鏃堕棿濡傝秴杩� \(t\) 绉掑垯涓嶅涓嶇敤銆�
寰堟樉鐒舵垜浠渶瑕佷娇寰楃涓€涓妧鑳藉瓨鍦ㄤ笉瓒呰繃 \(t\) 绉掞紝鍥犳鎴戜滑鍙互瀹圭撼 \(n=[\frac t d]\) 缁勬妧鑳界殑闂撮殧鏃堕棿銆傚洜姝ゆ垜浠墽琛� \(n\) 缁勫畬鏁寸殑鎶€鑳斤紝澶栧姞涓€涓妧鑳界殑寮€澶达紝鍥犳閫犳垚鐨勬€昏础鐚负 \((n+1)a - \frac {n(n+1)} 2 bd\)銆�

Description

鏁拌酱涓婃湁 \(n\) 涓偣锛屾瘡娆℃搷浣滀綘鍙互灏嗘墍鏈変綅浜� \(x\) 鐨勭偣绉诲姩鍒� \(x+1\) 鎴栬€� \(x-1\)銆傛眰灏嗘墍鏈夌偣绉诲姩鍒颁笉瓒呰繃涓や釜鏁寸偣鐨勬渶灏忔搷浣滄鏁般€傜幇鍦ㄥ鐐归泦鍋氬嚭 \(q\) 娆′慨鏀癸紝姣忔娣诲姞涓€涓偣锛屾垨鑰呭垹闄や竴涓偣锛屼綘闇€瑕佸姩鎬佺淮鎶ょ瓟妗堛€�

Solution

鍋囪浠绘剰鏃跺埢鐨勭偣鐨勫潗鏍囧崌搴忔帓搴忓悗鐨勫簭鍒椾负 \(\{a_i\}\)
鑰冭檻鍒扮瓟妗堜竴瀹氱瓑浜� \(\max a_i - \min a_i - \max |a_i - a_{i-1}|\)锛屾垜浠彧闇€瑕佸姩鎬佺淮鎶ゆ渶澶х殑鐩搁偦鐐硅窛绂诲氨鍙互浜嗐€�
鍙互缁存姢涓€涓浜庢墍鏈� \(|a_i - a_{i-1}|\) 鐨� multiset锛屾瘡娆℃毚鍔涙彃鍏ュ垹闄ゅ嵆鍙�

Description

缁欏畾涓€涓鏁存暟 n锛屽皢瀹冪殑鎵€鏈夊ぇ浜庝竴鐨勫洜鏁版寜鐓т换鎰忛『搴忔帓鍒楀湪涓€涓幆涓婏紝浣犳瘡娆″彲浠ラ€夋嫨鍦堜笂鐩搁偦鐨勪袱涓暟锛屽湪瀹冧滑涓棿鎻掑叆浠栦滑鐨勬渶灏忓叕鍊嶆暟锛屼娇寰楁渶鍚庣殑鐜笂涓嶅瓨鍦ㄤ袱涓浉閭讳笖浜掕川鐨勬暟銆備綘闇€瑕佹壘鍒颁竴涓渶瑕佽繘琛屾搷浣滄鏁版渶灏戠殑鎺掑垪銆�

Solution

涓€绉嶇‘瀹氱殑鎬濊矾鏄紝鏋氫妇鏈€灏忚川鍥犲瓙锛岀敤鎺夋墍鏈夊畠鐨勫€嶆暟锛屽苟娉ㄦ剰鎶婁笅涓€涓川鍥犲瓙鐣欎竴涓暟鐢ㄦ潵浣滀负浠庤繖涓渶灏忚川鍥犲瓙鍒颁笅涓€涓渶灏忚川鍥犲瓙鐨勮繃娓°€傝繖绉嶆柟娉曟槸瀹规槗璇佹槑鐨勩€�
鍙︿竴绉嶆€濊矾鏄紝浠庢渶灏忔暟寮€濮嬶紝姣忔閫夋嫨涓€涓笌涓婁竴涓緭鍑虹殑鏁颁笉浜掕川鐨勬湭琚娇鐢ㄧ殑鏈€灏忕殑鏁拌緭鍑恒€傦紙闈炲父浼樼編浣嗘槸涓嶄細璇佹槑锛�

Description

缁欏畾涓€涓暱搴︿负 n 鐨勫簭鍒� a锛屾湁 q 娆℃搷浣滐紝姣忔鎿嶄綔浜ゆ崲 a[l],a[r]锛屽湪鎿嶄綔鍓嶅拰姣忔鎿嶄綔鍚庢眰鍑� a 涓墍鏈夊瓙搴忓垪鐨勪氦鏇垮拰锛�\(s_1-s_2+s_3-s_4+...\)锛夌殑鏈€澶у€笺€�

Solution

寰堝鏄撴兂鍒扮嚎娈垫爲缁存姢鍖洪棿淇℃伅锛屽彲鏄繖鏍峰お鏆村姏浜嗐€�
鍙戠幇鎵€璋撳瓙搴忓垪鐨勪氦鏇垮拰锛屽疄闄呬笂灏辨槸鍦ㄥ師鏁板垪鐨勫樊鍒嗘暟鍒椾腑閫夊嚭涓€浜涙锛屼娇寰椾粬浠殑鍜屾渶灏�/鏈€澶с€�
鍩轰簬涓婇潰杩欎釜鎰熸€х殑缁撹锛屾垜浠彲浠ュ皢鍘熼棶棰樿浆鍖栦负锛岄€夊彇鑻ュ共涓綅缃� \(i\)锛屼娇寰� \(\sum_i \max(0,a[i]-a[i-1])\) 鏈€澶с€�
鏄剧劧鎴戜滑鍙渶瑕侀€夋嫨閭d簺 \(>0\) 鐨勯儴鍒嗗嵆鍙€�
璁� \(f(i)=\max(0,a[i]-a[i-1])\)锛屽垯姣忔淇敼 \(l,r\) 鏈€澶氬彧浼氬奖鍝嶅埌 \(l,l+1,r,r+1\) 鍥涗釜浣嶇疆锛屾垜浠厛鍑忓幓瀹冧滑鐨勮础鐚紝淇敼瀹屾瘯鍚庯紝鍐嶆妸浠栦滑鍔犲洖鍘诲嵆鍙€�

Description

缁欏畾涓€鏈瓧鍏哥殑鑻ュ共椤碉紝姣忛〉涓婁細鏈夎嫢骞蹭釜鍗曡瘝锛岃繖鏈瓧鍏哥殑瀛楁瘝椤哄簭鏄爣鍑嗛『搴忕殑涓€涓帓鍒椼€傛眰鍑轰换鎰忎竴绉嶆帓鍒楁垨鑰呭垽瀹氶潪娉曘€�

Solution

棣栧厛鑰冭檻鍘绘帀椤电殑闄愬埗锛屽姣忎釜鍗曡瘝锛屽畾涔変竴涓爣鍙� \(iM+j\)锛�\(i\) 鏄畠鐨勯〉鐮侊紝\(j\) 鏄畠鏄繖涓€椤典腑鐨勭鍑犱釜锛屽垯鎴戜滑鎸夎繖涓爣鍙峰鎵€鏈夊崟璇嶆帓搴忓嵆鍙�
瀵逛簬鐩搁偦鐨勫崟璇嶏紝鎴戜滑鎵惧埌瀹冧滑绗竴涓笉鍚岀殑瀛楃锛堝鏋滄湁鐨勮瘽锛夛紝鍦ㄤ竴寮犲浘涓婂杩欎袱涓瓧姣嶄箣闂磋繛杈癸紝琛ㄧず璋佸湪璋佺殑鍓嶉潰
瀵硅繖寮犲浘姹傛嫇鎵戝簭锛屾嫇鎵戝簭灏辨槸 DFS 鐨勯€€鏍堝簭
鍙互杈规眰杈瑰垽锛屼篃鍙互姹傚畬浠ュ悗鎵竴閬嶆墍鏈夎竟鐪嬩竴涓嬫槸鍚﹂潪娉�

Description

缁欏畾涓€涓覆锛屽寘鍚瓧绗� a,b,c,?锛屽叾涓� ? 浠h〃閫氶厤绗︼紝鍗宠繖涓綅缃彲浠ユ槸浠绘剰涓€涓瓧绗︺€傛眰鎵€鏈夎兘涓庤繖涓覆鍖归厤鐨勭‘瀹氫覆涓紝瀛愬簭鍒� abc 鐨勬暟閲忎箣鍜屻€�

Solution

璁� \(f[i][j]\) 琛ㄧず瀵逛簬 \(s[1..i]\)锛屽寘鍚瓙搴忓垪 a,ab,abc 鐨勬暟閲忎箣鍜屽悇涓哄灏戯紝鍒欏浜� \(s[i] \neq ?\)锛屾湁
\(f[i][1] = f[i-1][1] + (s[i]==a) \cdot 3^{cnt}, f[i][2] = f[i-1][1] + (s[i]==b) \cdot f[i-1][1], f[i][3] = f[i-1][3] + (s[i]==c) \cdot f[i-1][2]\)
瀵逛簬 \(s[i] = ?\)锛屽垯
\(f[i][1] = 3f[i-1][1] + 3^{cnt}, f[i][2] = 3f[i-1][1] + f[i-1][1], f[i][3] = 3f[i-1][3] + f[i-1][2]\)

Description

缁欏畾涓€涓瓧绗︿覆 \(s\)锛屾眰鑷冲皯瀵� \(s\) 杩涜澶氬皯娆$浉閭诲瓧绗︿氦鎹㈡搷浣滄墠鑳戒娇寰� \(s\) 鍙樻垚 \(s\) 鐨勭炕杞覆銆�

Solution

濡傛灉灏嗘暣涓氦鎹㈣繃绋嬬湅鍋氫竴涓疆鎹紝鏄剧劧鏈€灏戠殑鐩搁偦浜ゆ崲娆℃暟绛変簬缃崲鐨勯€嗗簭瀵逛釜鏁般€�
閭d箞鎴戜滑灏嗗悓涓€绉嶅瓧绗﹀湪姝e簭鍜屽€掑簭涓蹭腑鐨勫嚭鐜颁綅缃兘璁板綍涓嬫潵锛岀劧鍚庨『搴忓尮閰嶅嵆鍙€�
杩欐牱灏卞彲浠ョ畻鍑轰竴涓帓鍒楋紝鎴戜滑鍙渶瑕佽绠楄繖涓帓鍒楃殑閫嗗簭瀵规暟鍗冲彲銆傛眰閫嗗簭瀵规暟鐩存帴鏍戠姸鏁扮粍鍗冲彲锛屽€掑簭鎵弿鏁翠釜缃崲锛屾妸杩欎釜鏁板悗闈㈡瘮瀹冨皬鐨勬暟鐨勬暟鐩姞鍏ョ瓟妗堝嵆鍙€�

Description

缁欏畾涓€涓ぇ灏忎负 \(n \times m\) 鐨勭煩闃碉紝瑕佹眰姣忚鍙兘閫夊彇涓嶈秴杩囦竴鍗婄殑鍏冪礌锛屼娇寰楁墍鏈夐€夊嚭鍏冪礌鐨勬€诲拰鏄� \(k\) 鐨勫€嶆暟锛屼笖杩欎釜鎬诲拰鏈€澶с€傛眰杩欎釜鏈€澶у€笺€�\(n,m,k \le 70\)銆�

Solution

鑰冭檻 dp锛屽浜庢瘡涓€琛� \(i\)锛岄鍏堥澶勭悊鍑� \(f[i][j][l][res]\) 琛ㄧず鍦ㄧ \(i\) 琛屼腑锛屼粠鍓� \(j\) 涓暟涓€夋嫨浜� \(l\) 涓暟锛屽拰 \(\mod k = res\) 鐨勬渶澶у拰涓哄灏戙€傛嵁姝わ紝鎴戜滑鍙互瀵� \(f[i][*][*][res]\) 鍙� \(\max\) 寰楀埌 \(g[i][res]\)锛屽嵆浠庣 \(i\) 琛屼腑閫変笉瓒呰繃涓€鍗婄殑鏁帮紝涓旀弧瓒虫€诲拰 \(\mod k = res\) 鐨勯檺鍒舵潯浠舵椂锛岃兘澶熻揪鍒扮殑鏈€澶х殑鍜屾槸澶氬皯銆�
璁� \(h[i][res]\) 琛ㄧず鑰冭檻鍓� \(i\) 琛岋紝浠庨噷闈㈤€夊彇鑻ュ共涓暟锛堝綋鐒舵暟閲忚鍚堟硶锛夛紝涓旀弧瓒虫€诲拰 \(\mod k = res\) 鐨勯檺鍒舵潯浠舵椂锛岃兘澶熻揪鍒扮殑鏈€澶х殑鍜屾槸澶氬皯銆傚埄鐢� \(g[i][res]\) 鏄剧劧鍙互杞绘澗璁$畻銆�

Description

缁欏畾涓€寮犲浘 \((n \le 1000, m \le 1000)\)锛屽浘涓婃湁 \(k\) 瀵圭偣 \((a_i,b_i)\) 琛ㄧず鏈変竴涓繍杈撻」鐩粠 \(a_i\) 杩愯緭鍒� \(b_i\)銆傜幇鍦ㄤ綘鍙互閫夋嫨涓€鏉¤竟灏嗗畠鐨勬潈鍊煎彉涓洪浂锛岃姹傛渶灏忓寲鎵€鏈夎繍杈撻」鐩殑鏈€鐭窛绂荤殑鍜屻€�

Solution

鑰冭檻灏嗘瘡鏉¤竟 \(e(u,v)\) 鐨勬潈鍊煎彉涓� \(0\) 瀵圭粨鏋滅殑褰卞搷锛屽浜庤繍杈撹鍒� \((a,b)\)锛屽叾鑻ヤ笉缁忚繃 \((u,v)\) 鍒欎负鍏跺師绛旀锛岃涔堢粡杩� \((u,v)\) 鍒欑瓟妗堜负 \(\min(d_{a,u}+d_{v,b}, d_{a,v}+d_{u,b})\)锛屼簩鑰呭彇鏈€灏忓€煎嵆鍙€�
浜庢槸鎴戜滑鍙渶瑕侀澶勭悊鍑烘墍鏈夌偣瀵逛箣闂寸殑鏈€鐭矾锛岀劧鍚庢ā鎷熶笂杩拌繃绋嬪嵆鍙€傛眰鎵€鏈夌偣瀵规渶鐭矾鐨勮繃绋嬪彲浠ョ敤 Dijkstra 鍋氬埌 \(O(nm \log n)\)銆�

Description

缁欏畾浠� \(1\) 涓烘牴鐨� \(n\) 涓粨鐐圭殑涓€妫垫爲锛屾瘡涓粨鐐逛笂鏈� \(a_i\) 涓汉锛屾瘡涓汉鍙互閫夋嫨浠绘剰鐨勫瓙鑺傜偣璧帮紝鐩村埌璧板埌鍙跺瓙缁撶偣涓烘锛岄棶鏈€鍚庝汉鏈€澶氱殑鍙跺瓙缁撶偣鏈€灏戞湁澶氬皯浜恒€�

Solution

鑰冭檻涓€涓€掓帹鍏崇郴锛屽浜� \(p\) 鐨勬墍鏈夊瀛� \(q_i\)锛岄鍏� \(p\) 鐨勭瓟妗堜竴瀹氫笉灏忎簬 \(q_i\) 鐨勭瓟妗堬紝涔熶笉灏忎簬瀛愭爲鏉冨€煎拰闄や互鍙跺瓙缁撶偣鎬绘暟锛屽悓鏃讹紝\(q_i\) 涓渶澶х瓟妗堣嫢涓嶅皬浜庡钩鍧囧垎閰嶇殑缁撴灉锛屽垯杩欎釜鏈€澶х瓟妗堜竴瀹氬彲浠ヨ \(p\) 鍙栧埌
鍥犳璁� \(f[p]\) 涓� \(p\) 鐨勭瓟妗堬紝\(sum[p]\) 涓� \(p\) 鐨勫瓙鏍戞潈鍊煎拰锛�\(cnt[p]\) 涓� \(p\) 瀛愭爲涓殑鍙跺瓙涓暟锛屽垯 \(f[p]=\max(q_1,...,q_k,sum[p]/cnt[p])\)

Description

鏈� n 閬撹彍鍝佽鏀惧叆浜嗕竴涓儰鐐変腑锛屾瘡鍒拌彍鍝侀兘鏈変竴涓渶浣冲彇鍑虹殑鏃堕棿 \(t_i\)銆傜幇鍦ㄦ寜鐓т竴瀹氶『搴忔妸鑿滃搧浠庣儰鐐変腑鍙栧嚭锛屾瘡鍒拌彍鍝侀兘鏈夊彲鑳藉洜涓轰笉鍦ㄦ渶浣虫椂闂磋鍙栧嚭鑰岄€犳垚涓嶇編鍛筹紝瀹氫箟杩欎釜涓嶇編鍛冲害涓� \(|T-t_i|\)锛屽叾涓� T 鏄彇鍑虹殑鏃跺埢銆傛眰鎶婃墍鏈夎彍鍝侀兘鍙栧嚭鏉ョ殑鏈€灏忎笉缇庡懗搴︺€�\(n \le 200\)

Solution

鑰冭檻鍒板彇鍑烘墍鏈夎彍鍝佺殑椤哄簭涓€瀹氫笌浠栦滑瀹屾垚鐨勬椂闂村厛鍚庨『搴忕浉鍚岋紝璁� \(f[i][j]\) 琛ㄧず鍒颁簡鏃跺埢 \(i\) 鍙栧嚭浜嗗墠 \(j\) 涓彍鍝侊紝閭d箞寰堟樉鐒舵湁杞Щ \(f[i][j]=\min (f[i-1][j],f[i-1][j-1]+|i-t[j]|)\)锛屽彲浠ュ帇鎺変竴缁村€掑簭杞Щ銆�

Description

缁欏畾涓€涓暟鍒楋紝鍏朵腑涓€浜涘厓绱犲浐瀹氾紝鍙︿竴浜涘厓绱犲彲浠ヤ慨鏀广€傝姹備慨鏀规渶灏戠殑鍏冪礌浣垮緱杩欎釜搴忓垪鍙樻垚涓ユ牸鍗曞鐨勫簭鍒椼€�

Solution

棣栧厛閫氳繃 \(a_i \leftarrow a_i-i\) 灏嗗師搴忓垪鍙樹负闈炰弗鏍煎崟澧炵殑搴忓垪銆�
鍥哄畾鍏冪礌灏嗗師搴忓垪鍒嗗壊鎴愪簡鑻ュ共娈碉紝姣忔鍐呮眰涓€涓� LCS锛屽墿涓嬬殑灏辨槸闇€瑕佺Щ鍔ㄧ殑銆傛敞鎰忥紝濡傛灉瓒呭嚭浜嗗乏鍙充袱渚х殑鍥哄畾鍏冪礌闄愬埗鐨勫€煎煙锛岄偅涔堣繖涓厓绱犱篃蹇呴』琚Щ鍔ㄣ€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾瘡娆″彲浠ラ€夋嫨 \(3\) 涓笉鐩稿悓鐨勪笅鏍� \(i,j,k\)锛岃绠� \(a_i \oplus a_j \oplus a_k\)锛岃祴鍊肩粰 \(a_i,a_j,a_k\)銆傞棶鏄惁鑳介€氳繃涓嶈秴杩� \(n\) 娆℃搷浣滐紝浣垮緱鎵€鏈夋暟鐩稿悓锛屾瀯閫犳柟妗堛€�

Solution

鏋勯€犵殑鏍稿績鎬濊矾鏄垜浠彂鐜帮紝濡傛灉鏈� \(x,x,y\) 杩欐牱鐨勬儏鍐碉紝閭d箞鎿嶄綔涓€娆″氨鍙互鍙樻垚 \(y,y,y\)銆�
瀵逛簬濂囨暟闀垮害鐨勬儏鍐碉紝姣斿 \(a,b,c,d,e \to x,x,x,d,e \to x,x,y,y,y \to y,y,y,y,y\)銆�
瀵逛簬鍋舵暟闀垮害鐨勬儏鍐碉紝鎴戜滑鍙互鎸夌収绫讳技鐨勬柟娉曡繘琛屾瀯閫狅紝浣嗘槸鏃犺濡備綍閮戒細鍓╀笅涓€涓暟銆�
鑰冭檻鍒拌繖鏍风殑鎿嶄綔鏄笉浼氬奖鍝嶆暣涓簭鍒楃殑寮傛垨鍜岀殑锛屽洜姝ゆ垜浠彧闇€瑕佸鍓嶉潰 \(n-1\) 涓暟鏋勬垚鐨勫簭鍒楄繘琛屾搷浣滐紝鏈€鍚庡垽瀹氭渶鍚庝竴涓暟涓庝粬浠槸鍚︾浉绛夊嵆鍙€�

Description

缁欏畾涓€涓� \(n\times m\) 鐨� \(01\) 鐭╅樀锛屾瘡娆℃搷浣滃彲浠ュ皢鏌愪釜 \(2\times2\) 鐨勭煩闃靛唴鐨� \(3\) 涓暟鍙栧弽锛岃鍦� \(n\times m\) 姝ュ唴灏嗙煩闃靛彉涓哄叏 \(0\)銆�

Solution

鎴戜滑鐨勫熀鏈€濊矾鏄紝浠讳綍涓€涓� \(2 \times 2\) 鐨勭煩闃甸兘鍙互缁忚繃涓嶈秴杩� \(4\) 娆℃搷浣滄秷鍘诲緱鍒扮洰鏍囩姸鎬侊紝鍥犳瀵逛簬浠讳綍涓€涓竟闀夸负鍋舵暟鐨勭煩闃碉紝鎴戜滑鍙渶瑕佸浜庢瘡涓� \(2 \times 2\) 鐨勫皬鏂瑰潡鎵ц涓€娆℃搷浣滃嵆鍙紱瀵逛簬涓€涓竟闀夸负濂囨暟鐨勭煩闃碉紝鎴戜滑鍏堟妸瀹冪殑鏈€鍚庝竴琛岋紙鍒楋級鏆村姏娑堝幓锛岀劧鍚庤浆鍖栦负鍋舵暟鐨勬儏鍐佃繘琛屽鐞嗐€�
瀵逛簬涓€涓� \(2 \times 2\) 鐨勬柟鍧楃殑涓嶈秴杩囧洓姝ユ搷浣滐紝骞朵笖鏄剧劧鎿嶄綔鏈€澶氬彧浼氭湁 \(4\) 绉嶏紝姣忕瑕佷箞杩涜 \(0\) 娆★紝瑕佷箞杩涜 \(1\) 娆★紝鍥犳鎬诲叡鍙湁 \(16\) 绉嶅彲鑳斤紝鏆村姏鏋氫妇杩欎簺鍙兘鍗冲彲銆�

Description

缁欏畾闀垮害涓� \(n\) 鐨勯潪閫掑搴忓垪銆傚湪涓€娈佃矾涓婁緷娆℃湁 \(n\) 涓晢搴楋紝绗� \(i\) 涓晢搴楁湁涓€绉嶅晢鍝侊紝浠锋牸涓� \(a_i\)銆傛湁 \(q\) 娆℃搷浣滐紝姣忔鎿嶄綔鏈変袱绉嶃€�
1 x y 琛ㄧず瀵逛簬浠绘剰 \(i \in [1,x]\)锛屼护 \(a_i = \max(a_i, y)\)銆�
2 x y 琛ㄧず浠庢嬁鐫€ \(y\) 鍏冮挶浠庣 \(x\) 涓晢搴楀紑濮嬶紝濡傛灉鑳借喘涔板氨璐拱涓€浠斤紝骞跺線鍙宠蛋锛屾眰璐拱浜嗗灏戜欢鍟嗗搧銆�

Solution

鐢变簬搴忓垪鏄崟璋冪殑锛屾瘡涓汉鐨勮喘涔板簭鍒椾竴瀹氭瀯鎴愪笉瓒呰繃 \(\log n\) 涓繛缁锛屽悓鏃舵瘡娆′慨鏀规搷浣滅浉褰撲簬鍖洪棿瑕嗙洊銆�
鍥犳鑰冭檻绾挎鏍戜笂浜屽垎銆�
瀵逛簬鎿嶄綔 \(1\)锛屾垜浠渶瑕佹壘鍒扮涓€涓笉澶т簬 \(y\) 鐨勫厓绱狅紝璁捐繖涓厓绱犵殑浣嶇疆涓� \(pos\)锛屽垯鎴戜滑灏� \([pos,x]\) 鍖洪棿瑕嗙洊涓� \(y\) 鍗冲彲锛屽洜姝ょ嚎娈垫爲闇€瑕佷竴涓〃绀哄尯闂磋鐩栫殑鏍囪銆�
瀵逛簬鎿嶄綔 \(2\)锛屾垜浠粠浜屽垎鍑轰笅涓€涓彲浠ヨ喘涔扮殑鍏冪礌鍦ㄥ摢閲岋紙鍗充簩鍒嗘壘鍒扮涓€涓笉澶т簬 \(key\) 鐨勫厓绱犵殑浣嶇疆锛夛紝鍐嶆壘鍒拌兘浠庤繖涓綅缃繛缁喘涔板埌鍝釜浣嶇疆涓烘锛堝嵆鎵惧埌鏈€鍚庝竴涓繚鎸佽繖娈电殑鍜屼笉瓒呰繃 \(key\) 鐨勪綅缃級锛岃喘涔拌繖涓€娈碉紝鐒跺悗缁х画杩涜涓婅堪杩囩▼锛岀洿鍒板埌杈惧簭鍒楁湯灏俱€�
鍥犳锛岀嚎娈垫爲闇€瑕佹敮鎸佸尯闂存眰鍜岋紝浜屽垎绛旀鎵剧涓€涓笉澶т簬 \(key\) 鐨勫厓绱狅紙鍦ㄥ崟璋冨簭鍒椾笂锛夛紝浜屽垎绛旀鎵炬渶鍚庝竴涓墠缂€鍜屼笉澶т簬 \(key\) 鐨勫厓绱狅紝鍖洪棿瑕嗙洊锛屽洜姝ら渶瑕佸浜庢瘡涓粨鐐圭淮鎶や竴涓粨鐐瑰搴斿尯闂翠腑鐨勬渶澶у€兼渶灏忓€笺€佸尯闂村拰 \(sum\)銆佸尯闂磋鐩栨爣璁� \(tag\)锛屽綋鏍囪涓� \(0\) 鏃惰〃绀烘棤鏍囪锛屽惁鍒欒〃绀哄尯闂磋鐩栦负澶氬皯銆�
棣栧厛鎴戜滑瀹炵幇涓€涓敮鎸佷互涓婂姛鑳界殑绾挎鏍戯紝鐒跺悗閬嶅巻鎵€鏈夋搷浣滐紝瀵逛簬鎿嶄綔 \(2\) 寰幆澶勭悊锛屽叾瀹冩搷浣滅洿鎺ヨ皟鐢ㄥ嵆鍙€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝姣忔鍙互瀵逛竴涓墠缂€鎴栧悗缂€ \(-1\)锛屾眰鑳藉惁浣垮緱鏁翠釜鏁板垪涓� \(0\)銆�

Solution

灏嗗簭鍒楁媶鍒嗕负涓€涓笉涓婂崌搴忓垪鍜屼竴涓笉涓嬮檷搴忓垪鐨勫拰锛屽彲浠ヨ涓嶄笅闄嶅簭鍒椾粠 \(0\) 寮€濮嬶紝姣忔閬囧埌涓€涓� \(a_i-a_{i-1} > 0\) 鐨勪綅缃紝灏卞皢杩欎釜宸€煎姞杩涘幓锛屾渶鍚庡垽瀹氬師搴忓垪鍑忓幓杩欎釜涓嶄笅闄嶅簭鍒楁槸鍚︿负涓€涓笉涓婂崌搴忓垪銆�

Description

缁欏畾涓や釜鏁扮粍 \(a,b\)锛岄暱搴﹀垎鍒负 \(n,m( m \le n)\)銆�\(a\) 鏄� \(1..n\) 鐨勫叏鎺掑垪锛�\(b\) 鏄竴涓� \(1..n\) 鐨� \(m\) 鎺掑垪銆�\(b\) 鏄洰鏍囧簭鍒楋紝鍗虫垜浠渶瑕侀€氳繃浠ヤ笅鐨勬搷浣滄潵鏋勯€犱竴涓瓟妗堝簭鍒椾娇鍏剁瓑浜� \(b\)銆傛瘡娆℃搷浣滈€夋嫨涓€涓� \(t\)锛屽皢 \(a_{t-1}\) 鎴� \(a_{t+1}\) 鎻掑叆绛旀搴忓垪鏈熬骞跺皢 \(a_t\) 鍒犻櫎銆傞棶鏈夊灏戠涓嶅悓鐨勬瀯閫犳柟妗堛€�

Solution

鑰冭檻瀵逛簬鍑虹幇鍦� \(b\) 涓殑姣忎竴涓� \(a_i\)锛屾垜浠繀鐒惰鍒犻櫎 \(a_{i-1}\) 鍜� \(a_{i+1}\) 涓殑鑷冲皯涓€涓€�
璁� \(f(a_i)\) 琛ㄧず \(a_i\) 鍦� \(b\) 涓殑鍑虹幇浣嶇疆銆�
濡傛灉 \(a_{i-1}\) 瀛樺湪锛屽苟涓� \(f(a_{i-1}) \le f(a_{i})\)锛岄偅涔堟垜浠О杩欎釜 \(a_{i-1}\) 瀵逛簬 \(a_i\) 鏄悎娉曠殑銆�\(a_{i+1}\) 鍚岀悊銆�
瀵逛簬 \(a_i\)锛屾湁濡備笅涓夌鎯呭喌锛�

濡傛灉 \(a_{i-1},a_{i+1}\) 鍧囧悎娉曪紝閭d箞鎴戜滑鍙互鍒犻櫎浠绘剰涓€涓紝鏂规鏁颁箻 \(2\)銆備箣鎵€浠ョ幇鍦ㄥ彲浠ュ垹闄や换鎰忥紝鏄洜涓� \(a_{i-1},a_i,a_{i+1}\) 鐨勫嚭鐜颁綅缃繀鐒堕兘鍦� \(b\) 涓悗闈㈡墍鏈夋暟涔嬪墠锛屽洜姝や粬浠苟娌℃湁鍖哄埆銆�

濡傛灉 \(a_{i-1},a_{i+1}\) 涓伆濂芥湁涓€涓悎娉曪紝閭d箞鎴戜滑鎶婂畠鍒犻櫎鍗冲彲銆�

濡傛灉 \(a_{i-1},a_{i+1}\) 鍧囦笉鍚堟硶锛屽垯鏃犺В銆�

Description

缁欏畾涓€涓暱搴︿负 \(2n\) 鐨勫簭鍒楋紝浣犻渶瑕佹妸瀹冨垎鎴愪袱涓暱搴﹂兘鏄� \(n\) 鐨勫瓙搴忓垪锛屼袱閮ㄥ垎鍒嗗埆浠ラ檷搴忓拰鍗囧簭鎺掑垪锛屽畾涔変竴绉嶆柟妗堢殑鏉冨€间负 \(\sum_i |x_i - y_i|\)锛屾眰鎵€鏈夋柟妗堢殑鏉冨€肩殑鍜屻€�

Solution

灏嗙粷瀵瑰€艰涓哄樊鐨勫舰寮忥紝閭d箞鏃犺濡備綍鍒掑垎锛屾潈鍊奸兘鏄緝澶х殑 \(n\) 涓暟鐨勫拰鍑忓幓杈冨皬鐨� \(n\) 涓暟鐨勫拰銆�

Description

缁欏畾涓や釜涓� \(s,t\)锛岄暱搴� \(\le 5000\)锛屾眰瀵规墍鏈� \(s\) 鐨勫瓙涓� \(p\) 鍜� \(t\) 鐨勫瓙涓� \(q\)锛�\(4LCS(p,q)-|p|-|q|\) 鐨勬渶澶у€笺€侺CS 鎸囨渶闀垮叕鍏卞瓙搴忓垪銆�

Solution

璁� \(f[i][j]\) 琛ㄧず \(s\) 鑰冭檻鍒扮 \(i\) 涓瓧绗︼紝\(t\) 鑰冭檻鍒扮 \(j\) 涓瓧绗︼紝涓や釜鍓嶇紑涓墍瀛樺湪鐨� LCS 鐨勬渶澶ч暱搴︺€�
杞Щ鏃朵富瑕佺粨鍚堜竴涓� LCS 涓庢渶澶у瓙娈靛拰鐨勬€濇兂锛屽嵆 if(s[i]==t[j]) f[i][j]=max(f[i-1][j-1],0ll)+2;else f[i][j]=max(f[i][j-1],f[i-1][j])-1;

Description

缁欏畾 \(n\) 涓嚜鐒舵暟锛屾瘡涓暟浼氫笌鑷繁寮傛垨鏈€灏忕殑鏁帮紝鍚戝畠杩炰竴鏉¤竟銆傛眰鑷冲皯鍒犲幓澶氬皯涓暟锛屾墠鑳戒娇杩欎釜鑷劧鏁伴泦鍚堢粡杩囪繖鏍风殑鎿嶄綔鏋勬垚鐨勫浘鏄竴妫垫爲銆傝竟閮芥槸鏃犲悜鐨勶紝閲嶈竟鑷姩鍚堝苟銆�

Solution

鑰冭檻鍦� 0-1 Trie 涓紝濡傛灉缁撶偣 \(p\) 鐨勫瓙鏍戜腑鏈� \(1\) 涓湁鏁堝彾瀛愮粨鐐癸紝閭d箞杩欎釜缁撶偣涓€瀹氫細涓庡瓙鏍戝鐨勭粨鐐硅繛杈癸紝鍥犳鎴戜滑鍙互璇� \(p\) 鐨勫瓙鏍戞槸瀹夊叏鐨勩€�
鐩稿弽鍦帮紝濡傛灉 \(p\) 鐨勫瓙鏍戝唴鏈� \(\ge 2\) 涓湁鏁堝彾瀛愮粨鐐癸紝閭d箞杩欎簺缁撶偣涔嬮棿涓€瀹氫細鐩镐簰鍖归厤杩炶竟锛屽洜姝� \(p\) 瀛愭爲鍐呯殑杩欎簺鑺傜偣灏变細涓庡墿浣欑殑閮ㄥ垎鏂紑銆�
鍥犳锛屽浜庝竴涓粨鐐� \(p\)锛屽畠鐨勫乏瀛愭爲鍜屽彸瀛愭爲鍒嗗埆涓� \(x,y\)锛屽鏋滀袱杈圭殑鍙跺瓙缁撶偣鏁扮洰閮藉ぇ浜� \(1\)锛岄偅涔堟垜浠渶瑕佸皢涓€杈圭殑鏈夋晥鍙跺瓙缁撶偣鏁扮洰鍒犲噺鍒颁笉瓒呰繃 \(1\)锛屾墠鑳戒娇寰楁暣涓繃绋嬫槸鏈夋晥鐨勩€傝嚦浜庡垹闄ゅ摢涓€杈癸紝闇€瑕侀€掑綊鍋氫笅鍘汇€�
鍏蜂綋鍦帮紝鎴戜滑瀹氫箟 \(f(p)\) 琛ㄧず缁撶偣 \(p\) 鐨勫瓙鏍戝唴鐨勬湁鏁堝彾瀛愮粨鐐规渶澶氬彲浠ヤ繚鐣欏灏戜釜銆�
濡傛灉 \(p\) 鐨勫乏瀛愭爲涓殑鏈夋晥鍙跺瓙缁撶偣涓暟涓洪浂锛岄偅涔� \(f(p) = f(p.rightChild)\)銆�
濡傛灉 \(p\) 鐨勫彸瀛愭爲涓殑鏈夋晥鍙跺瓙缁撶偣涓暟涓洪浂锛岄偅涔� \(f(p) = f(p.leftChild)\)銆�
濡傛灉 \(p\) 鐨勫乏鍙冲瓙鏍戜腑鐨勬湁鏁堝彾瀛愮粨鐐逛釜鏁伴兘闈為浂锛岄偅涔� \(f(p) = \max(f(p.leftChild), p.(rightChild)) + 1\)锛屽嵆鎴戜滑灏嗕竴杈瑰垹闄ゅ埌鍙墿涓嬩竴涓€�
浣滀负閫掑綊鐨勮竟鐣岋紝褰撳瓙鏍戝唴鍙湁涓€涓粨鐐癸紙鎴栬€呭眰鏁拌揪鍒板彾瀛愶級鐨勬椂鍊欙紝杩斿洖涓€涓€煎嵆鍙€�

[CF1450C1] Errich-Tac-Toe (Easy Version) - 鏋勯€�

Description

缁欏畾涓€涓綉鏍硷紝鏈夌殑鏍煎瓙濉簡 X锛岃姹備笉鑳芥湁涓変釜妯潃鎴栬€呯珫鐫€鐨� X 鎴� O 鐩歌繛锛屼綘鍙互鎶� X 鏀规垚 O銆傛瀯閫犱竴绉嶆柟妗堛€�

Solution

妯′豢榛戠櫧鏌撹壊鐨勬€濊矾锛岃€冭檻瀵规墍鏈夌殑鏍煎瓙鎸� \((i+j) \bmod 3\) 鏌撹壊锛岄偅涔堟棤璁烘í绔栵紝鐩搁偦鐨勪笁涓牸瀛愪竴瀹氭í璺ㄤ簡涓夌棰滆壊銆�
鎴戜滑鍙湅鎵€鏈夋煇涓€绉嶉鑹诧紙涓€瀹氬瓨鍦ㄤ竴绉嶉鑹茬殑鏁伴噺婊¤冻瑕佹眰锛夌殑鏍煎瓙锛屽鏋滃叾涓槸 X 灏辨敼鎴� O锛岃繖鏍锋瀯閫犲嚭鏉ョ殑涓€瀹氭槸鍚堟硶鐨勩€�

[CF1450C2] Errich-Tac-Toe - 鏋勯€�

Description

缁欏畾涓€涓綉鏍硷紝鏈夌殑鏍煎瓙濉簡 X 鎴� O锛岃姹備笉鑳芥湁涓変釜妯潃鎴栬€呯珫鐫€鐨� X 鎴� O 鐩歌繛锛屼綘鍙互鎶� X 鏀规垚 O锛屾妸 O 鏀规垚 X銆傛瀯閫犱竴绉嶆柟妗堬紝鎿嶄綔娆℃暟涓嶈秴杩� \(k/3\)銆�

Solution

娌跨敤 easy 鐗堟湰鐨勬€濇兂锛屼絾闇€瑕佽€冭檻涓€浜涙€ц川
鎴戜滑鍙渶瑕佽 3 涓浉閭荤殑鏈� 2 涓笉鍚屽氨鍙互浜�
涓€瀹氬瓨鍦ㄦ煇涓€绫伙紝鍏朵腑鐨勪釜鏁颁笉灏戜簬鎬讳釜鏁扮殑 1/3锛屾垜浠挦瀹氳繖涓€绫讳笉鍙橈紝淇敼鍏跺畠涓ょ被
鍦ㄥ叾浠栦袱绫讳腑锛岀敱浜庨挦瀹氫竴绫讳负 X 涓€绫讳负 O锛屾鍙嶄袱绉嶆柟妗堜腑锛屼竴瀹氭湁涓€绉嶇殑淇敼閲忎笉浼氳秴杩囨€绘暟鐨勪竴鍗�
涓轰簡鐪佷簨锛屾垜浠湪瀹炵幇鏃讹紝瀵逛簬姣忎竴涓被锛岀敤 3 绉嶆ā寮忕鎻忚堪锛�0 琛ㄧず涓嶄慨鏀癸紝O 琛ㄧず寮鸿淇敼鎴� O锛孹 琛ㄧず寮鸿淇敼鎴� X锛岀劧鍚庢灇涓惧嵆鍙�

Description

鍧愭爣杞翠笂锛屾湁涓€涓互 \((0,0)\) 涓哄渾鐐癸紝\(d\) 涓哄崐寰勭殑鍦嗐€傜幇鍦� Ashish 鍜� Utkarsh 鐜╂父鎴忥紝Ashish 鏄厛鎵嬨€傚湪 \((0,0)\) 澶勬湁涓€棰楁瀛愶紝涓や汉杞祦灏嗘瀛愬悜涓婃垨鍚戝彸绉诲姩 \(k\) 涓崟浣嶏紝妫嬪瓙涓嶈兘绉诲嚭鍦嗭紝璋佹棤娉曠Щ鍔ㄨ皝杈撱€�

Solution

棣栧厛锛屽悓涓€鏍瑰瑙掔嚎涓婄殑绛旀鐩稿悓锛屽洜涓哄悗鎵嬫€诲彲浠ラ€氳繃涓庡厛鎵嬬浉鍙嶇殑鍔ㄤ綔鏉ヤ娇寰楄儨璐熸€т笉鍙樸€�
鍥犳鎴戜滑鍙渶瑕佸垽鏂� \((n,n)\) 鐨勭姸鎬佸嵆鍙€�
\((n,n)\) 涓嶆槸蹇呰触鐐癸紝褰撲笖浠呭綋 \((n+1,n)\) 鍦ㄥ渾鍐呫€�

Description

浜や簰棰橈紝鐢ㄤ笉瓒呰繃 \(n+2\) 娆℃搷浣滅寽鍑轰竴涓暱搴︿负 \(n\) 鐨勬暟缁勶紝姣忔鍙互鎸囧畾涓や釜涓嶅悓鐨勪笅鏍囷紝璇㈤棶杩欎袱涓綅缃殑鏁扮殑 AND 鎴� OR 鎴� XOR銆�

Solution

涓€涓洿瑙傜殑鎬濊矾鏄厛鐚滃嚭涓€灏忛儴鍒嗘暟锛岃繘鑰岄€氳繃寮傛垨鎿嶄綔寰楀嚭鍓╀笅鐨勩€�
鐚滀竴涓槸涓嶈鐨勶紝鐚滀袱涓技涔庝篃鏄笉琛岀殑銆�
鑰冭檻鐚滀笁涓紝鎴戜滑鍙互鐢ㄤ簲涓€滄柟绋嬧€濆幓姹傝В鍓嶄笁涓暟锛岃嚦浜庨€夊彇鎬庢牱鐨勭粍鍚堟湁寰堝绉嶆柟妗堬紝鍙互鍐欎釜鏆村姏绋嬪簭灏濊瘯鍑犳鎴栬€呮墜鐜╀竴涓嬨€�

Description

鏈� \(n\) 涓棶棰橈紝鏈� \(m\) 涓€夋墜锛屾瘡涓€夋墜鏈変竴涓枩娆㈢殑闂鍖洪棿 \([l_i,r_i]\)锛岀幇鍦ㄦ湁涓や釜璁查浜哄彲浠ラ€夋嫨涓や釜鍖洪棿闀垮害涓� \(k\) 鐨勫尯闂存潵璁查锛屾瘡涓€夋墜鍙兘鍚竴涓棰樹汉鐨勮棰橈紝骞朵骇鐢熶粬鍚埌鐨勫枩娆㈢殑闂鏁伴噺鐨勫垎鏁般€傞€氳繃閫夋嫨璁查浜鸿棰樼殑鍖洪棿锛屾渶澶у寲鍒嗘暟鍜屻€�\(n,m \le 2000\)

Solution

灏嗛€夋墜鎸夌収宄板€肩偣 \(l_i + r_i\) 鎺掑簭銆傛毚鍔涙灇涓惧皢閫夋墜鍒掑垎鎴愪袱浠界殑鍒嗙晫绾匡紝鍓嶅崐閮ㄥ垎鍚涓€涓棰樹汉锛屽悗鍗婇儴鍒嗗惉绗簩涓棰樹汉銆�
鍋囪鐜板湪宸茬粡鍒掑垎濂戒簡 \([1,p], [p+1,m]\)锛屽浜庡墠鍗婇儴鍒嗙殑閫夋墜锛岃绠楀嚭姣忎釜棰樼洰琚鍏ョ殑娆℃暟锛堝埄鐢ㄥ樊鍒嗗墠缂€鍜岋級锛岀劧鍚庢壂涓€閬嶇畻鍑鸿棰樹汉璇ユ斁鍦ㄥ摢銆傚浜庡悗鍗婇儴鍒嗕篃鍚岀悊銆�

[CF1454F] Array Partition - ST琛�,浜屽垎

Description

缁欏畾搴忓垪 \(a\)锛岃姹傚皢鍏跺垝鍒嗕负涓変釜闈炵┖瀛愪覆锛堣涓変釜瀛愪覆闀垮垎鍒负 \(x,y,z\)锛夛紝浣垮緱 \(\max\limits_{i=1}^x a_i = \min\limits_{i=x+1}^{x+y} a_i = \max\limits_{i=x+y+1}^n a_i\)銆�

Solution

鏋氫妇 x锛岄偅涔� y 浼氬彈鍒颁袱涓尯闂寸殑闄愬埗
min 鐨勯檺鍒跺尯闂寸敤 ST 琛� + 浜屽垎瑙e嚭
max 鐨勯檺鍒跺尯闂寸敤鍚庣紑 max + 浜屽垎瑙e嚭

Description

缁欏嚭涓€涓敱 \(n\) 涓暟瀛楃粍鎴愮殑鏁扮粍銆傜幇鍦ㄥ畾涔変竴绉嶅瓙闆嗕负 \(\{A_1, A_2, A_3, ..., A_m\}\) 浣垮緱杩欎釜瀛愰泦涓殑鏈€澶у€煎拰鏈€灏忓€肩殑宸€间笉瓒呰繃 \(k\)锛屽叾涓� \(m\) 鍜� \(k\) 鏄粰鍑虹殑銆傜幇鍦ㄩ棶浣犺繖绉嶅瓙闆嗘湁鍑犱釜銆�

Solution

鏈€鍒濈殑鎯虫硶鏄皢姣忎釜鏁扮殑閲嶆暟缁熻鍑烘潵锛岀劧鍚庢灇涓炬渶澶х殑鏁颁互鍙婃渶澶ф暟閫夊灏戜釜锛屽墿涓嬬殑鐢ㄧ粍鍚堟暟璁$畻銆�
鏇寸畝鍗曠殑鏂规硶鏄紝鐩存帴鎺掑簭锛岀劧鍚庢灇涓炬渶澶ф暟鐨勪綅缃紝鍒╃敤鍓嶇紑鍜岀粺璁¤繖涓暟鍓嶉潰鏈夊灏戜釜涓嶅皬浜庡畠 \(-k\) 鐨勬暟锛岀劧鍚庣敤缁勫悎鏁拌绠楀嵆鍙€�

[CF1466F] Euclid's nightmare - 骞舵煡闆�

Description

缁欏畾 n 涓簩杩涘埗 m 浣嶄覆 ai锛屾眰浠栦滑鐨勭嚎鎬у熀鐨勫ぇ灏忥紝淇濊瘉姣忎釜鍏冪礌鍙湁涓嶈秴杩囦袱涓� 1 鍏跺畠閮芥槸 0锛堜互鍙婃寜鐓ч『搴忓皢鍏冪礌閫夊叆绾挎€у熀寰楀埌鐨勫簭鍒楋級

Solution

濡傛灉鎵€鏈変覆閮芥伆濂芥湁 2 涓� 1锛岄偅涔堟垜浠彲浠ュ姣忎釜浣嶅缓绔嬩竴涓粨鐐癸紝浠讳綍涓€涓覆灏辫浆鍖栨垚浜嗕竴鏉¤竟锛岀幆鎰忓懗鐫€绾挎€х浉鍏筹紝鍥犳姹傝繖涓浘鐨勭敓鎴愭爲鍗冲彲
鑰冭檻閭d簺鏈変竴涓� 1 鐨勪覆鎬庝箞鍔烇紝鎴戜滑娣诲姞涓€涓櫄鐐癸紝鎵€鏈夊彧鏈変竴涓� 1 鐨勪覆鍚戣櫄鐐硅繛杈瑰嵆鍙紝杩欐牱濡傛灉鍑虹幇浜� 01,11,10 鐨勬儏鍐碉紝灏变細鎴愮幆

[CF1467C] Three Bags - 鎬濈淮

Description

缁欏畾 3 涓泦鍚堬紝姣忎釜闆嗗悎閲屾湁鑻ュ共涓暟锛屾瘡娆″彲浠ヤ粠涓€涓泦鍚堥€夋嫨涓€涓暟 a锛屼粠鍙︿竴涓泦鍚堥€夋嫨涓€涓暟 b锛屼护 a=a-b锛屽苟涓斿垹闄� b銆傛搷浣滃埌鍙墿涓嬩竴涓暟涓烘銆傛眰鍓╀笅鐨勮繖涓暟鐨勬渶澶у€笺€�

Solution

棣栧厛寰堝鏄撴兂璞″嚭涓€涓爲褰㈢粨鏋勶紝濂囨暟灞備负姝o紝鍋舵暟灞備负璐�
鏈変竴绉嶄笉閿欑殑鎯呭喌鏄紝绗竴灞傚~涓€涓暟锛岀浜屽眰鏄袱涓潵鑷笉鍚岄泦鍚堢殑鏁帮紝杩欐牱绗笁灞傚氨鍙互濉墿涓嬬殑鎵€鏈夋暟
鑰冭檻渚嬪锛屽鏋滄垜浠彧甯屾湜鍑忓幓涓€涓泦鍚堜腑鐨勬暟锛岃繖鏍锋槸鍙互鍋氬埌鐨勶紝鍗冲湪绗簩灞傚~涓婅繖涓泦鍚堢殑鎵€鏈夋暟锛堝鏋滀笉濉墍鏈夛紝閭d箞浼氭帀鍒扮鍥涘眰锛岀粨鏋滄槸涓€鏍风殑锛屾€讳箣涓嶅彲鑳藉~鍦ㄥ鏁板眰涓級锛岀涓夊眰濉墿涓嬬殑鎵€鏈夋暟锛岃繖鏍疯础鐚负璐熺殑鎭板ソ鏄煇涓€涓泦鍚堝唴鐨勬墍鏈夋暟

[CF1467D] Sum of Paths - dp

Description

缁欏畾涓€涓暱搴︿负 \(n\) 涓簭鍒楋紝绗� i 涓綅缃潈鍊间负 \(a_i\)锛屾湁 \(k\) 娆$Щ鍔紝姣忔绉诲姩寰€宸︽垨鑰呭線鍙崇Щ鍔ㄤ竴鏍硷紝涓嶈兘鍑鸿竟鐣岋紝瀵逛簬杩欐牱涓€涓繛缁Щ鍔� k 娆″悗寰楀埌鐨勯暱搴︿负 k+1 鐨勪綅缃簭鍒楋紝鎴戜滑绉颁负濂藉簭鍒楋紝瀹冪殑鏉冨€兼槸缁忚繃鐨勬瘡涓€涓綅缃殑 \(a_i\) 鐨勫拰锛屽娆$粡杩囬渶瑕佺疮鍔犮€傜幇鍦ㄥ鎵€鏈夎捣濮嬩綅缃紝姹傛墍鏈夊ソ搴忓垪鐨勬潈鍊煎拰锛屾湁 q 娆″搴忓垪鏉冨€肩殑淇敼銆傜瓟妗堝 \(10^9+7\) 鍙栨ā銆�

Solution

璁� \(f[i][j]\) 涓哄埌杈剧偣 j 璧颁簡 i 姝ョ殑鏂规鏁帮紝涔熸槸浠� j 鍑哄彂璧颁簡 i 姝ョ殑鍚堟硶搴忓垪鏁�
杞Щ涓� \(f[i][j]=f[i-1][j-1]+f[i-1][j+1]\)
閭d箞绗� i 姝ョ粡杩� j 鐨勬柟妗堟暟灏辨槸 \(f[i][j] \cdot f[k-i][j]\)
璁� \(g[j]=\sum_i f[i][j]\)锛屽嵆姣忎釜鐐硅缁忚繃鐨勬€绘鏁帮紝杩欎釜鍊兼槸涓嶄細鍙樼殑
鐒跺悗鍔ㄦ€佺淮鎶や竴涓瓟妗堝嵆鍙�

[CF1470A] Strange Birthday Party - 甯︽挙閿€璐績

Description

浣犳湁 \(n\) 涓湅鍙嬶紝\(m\) 绉嶇ぜ鐗╋紝绗� \(i\) 绉嶇ぜ鐗╃殑鑺辫垂涓� \(c_i\)锛屽浜庢瘡涓汉锛岄兘瑕侀€� \([1,k_i]\) 涓殑涓€涓ぜ鐗╃粰浠栵紝鎴栬€呯粰浠� \(c_k_i\) 鐨勯挶锛屾瘡绉嶇ぜ鐗╁彧鑳借閫佷竴娆★紝闂渶灏忚姳璐广€�

Solution

涓€涓緢璐圭敤娴佺殑妯″瀷锛屾墍浠ュ簲璇ユ槸甯︽挙閿€璐績鍋氫簡
鍩烘湰璐績锛氭墍鏈� \(k_i\) 鎺掑簭锛屽皢鎵€鏈夊皬浜庡綋鍓� \(k_i\) 鐨勭ぜ鐗╂斁鍦ㄤ竴涓爢涓紝濡傛灉褰撳墠鐨勬渶灏忓厓绱犳瘮 \(c_k_i\) 澶э紝灏辩粰閽憋紝鍚﹀垯鎶婄ぜ鐗╃粰浠�
鎾ら攢锛氬亣璁惧皢 \(c_i\) 鐨勭ぜ鐗╅€佺粰 a锛屽鏋滈€佺粰 b锛岄偅涔堝氨瑕佺粰 \(c_k_a\) 鐨勯挶缁� a锛岀浉褰撲簬缁� b 閫佷簡涓€涓环鍊间负 \(c_k_a\) 鐨勭ぜ鐗╋紝鍥犳瀵规瘡涓汉 \(i\)锛岀粰浠栧彂浜嗙ぜ鐗╁悗锛岄兘鍦ㄥ爢涓姞鍏ヤ竴涓� \(c_k_i\) 鐨勫厓绱犺〃绀烘挙閿€瀵硅繖涓汉鐨勬搷浣滃苟涓旂粰浠栭挶

[CF1470B] Strange Definition - 鏁拌

Description

绉颁袱涓暣鏁� \(x,y\) 鐩稿叧褰撲笖浠呭綋鍏� LCM/GCD 涓哄畬鍏ㄥ钩鏂规暟銆傜粰瀹氫竴涓暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾瘡涓€绉掓墍鏈� \(a_i\) 閮戒細鍙樻垚搴忓垪涓墍鏈変笌瀹冪浉鍏崇殑鏁帮紙鍖呮嫭鑷繁锛夌殑涔樼Н銆備护 \(d_i\) 琛ㄧず搴忓垪涓笌 \(a_i\) 鐩稿叧鐨勬暟鐨勪釜鏁帮紝鏈� \(q\) 娆¤闂紝姣忔缁欏畾涓€涓� \(w\)锛岄棶 \(w\) 绉掑悗鏈€澶х殑 \(d_i\) 鏄灏戙€�

Solution

濡傛灉 \(x,y\) 鐩稿叧锛岄偅涔堣川鍥犲瓙鍒嗚В鍑烘潵姣忎釜鍥犲瓙鐨勬寚鏁扮殑濂囧伓鎬х浉鍚�
鍥犳璐ㄥ洜鏁板垎瑙d互鍚庢瀯鎴愮殑鎸囨暟搴忓垪妯� 2 鍙互鐪嬪仛涓€涓� 01 涓诧紝鎵€鏈� 01 涓茬浉绛夌殑鏋勬垚涓€涓泦鍚堬紝浠ヤ笅绉板叾涓轰竴涓泦鍚堢殑鐗瑰緛涓�
濡傛灉涓€涓泦鍚堢殑鐗瑰緛涓蹭腑鍏ㄦ槸 0锛岄偅涔堣繖涓泦鍚堟槸涓嶄細鍙樼殑
濡傛灉涓€涓泦鍚堢殑澶у皬涓哄鏁帮紝閭d箞杩欎釜闆嗗悎鏄笉浼氬彉鐨�
鍥犳锛屽彧鏈夌涓€绉掓椂锛岄偅浜涚壒寰佷覆绉嶅惈鏈� 1 涓斿ぇ灏忎负鍋舵暟鐨勯泦鍚堬紝浼氬皢瀹冧滑鐨勭壒寰佷覆鍙樹负 0锛屽悗闈㈠皢姘歌繙淇濇寔涓嬪幓

Description

褰撲竴涓汉 A 鐨勮韩楂樻瘮鍙﹀涓€涓汉 B 鐨勮韩楂樼煯锛屼笖瀹藉害姣斾粬灏忔椂锛孉 鍙互绔欏湪 B 鐨勫墠闈紝鎴栬€呭綋 A 韬珮姣� B 瀹藉害灏忔椂锛屼笖瀹藉害姣� B 韬珮灏忔椂锛孉 鍙互韬哄湪 B 鍓嶉潰銆傛兂鐭ラ亾姣忎釜浜烘槸鍚︽湁瀵瑰簲鐨勪汉鍙互绔欐垨韬哄湪浠栫殑鍓嶉潰锛屽鏋滄湁锛屽垯杈撳嚭閭d釜浜虹殑缂栧彿锛岃嫢鏈夊涓紝鍒欒緭鍑轰换鎰忎竴涓紝濡傛灉娌℃湁鍒欒緭鍑� -1銆�

Solution

灏嗘墍鏈夌殑鏁板璋冩暣鎴� \(w \le h\) 涓嶄細褰卞搷缁撴灉锛岃繖鏍峰氨鍙樻垚浜嗕竴涓畝鍗曠殑浜岀淮鍋忓簭锛屾壂鎻忎竴閬嶅嵆鍙€�
锛堝お涔呮病鍋氶浜嗗崱鍗婂ぉ銆�

[CF1472G] Moving to the Capital - 鏈€鐭矾

Description

鏈� n 涓粨鐐圭殑鏈夊悜鍥撅紝杈归暱涓� 1锛屽凡鐭� di 琛ㄧず 1 鍒� i 鐨勬渶鐭矾闀匡紝鐜板湪鍦ㄧ s 涓粨鐐逛笂锛屾湁涓ょ鎿嶄綔锛氭部鐫€鏌愭潯杈癸紝璧板埌涓€涓� d 鏇村ぇ鐨勭偣锛涙部鐫€鏌愭潯杈癸紝璧板埌涓€涓� d 灏忎簬绛変簬褰撳墠鐨勭偣锛堝彧鑳借蛋涓€娆★級銆傛眰姣忎釜鐐瑰嚭鍙戯紝鑳借蛋鍒扮殑鐐逛腑锛宒i 鏈€灏忕殑鏄灏戙€�

Solution

涓€涓樉鐒剁殑鎬ц川鏄紝鐗规畩鎿嶄綔涓€瀹氫細鐣欏湪鏈€鍚庣敤
鐢变簬閭g鍙互浣跨敤澶氭鐨勮浆绉昏竟鏋勬垚鐨勪竴瀹氭槸涓€涓� DAG锛屾墍浠ュ彲浠ヨ€冭檻鐢ㄨ蹇嗗寲鎼滅储鏉ュ鐞嗘渶鍚庣殑闂
鎴戜滑鍏堟眰鍑烘瘡涓偣鑳界洿鎺ュ埌杈剧殑 d 鏈€灏忕殑鐐圭殑 d锛岀劧鍚庝互杩欎釜涓烘潈鍊硷紝璺戜竴娆℃悳绱㈠嵆鍙�

[CF1473D] Program - 绾挎鏍�

Description

鏈変竴涓彉閲� x 鍒濆涓� 0锛屾垜浠寜瀛楃涓查『搴忚繘琛屸€�+1鈥濇垨鈥�-1鈥濇搷浣溿€傛湁 m 涓闂紝姣忔璇㈤棶鎴戜滑鍒犲幓瀛楃涓茬殑 l 鍒� r 鐨勭鍙峰悗锛寈 鍦ㄥ畬鎴愭墍鏈夋搷浣滀腑鍑虹幇鐨勪笉鍚屾暟鍊肩殑鎬绘暟銆�

Solution

绾挎鏍戞瘡涓粨鐐圭淮鎶� sum 琛ㄧず杩欎竴娈电殑鎿嶄綔鍜岋紝maxsum 琛ㄧず鎵ц杩欎竴娈垫搷浣滆繃绋嬩腑鍒拌揪鐨勬渶澶у€硷紝minsum 琛ㄧず鎵ц杩欎竴娈垫搷浣滆繃绋嬩腑鍒拌揪鐨勬渶灏忓€笺€�

[CF1473E] Minimum Path - 鍒嗗眰鍥炬渶鐭矾

Description

缁欏畾涓€涓棤鍚戝浘锛屽畾涔夎矾寰勭殑鏉冨€间负璺緞涓婃墍鏈夎竟鏉冪殑鍜屽噺鍘昏竟鏉冪殑鏋佸樊銆傛眰 1 鍒板叾瀹冩墍鏈夌偣鐨勬渶鐭矾銆�

Solution

寰堝鐨勮浆鍖栵細涓€鏉¤竟鏉冨€煎彉鎴� 0锛屼竴鏉¤竟鏉冨€煎姞鍊嶏紝姹傛渶鐭矾
杞寲鍚庣殑鏉′欢鍔犱笂鏈€鐭殑鏉′欢锛屽氨寰楀埌浜嗚浆鍖栧墠鐨勬潯浠�
浜庢槸鍒嗗眰鍥炬渶鐭矾鍗冲彲

[CF1475F] Unusual Matrix

Description

瀵� \(n \times n\) 鐨� 01 鐭╅樀锛屾瘡娆℃搷浣滃彲浠ュ弽杞竴琛屾垨鑰呬竴鍒椼€傜粰瀹� \(a,b\) 涓や釜鐭╅樀锛岄棶 \(a\) 鏄惁鍙互缁忚繃鏈夐檺娆℃搷浣滃彉涓� \(b\)銆�

Solution

鍙鎴戜滑纭畾浜嗘煇涓€琛岋紙鍒楋級鐨勬搷浣滄儏鍐碉紝鎵€鏈夌殑鎿嶄綔鎯呭喌閮戒細琚‘瀹氾紝鍥犳鍙渶鏋氫妇绗竴琛屾槸鍚︽搷浣滐紝鍚庨潰鐨勯€掓帹璁$畻鍗冲彲锛屽鏋滅畻涓嬫潵杩樻湁鍓╀綑锛岄偅涔堝氨鏃犺В銆�

[CF1475G] Strange Beauty - 鏁拌

Description

鏈� \(n\) 涓暟锛屼粠涓寫閫変竴涓瓙闆嗭紝浣垮緱闆嗗悎涓换鎰忎袱涓笉鍚岀殑鏁� \(x,y\)锛屾湁 \(x|y\) 鎴� \(y|x\)銆�

Solution

瀛愰泦涓渶灏忕殑鏁板繀椤昏鑳芥暣闄ゆ墍鏈夌殑鏁帮紝鎵€鏈夌殑鏁板繀椤昏鑳借鏈€澶х殑鏁版暣闄�
鎶婃暣闄ゅ叧绯荤敾鎴愭湁鍚戣竟锛屽垯鏄竴涓湁鍚戞棤鐜畬鍏ㄥ浘锛屾垜浠彇鍏朵腑鐨勬渶闀胯矾鑰冭檻
鍋囧畾 \(a[]\) 鍗囧簭
璁� \(f[x]\) 涓烘渶澶ф暟閫変负 \(x\) 鏃剁殑鏂规鏁帮紝閭d箞 \(f[y]=\max_{x \in S \and x | y} f[x]\)
鏆村姏鏋氫妇鍥犲瓙杞Щ鍗冲彲

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勪富涓� \(S\)锛屾湁 \(m \le 100\) 涓闂紝姣忔缁欏畾涓€涓闂覆 \(p_i\)锛岄暱搴︿笉瓒呰繃 \(10^3\)銆傝緭鍑烘湁澶氬皯涓闂覆锛屾弧瓒冲瓨鍦� \(S\) 鐨勪袱涓笉鐩镐氦鐨勫瓙涓叉嫾璧锋潵涓� \(p_i\) 鐩哥瓑銆�

Solution

涓€涓闂覆鍙锛屽綋涓斾粎褰撳瓨鍦� \(k\) 浣垮緱 \(p[1..k]\) 鍦ㄤ富涓蹭腑鐨勬渶灏忕粨鏉熶綅缃� \(pre[k]\) 灏忎簬 \(p[k+1,l]\) 鍦ㄤ富涓蹭腑鐨勬渶澶у紑濮嬩綅缃� \(suf[k+1]\)锛屼笅闈㈣€冭檻濡備綍姹傝В \(pre[],suf[]\)
瀵� \(S\) 鐨勬涓插弽涓插垎鍒缓绔嬪悗缂€鑷姩鏈猴紝棰勫鐞嗗嚭姝d覆鑷姩鏈轰腑姣忎釜缁撶偣瀵瑰簲鐨� \(endpos\) 闆嗗悎鐨勬渶灏忓€硷紝鍙嶄覆鑷姩鏈轰腑姣忎釜缁撶偣瀵瑰簲鐨� \(endpos\) 闆嗗悎鐨勬渶灏忓€�
鍏蜂綋鍦帮紝鍦ㄥ閲忔瀯閫犳椂璁板綍涓€涓� \(firstpos[p]\) 璧峰垵灏辩瓑浜� \(p\) 鐨勭粨灏句綅缃紙鏂板缓缁撶偣鐨勬椂鍊欒缃竴涓嬶紝褰撶粨鐐硅寤虹珛鏃舵槸鍞竴鐨勶級锛屽湪鏋勯€犲畬姣曞悗鎸夌収鎷撴墤搴忔部鐫€鍚庣紑鏍戜笂浼犲彇 \(\min\)锛�\(lastpos\) 鍚岀悊
鐜板湪锛屽皢 \(p\) 鐨勬涓叉墧鍒� \(S\) 鐨勬涓茶嚜鍔ㄦ満涓婅窇锛屽彧璧拌浆绉昏竟涓嶈蛋鍚庣紑閾炬帴锛屽亣璁捐窇鍒颁簡 \(p[1..i]\) 閭d箞鎴戜滑灏卞緱鍒颁簡 \(pre[i]\)锛屽悓鐞嗗緱鍒� \(suf[i]\)

Description

缁欏畾鏁板垪 \(a[]\)锛屽姣忎釜 \(a[i]\) 鎵惧埌浠绘剰涓€涓� \(a[j]\) 浣垮緱 \(a[i] \& a[j]=0\)锛屾棤瑙e垯 \(-1\)銆�

Solution

鑰冭檻灏嗘暟瑁呭叆妗� \(b[]\) 涓苟璁$畻楂樼淮鍓嶇紑鍜岋紝閭d箞姹� \(a[i]\) 瀵瑰簲鐨� \(a[j]\) 鍙渶瑕佹煡璇� \(b[j \oplus mask]\) 鍗冲彲锛屽叾涓� \(mask=2^{22}-1\)

Description

缁欏畾涓や釜鍑稿杈瑰舰 \(A,B\)锛岃闂� \(B\) 鏄惁涓ユ牸鍦� \(A\) 鍐呫€�

Solution

瀵� \(A,B\) 鐨勬墍鏈夌偣鏋勯€犻潪涓ユ牸鍑稿寘锛屽鏋滆繖涓嚫鍖呯瓑浜� \(B\)锛屽垯绗﹀悎鏉′欢銆�
锛堟柟娉曠湡鐨勬尯濡欑殑锛�

Description

鏈変竴棰� \(n\) 涓妭鐐圭殑鏍戯紝\(k\) 娆℃梾琛岋紝闂瘡涓€鏉¤竟琚蛋杩囩殑娆℃暟銆�

Solution

妯℃澘棰橈紝澶嶄範涓€涓� LCA 涓庢爲涓婂樊鍒嗙殑鍩烘湰鐢ㄦ硶銆�
棣栧厛锛屽浜庢瘡鏉¤竟琚蛋杩囩殑娆℃暟锛屾垜浠妸瀹冭浆鍖栦负娣卞害杈冨ぇ鐨勯偅涓偣琚粡杩囩殑娆℃暟銆�
瀵逛簬姣忎竴娆℃梾琛� \(begin,end\)锛岃绠� \(lca=LCA(begin,end)\)锛屽垯姣忔鎿嶄綔杞寲涓哄 \(lca \sim begin\) 淇敼涓€娆★紝瀵� \(lca \sim end\) 淇敼涓€娆★紝瀵� \(lca\) 鑷韩鍙嶅悜淇敼涓ゆ銆�
LCA 鐨勬眰娉曞緢澶氾紝杩欓噷澶嶄範涓€涓� ST 琛ㄦ眰 LCA銆�
棣栧厛鎴戜滑闇€瑕侀澶勭悊鍑烘瘡涓偣鍦ㄥ畠鐨� Euler 閬嶅巻搴忎笂绗竴娆″嚭鐜扮殑浣嶇疆 \(first_occur[p]\) 鍜屾渶鍚庝竴娆″嚭鐜扮殑浣嶇疆 \(last_occur[p]\)锛岄偅涔堝浜庝竴 \((p,q)\)锛屽叾 LCA 鍗充负 \(last_occur[p] \sim first_occfur[q]\) 杩欎竴鐨� Euler 閬嶅巻搴忓垪涓嚭鐜拌繃鐨勬繁搴︽渶灏忕殑鐐广€�
鎵€璋� Euler 閬嶅巻搴忓垪鏄繖鏍蜂竴绉� DFS 搴忓垪锛屾瘡娆℃垜浠闂竴涓偣锛堝寘鎷洖婧埌鍒板畠锛夐兘灏嗗叾鎵旇繘闃熷垪鐨勫熬閮紝鍥犳杩欐牱鎴戜滑寰楀埌鐨勫簭鍒楅暱搴︽槸鎬荤殑搴︽暟 \(+1\)銆�
ST 琛ㄥ氨琚敤鏉ユ敮鎸� Euler 閬嶅巻搴忓垪鐨� RMQ 闂锛岀浉褰撲簬鎴戜滑鏋勯€犱簡涓€绉� Sequence锛屽叾鏀寔瀵瑰叾浠绘剰涓€娈典互瀵瑰簲鍏抽敭瀛楃殑 RMQ锛屽叾 key 鍗充负鏍戜笂鐨勬繁搴� depth锛屾樉鐒舵垜浠渶瑕佺淮鎶ょ殑鏄繁搴︽渶灏忕殑鐐广€�
鍦� Sequence 鐨勫疄鐜颁腑锛屾垜浠澶勭悊鍑� \(f[i][j]\) 琛ㄧず鍦� \([i,i+2^j)\) 杩欎釜鍖洪棿涓殑 \(key\) 鏈€灏忕殑鐐规槸鍝竴涓€�
鏁翠釜瀹炵幇鐨勭粨鏋勬槸杩欐牱锛孲equence 鎻愪緵涓€涓敮鎸佸尯闂存渶灏忓叧閿瓧浣嶇疆璇㈤棶鐨勬搷浣滄帴鍙o紝Tree 绫荤敤浜庢爲鐨勫瓨鍌紝鑷繁杩涜 DFS锛屽苟鏋勫缓涓€涓� Euler 閬嶅巻搴忓垪浠� Sequence 褰㈠紡瀛樺偍锛岄澶勭悊鐨勬椂鍊欒皟鐢� Sequence 绫荤殑棰勫鐞嗭紝鍦ㄩ亣鍒� LCA 璇㈤棶鐨勬椂鍊欏幓璋冪敤 Sequence 鎻愪緵鐨� RMQ 鎺ュ彛銆傚绛旀鐨勮绠楁斁鍦ㄤ富绋嬪簭涓繘琛屻€�

[CF1C] Ancient Berland Circus

Description

涓€涓鍒� (绛夎) 澶氳竟褰紝寰楀埌浜嗚繖涓夋牴鏌卞瓙鐨勫潗鏍囷紝杈撳嚭鍙や唬绔炴妧鍦虹殑鍙兘鐨勬渶灏忓尯鍩熼潰绉€�

Solution

濮嬬粓鍥寸粫鐫€璇ュ杈瑰舰鐨勫鎺ュ渾鏉ュ仛锛屽亣璁句笁涓《鐐� A,B,C 瀵瑰簲鐨勫渾鍛ㄨ涓� A,B,C锛屽搴旂殑瀵硅竟闀垮害涓� a,b,c銆�
鐢ㄦ捣浼﹀叕寮忔眰鍑轰笁瑙掑舰闈㈢Н S锛岀敤姝e鸡瀹氱悊姹傚嚭澶栨帴鍦嗗崐寰� R锛岀敤浣欏鸡瀹氱悊姹傚嚭鍚勮竟瀵瑰簲鐨勫渾鍛ㄨ oa,ob,oc锛堝叾瀹炲彧闇€瑕佹眰鍏朵腑涓や釜锛夛紝鐒跺悗姹傛渶澶у叕绾︽暟寰楀埌姝e杈瑰舰姣忚竟瀵瑰簲鐨勫渾蹇冭 theta锛岃繘鑰屽緱鍒版暣涓浘褰㈢殑闈㈢Н ans銆�
绮惧害寰堢巹瀛︹€︹€�

[CF208E] Blood Cousins - dsu on tree, LCA

Description

缁欎綘涓€鐗囨.鏋楋紝姣忔璇㈤棶涓€涓偣涓庡灏戜釜鐐规嫢鏈夊叡鍚岀殑 K 绾х鍏堛€�

Solution

dsu on tree
棣栧厛锛屾眰鍑轰竴涓偣鐨� k 绾х鍏堬紝骞朵笖鎶婅闂寕鍦ㄤ粬韬笂锛岄棶鐨勫氨鏄繖涓偣 p 瀛愭爲鍐呮湁澶氬皯涓繁搴︿负 d 鐨勭偣
鍦� dfs 杩囩▼涓紝瀵规瘡涓偣锛岄€掑綊澶勭悊鍚勪釜瀛╁瓙锛屽悓鏃朵繚鐣欏叾閲嶅瀛愮殑璐$尞锛屽啀鍔犱笂杞诲瀛愮殑璐$尞锛屽緱鍒拌嚜韬殑璐$尞
鎬荤粨涓€涓嬫垜浠渶瑕佹敮鎸佸摢浜涗簨鎯咃細姹� k 绾х鍏堬紙鍊嶅澶勭悊锛夛紝灏嗚闂寕鍦ㄧ鍏堜笂锛屾爲涓婂惎鍙戝紡鍚堝苟澶勭悊鎵€鏈夎闂�
鎵惧埌3涓笉瓒呰繃n鐨勬鏁存暟锛堝彲浠ョ浉鍚岋級锛屼娇寰楀畠浠殑lcm锛堟渶灏忓叕鍊嶆暟锛夋渶澶с€�

Solution

鍙互鍋氬緱寰堜紭闆呭惂锛屼絾鎴戝枩娆紙鍙細锛夋毚鍔涗竴鐐�
鏍规嵁璐ㄦ暟瀵嗗害鍒嗗竷鎬ц川锛屾渶鍚庢墍鍙栫殑杩欎笁涓暟涓€瀹氫笉浼氭瘮 \(n\) 灏忓お澶氾紙瀹炲湪涓嶈灏卞彇涓変釜璐ㄦ暟鍛€锛夛紝鎵€浠ユ垜浠挦瀹氫竴涓晫锛岀劧鍚庢毚鍔涙灇涓惧彇鏈€浼樺嵆鍙�
缁欏嚭 N 涓鐗╋紝姣忎釜妞嶇墿閮藉睘浜庝竴涓搧绉嶏紝鍏辫 m 涓搧绉嶏紝鍒嗚惤鍦ㄤ笉鍚岀殑浣嶇疆涓婏紙鍦ㄤ竴涓暟杞翠笂锛岃€屼笖鏁拌酱鏄棤闄愰暱搴︾殑锛夛紝淇濊瘉璇诲叆鐨勪綅缃槸鎸夌収鍗囧簭璇诲叆鐨勩€�
鐜板湪鎴戜滑鍙互杩涜涓€涓搷浣滐細鍙栦换鎰忎竴涓綅缃笂鐨勬鐗╋紝绉诲姩鍒颁换鎰忎竴涓病鏈夋鐗╃殑浣嶅瓙涓婂幓銆�
闂垜浠渶灏戣繘琛屽灏戞鎿嶄綔锛岃兘澶熶娇寰椾粠宸﹀埌鍙筹紝鏄寜鐓у搧绉嶅崌搴忔帓鍒楃殑锛�1 ~ m锛夛紙鍗曡皟涓嶉檷锛夛紝鑰屼笖姣忕妞嶇墿閮界浉閭汇€�

Solution

姹備竴涓嬫渶闀块潪涓ユ牸涓婂崌瀛愬簭鍒楀嵆鍙�

[CF276B]

Description

缁欏畾瀛楃涓� \(S\) 锛屼袱浜鸿疆娴侊紝姣忔浠庡瓧绗︿覆涓换鎰忓彇鍑轰竴涓瓧绗﹀苟浠庡師涓蹭腑鍒犲幓銆傚鏋滄煇浜烘煇娆℃搷浣滃墠锛屼覆绉嶅墿浣欑殑瀛楃闆嗗悎缁忚繃鎺掑垪鍙互寰楀埌鍥炴枃涓诧紝閭d箞杩欎釜浜哄氨鑳滃埄銆傛眰鑳滆礋銆�

Solution

鏄剧劧杩欎釜瀛楃涓插彲浠ョ湅鎴愪竴涓瓧姣嶅閲嶉泦鍚堛€傞偅涔堟垜浠粺璁″嚭姣忕瀛楃鍑虹幇鐨勬鏁般€傝€冭檻鏈夊灏戠瀛楁瘝鍑虹幇娆℃暟涓哄鏁版锛岃涓� \(m\) 銆傚鏋� \(m \le 1\) 锛岄偅涔堝厛鎵嬭儨鍒┿€�
\(k=2\) 鏃讹紝鍏堟墜鍙互灏嗗皢涓€涓鏁版杞寲涓哄伓鏁版锛岄偅涔堝悗鎵嬭儨鍒╋紱鍏堟墜涔熷彲浠ュ皢涓€涓伓鏁版杞寲涓哄鏁版锛屽亣濡傚彲浠ヨ繘琛岃繖鏍风殑鎿嶄綔锛岄偅涔堝悗鎵嬪皢杩欎釜鏂拌浆鍖栫殑濂囨暟娆¤浆鍖栦负鍋舵暟娆★紝灞€闈㈠洖褰掑埌涓庡紑灞€绛変环鐨勭姸鎬侊紝鐩村埌鏌愪釜鏃跺埢鍏堟墜涓嶈兘鍐嶅埗閫犲嚭鏂扮殑濂囨暟娆★紝姝ゆ椂蹇呯劧鍚庢墜鑳溿€�
\(k=3\) 鏃讹紝鍏堟墜鍏堝皢涓€涓鏁版杞负鍋舵暟娆★紝杩欐牱灏辫浆鍖栧埌浜� \(k=2\) 鐨勭姸鎬侊紝鍏堝悗鎵嬬姸鎬佸亸绉伙紝浜庢槸鍏堟墜鑳滃埄銆�
\(k=4\) 鏃讹紝鍏堟墜鍙互鍏堝皢涓€涓鏁版杞寲涓哄伓鏁版锛岄偅涔堣繖鏃跺€欒浆鍖栦负 \(k=3\) 鏁呭悗鎵嬭儨鍒╋紱鍏堟墜涔熷彲浠ュ厛灏嗕竴涓鏁版杞寲涓哄伓鏁版锛岀劧鍚庝豢鐓� \(k=2\) 鎯呭喌杩涜鍚庣画锛屽埌鏌愪釜鏃跺埢鍏堟墜涓嶈兘鍐嶅埗閫犲嚭鏂扮殑濂囨暟娆★紝姝ゆ椂蹇呯劧鍚庢墜鑳溿€�
鍚岀悊鍙緱鍚庣画鎯呭喌銆�

Description

鏈変竴鍙浇閲嶄负 \(k \le 5\times10^3\) 鐨勮埞鍦ㄤ袱宀镐箣闂村線杩旓紝鏈� \(n \le 50\) 涓汉瑕佽繃娌筹紝姣忎釜浜虹殑浣撻噸鍙兘浣� \(50\) 鎴� \(100\)锛岄棶鏈€灏戠殑鏉ュ洖娆℃暟浠ュ強瀵瑰簲鐨勬柟妗堟暟銆�

Solution

璁� \(f[i][j][0/1]\) 琛ㄧず瀵瑰哺宸茬粡鏈� \(i\) 涓� \(50\) 鍜� \(j\) 涓� \(100\) 鏃舵渶灏戠殑鑸娆℃暟锛�\(g[i][j][0/1]\) 涓哄搴旂殑鏂规鏁�
鏋氫妇鏈璧扮殑 \(k,l\) 涓暟锛屽埄鐢ㄧ粍鍚堟暟杩涜杞Щ鍗冲彲
鏈€澶氳浆绉� \(2n\) 杞竴瀹氳兘瀹屼簨锛屽鏉傚害 \(O(n^5)\)
缁欏畾鐢遍潪璐熸暣鏁扮粍鎴愮殑n脳n 鐨勬鏂瑰舰鐭╅樀锛屼綘闇€瑕佸鎵句竴鏉¤矾寰勶細
浠ュ乏涓婅涓鸿捣鐐�
姣忔鍙兘鍚戝彸鎴栧悜涓嬭蛋
浠ュ彸涓嬭涓虹粓鐐� 骞朵笖锛屽鏋滄垜浠妸娌胯矾閬囧埌鐨勬暟杩涜鐩镐箻锛岀Н搴斿綋鏄渶灏忊€渞ound鈥濓紝鎹㈠彞璇濊锛屽簲褰撲互鏈€灏忔暟鐩殑0鐨勭粨灏�.

Solution

鑰冭檻鍒版渶缁堢瓟妗堝彧鍙栧喅浜� \(2,5\) 鍥犲瓙鏁颁腑鏈€灏忕殑閭d竴涓紝鎵€浠ュ彲浠ユ媶寮€鑰冭檻锛岀劧鍚庡氨鏄竴涓湸绱犵殑鏈€灏忓拰璺緞dp浜�
娉ㄦ剰濡傛灉鍘熺煩闃典腑鍖呭惈闆讹紝绛旀瑕佸拰 \(1\) 鍙� min 涓€涓�

Description

缁欏畾闀垮害涓� \(n\) 鐨勬暟鍒楋紝姣忎釜鏁伴兘鍦� \([1,n]\) 闂达紝鍥炵瓟 \(m\) 涓闂紝姣忔缁欏畾涓€涓尯闂� \([l,r]\)锛岄棶鍏朵腑鏈夊灏戝鏁伴棿瀛樺湪鍊嶆暟鍏崇郴銆�

Solution

鑰冭檻绂荤嚎澶勭悊锛屽皢鎵€鏈夎闂尯闂存寜鍙崇鐐规帓搴�
鐢ㄦ爲鐘舵暟缁勶紙鍗曠偣淇敼锛屽尯闂存眰鍜岋級鍔ㄦ€佺淮鎶ゆ瘡涓綅缃殑璐$尞锛屽浜庝竴瀵规暟锛屾垜浠缁堝皢璐$尞璁板綍鍦ㄤ綅缃潬鍓嶇殑閭d釜鏁拌韩涓婏紝璁颁负 \(f[i]\)
浠庡乏鍒板彸鎵弿鏁翠釜搴忓垪锛屽浜庡綋鍓嶄綅缃� \(i\) 涓婄殑鏁� \(p_i\)锛屾垜浠€冭檻瀹冪殑鎵€鏈夊€嶆暟 \(p_j\)
鑻� \(j<i\)锛屽垯 \(f[ j ]+=1\)
鑻� \(j>i\)锛屽垯闇€瑕佸欢杩熷鐞嗭紝鎴戜滑瀵规瘡涓綅缃淮鎶や竴涓棤搴忛泦鍚堬紙瀹炵幇鐢� vector锛夛紝閬囧埌杩欐牱鐨勬儏鍐碉紝灏卞皢 \(i\) 鍔犲叆 \(j\) 鐨勯泦鍚堜腑锛岃€屾瘡涓偣琚壂鎻忔椂锛屽垯浼氬鐞嗗畠闆嗗悎涓殑鎵€鏈� \(k\)锛屽皢 \(f[k]+=1\)

Description

鐮嶄紣楂樺害涓� \(a_1,a_2,...,a_n\) 鐨� \(n\) 妫垫爲銆傛瘡娆′粬浠缂栧彿涓� \(i\) 鐨勬爲浣跨敤鐢甸敮锛屼細浣跨 \(i\) 涓爲鐨勯珮搴﹂檷浣� \(1\)銆傛瘡娆′娇鐢ㄧ數閿悗闇€瑕佺粰瀹冨厖鐢点€傚厖鐢垫垚鏈彇鍐充簬宸插畬鍏ㄩ敮鎺夌殑鏍戞湪鐨勭紪鍙凤紙鏍戞湪楂樺害绛変簬 \(0\) 鏃讹紝鎴戜滑璇存爲鏈ㄨ瀹屽叏閿帀 锛夈€傚鏋滃凡缁忚瀹屽叏閿帀鐨勬爲鐨勬渶澶х紪鍙锋槸 \(i\) 锛屽垯瀵圭數閿厖鐢典竴娆$殑鎴愭湰灏嗘槸 \(b_i\) 銆傜數閿湪寮€濮嬫椂鏄厖濂界數鐨勩€備繚璇佸浜� \(a,b\) 鐨勪弗鏍煎崟璋冩€т互鍙� \(b_n = 0,a_1 = 1\) 銆傝浠ユ渶浣庢垚鏈畬鍏ㄩ敮鎺夋墍鏈夌殑鏍戯紝璁$畻杩欎釜鏈€灏忎唬浠枫€�

Solution

鍙鎴戜滑閿帀绗� \(n\) 妫垫爲閭d箞鍓╀笅鐨勯儴鍒嗕唬浠烽兘鏄� \(0\)锛屽洜姝ゆ垜浠彧闇€瑕佽€冭檻閿帀绗� \(n\) 妫垫爲鐨勬渶灏忎唬浠�
璁� \(f[i]\) 琛ㄧず閿帀绗� \(i\) 妫垫爲鐨勬渶灏忎唬浠凤紝鍒欐湁

\[f[i]=\min_{1\le i <j } (f[i]+a[i]b[j]) \]

瀵逛簬 \(j \le k\)锛岃嫢 \(k\) 浼樹簬 \(j\) 鍒欐湁 \(f[j]+a[i]b[j] > f[k]+a[i]b[k]\)锛屽寲涓烘枩鐜囧舰寮忎负

\[\frac {(-f[k])-(-f[j])} {b[k]-b[j]} < a[i] \]

鑰� \(a[i]\) 鍗曡皟閫掑锛屽洜姝ゆ垜浠敤鍗曡皟闃熷垪缁存姢涓嬪嚫鍖呭嵆鍙�

[CF321A] Ciel and Robot

Description

浣犵幇鍦ㄥ湪涓€涓糠瀹殑 \((0,0)\) 澶勶紝缁欏畾涓€涓寘鍚� \(\texttt{U,D,L,R}\) 鐨勬搷浣滃簭鍒� \(s\)锛屽叾涓� \(\texttt{U}\) 琛ㄧず鍚戜笂璧颁竴鏍硷紝\(\texttt{D}\) 琛ㄧず鍚戜笅璧颁竴鏍硷紝\(\texttt{L}\) 琛ㄧず鍚戝乏璧颁竴鏍硷紝\(\texttt{R}\) 琛ㄧず鍚戝彸璧颁竴鏍笺€備綘灏嗕細鎸夌収 \(s\) 浠庡乏寰€鍙崇殑鎿嶄綔绉诲姩锛屽苟涓旈噸澶嶈嫢骞叉銆傞棶浣犳槸鍚﹁兘澶熷埌杈� \((a,b)\) 澶勩€�

Solution

灏嗕竴杞腑鑳藉埌杈剧殑鎵€鏈変綅缃嵆涓� \(p_1,p_2,...,p_i\)锛岀洰鏍囦綅缃涓� \(target\)锛屾瘡鍋氬畬涓€杞殑鍋忕Щ閲忎负 \(offset\)銆傝嫢瀛樺湪 \(i\)锛屼娇寰� \(offset | (target-p_i)\)锛屽垯杈撳嚭 Yes銆�

[CF321C] Ciel the Commander - 鐐瑰垎娌�

Description

缁欏畾涓€妫垫爲锛岀粰姣忎釜鐐瑰垎閰嶄竴涓瓑绾х敤鑻辨枃瀛楁瘝琛ㄧず锛屾弧瓒充换鎰忎袱涓瓑绾х浉鍚岀殑鐐� x,y 鐨勮矾寰勪笂蹇呯劧鏈変竴涓瓑绾ф洿楂樼殑鐐� z銆�

Solution

鑰冭檻閫夋嫨鐐� p 骞跺垎閰嶇粰瀹冩渶澶х殑鏉冮噸锛屾鏃惰嫢鍒犻櫎鐐� p锛岀暀涓嬬殑鑻ュ共妫靛瓙鏍� t1,t2,...,tm 浠栦滑涔嬮棿鐨勯棶棰樺凡缁忚В鍐充簡锛屽彧闇€瑕佽В鍐充粬浠箣鍐呯殑闂銆�
杩欐瀯鎴愪簡涓€涓ぉ鐒剁殑鍒嗘不缁撴瀯锛屾垜浠笇鏈涗娇寰楀垎娌荤粨鏋勭殑鏍戦珮鏈€灏忥紝閲囩敤鐐瑰垎娌荤殑绛栫暐锛屾瘡娆¢€夋嫨閲嶅績浣滀负鍒嗘不鐐瑰嵆鍙€�
鍥炲繂涓€涓嬫垜浠槸鎬庢牱瀹炵幇鐐瑰垎娌荤殑銆傛瘡涓偣璁剧疆涓€涓闂爣璁帮紝浠h〃杩欎釜鐐规槸鍚﹀凡缁忚浣滀负鍒嗘不鐐瑰鐞嗚繃锛岄偅涔堟垜浠綋鍓嶈澶勭悊鐨勫氨鏄敱鏈爣璁扮偣鏋勬垚鐨勪竴涓繛閫氬潡銆傛垜浠鍏堣绠楀嚭姣忎釜鐐圭殑瀛愭爲澶у皬浠ュ強鏈€澶у瓙鏍戝ぇ灏忥紙閫氳繃涓€娆� DFS + 涓€娆¢亶鍘嗗疄鐜帮級锛屽苟鎵惧埌鍏锋湁鏈€灏忕殑鏈€澶у瓙鏍戝ぇ灏忕殑鐐癸紝鏍囪杩欎釜鐐癸紝缁欏畠鍒嗛厤绾у埆锛岀劧鍚庡鐞嗗叾鎵€鏈夋湭鏍囪杩囩殑閭诲眳鎵€寮曞鐨勮繛閫氬潡銆�

[CF321E] Ciel and Gondolas - 鍐崇瓥鍗曡皟鎬p

Description

鏈� n 涓汉鍦ㄩ槦鍒楅噷锛屾湁 k 鏉¤埞锛岀 i 鏉¤埞鍒版椂锛屽墠鑻ュ共涓汉鍙互涓婅埞銆傛渶鍚庝竴鏉¤埞灏嗚浇璧版墍鏈夌殑浜恒€傜 i 涓汉鍜岀 j 涓汉澶勫湪鍚屼竴鏉¤埞涓婁細浜х敓 uij 鐨勬伯涓у€硷紝姹傚嚭鏈€灏忕殑娌抚鍊煎拰銆�\(n \le 4000, k \le 800\)

Solution

O(nnk) 鐨� dp 鏄樉鐒剁殑锛岀敱浜庢弧瓒冲洓杈瑰舰涓嶇瓑寮忥紝鍏锋湁鍐崇瓥鍗曡皟鎬�

[CF342E] Xenia and Tree - 鍒嗗潡,ST琛�,LCA

Description

缁欏畾涓€棰� \(n\) 涓粨鐐圭殑鏍戯紝鍒濆鏃� \(1\) 鍙风粨鐐逛负绾㈣壊锛屽叾浣欎负钃濊壊銆傝姹傛敮鎸佸皢涓€涓粨鐐瑰彉涓虹孩鑹诧紝鎴栬€呰闂竴涓偣鍒版渶杩戠殑绾㈣壊鐐圭殑璺濈銆�

Solution

瀵规暣涓搷浣滃簭鍒楀垎鍧楋紝鍒欐墍鏈夌殑褰卞搷鍒嗕负鍧楅棿鐨勫拰鍧楀唴鐨勩€傚潡鍐呯殑鐢� ST 琛� LCA 鏉ュ鐞嗭紝鍧楅棿鐨勯澶勭悊濂斤紝鍗虫瘡澶勭悊瀹屼竴涓潡锛屾垜浠氨鐢� BFS 璁$畻濂借繖涓潡鐨勫悗缁奖鍝嶃€傚鏉傚害 \(O(n \sqrt n)\)

Description

缁欏畾涓€妫垫爲锛屾彁渚� \(3\) 绉嶆搷浣滐紝姣忔鎸囧畾涓€涓偣锛屽皢瀹冪殑鎵€鏈夊瀛愭煋鑹蹭负 \(1\)锛屾垨瀹冨埌鏍圭殑璺緞鏌撹壊涓� \(0\)锛屾垨璇㈤棶瀹冩槸鍚﹁鏌撹壊銆�

Solution

澶嶄範涓€涓嬫爲閾惧墫鍒嗐€備富瑕佹槸鍏充簬璇㈤棶鐨勯儴鍒嗐€�
鎴戜滑鎸夌収杩欐牱鐨勬柟寮忓幓澶勭悊涓€涓闂細濡傛灉 top[p] 鍜� top[q] 涓嶇浉绛夛紝閭d箞鎴戜滑灏变粠 top 娣卞害杈冨ぇ鐨勯偅涓紙璁句负 \(p\)锛夊悜涓婃煋涓€娈� \([top[p],p]\)锛岀劧鍚庡皢 \(p\) 淇敼涓� \(fa[top[p]]\)銆傛渶鍚庡浜庡墿涓嬬殑锛屾繁搴﹁緝澶х殑 \(x\) 鍜屾繁搴﹁緝灏忕殑 \(y\)锛屾垜浠繕闇€瑕佹煋涓€娈� \([y,x]\)銆傛墍鏈夋搷浣滀緷鎹� DFS 搴忚繘琛屻€�
绾挎鏍戦渶瑕佹敮鎸佸尯闂磋鐩栧拰鍗曠偣璇㈤棶锛屽綋鐒朵篃鍙互杞寲涓哄樊鍒嗙殑鍗曠偣淇敼鍖洪棿姹傚拰銆�

[CF354C] Vasya and Beautiful Arrays

Description

瀹氫箟涓€涓暟缁勭殑缇庝附搴︿负杩欎釜鏁扮粍鎵€鏈夊厓绱犵殑鏈€澶у叕绾︽暟锛屽浜庢瘡涓厓绱犲彲浠ュ噺涓€涓� \(0 \sim k\) 鐨勬暟锛屽噺瀹屼互鍚庤鍏冪礌蹇呴』闈炶礋锛屾眰鍑鸿繖涓暟缁勭殑鏈€澶х編涓藉害銆�

Solution

鏄剧劧 ans 涓嶄細澶т簬鏈€灏忔暟锛岃 ans 绛変簬鏈€灏忔暟锛屽惊鐜亶鍘嗘瘡涓暟锛屽鏋滀笉绗﹀悎鏉′欢灏卞皢 ans 鍑忎竴缁х画寰幆閬嶅巻

Description

缁欏畾 \(n\) 鏉$嚎娈� \([l_i,r_i]\)锛屾湁 \(m\) 涓闂紝姣忔缁欏畾鑻ュ共涓偣锛岄棶澶氬皯绾挎鑳借嚦灏戣鐩栬繖浜涚偣涓殑涓€涓€�

Solution

琛ラ泦杞寲锛屾眰澶氬皯绾挎涓€涓偣涔熶笉鑳借鐩栥€�
鐐瑰皢鏁拌酱鍒嗗壊鎴愪簡涓€涓嚎娈甸泦锛屽嵆姹傛湁澶氬皯鍘熷绾挎鏄寘鍚湪璇㈤棶绾挎闆嗕腑鐨勪竴涓嚎娈典腑鐨勩€�
瑕佽闂竴涓嚎娈靛寘鍚殑鍘熷绾挎涓暟锛岃€冭檻绂荤嚎澶勭悊锛岀敤鏍戠姸鏁扮粍缁存姢鍗冲彲銆�
鍏蜂綋鍦帮紝鎸夊彸绔偣鎺掑簭鍚庢壂鎻忥紝鎵埌涓€涓師濮嬬嚎娈靛氨鍦ㄦ爲鐘舵暟缁勭殑宸︾鐐逛綅缃姞涓€锛屾壂鍒颁竴涓闂嚎娈靛氨鐩存帴鎵弿閮ㄥ垎鐨勫悗缂€鍜屾潵缁熻绛旀锛堟壂鎻忛『搴忎繚璇佷簡鍙崇鐐归『搴忥紝鍚庣紑鍜屼繚璇佷簡宸︾鐐瑰叧绯伙紝鏁呰闂嚎娈靛寘鍚簡鍘熷绾挎锛�

[CF375D] Tree and Queries - dsu on tree

Description

缁欏畾涓€妫垫爲锛屾牴涓� \(1\)锛屾瘡涓偣涓婃湁棰滆壊 \(c_i\)锛屾湁 \(m\) 娆¤闂紝姣忔鎸囧畾 \(u,k\)锛岄棶 \(u\) 涓烘牴鐨勫瓙鏍戜腑锛屽嚭鐜版鏁� \(\ge k\) 鐨勯鑹叉湁澶氬皯绉嶃€�

Solution

dsu on tree锛屾瘡娆℃壘鍒板厛澶勭悊鎵€鏈夎交鍎垮瓙锛屾渶鍚庡鐞嗛噸鍎垮瓙锛屽鐞嗗畬閲嶅効瀛愬悗涓嶆竻绌猴紝鏆村姏鍔犱笂鎵€鏈夎交鍎垮瓙鐨勮础鐚紝寰楀埌璇ュ瓙鏍戝唴鎵€鏈夌偣鐨勮础鐚€�
鐢变簬瑕佺淮鎶ょ殑鏄湁澶氬皯棰滆壊鏁� \(\ge k\)锛屾垜浠緢瀹规槗鎯冲埌鐢� BIT 鐨勫仛娉曪紝浣嗗叾瀹炲苟涓嶉渶瑕併€�
璁� \(cnt[i]\) 琛ㄧず棰滆壊 \(i\) 鍑虹幇浜嗗灏戞锛岃 \(sum[i]\) 琛ㄧず鍑虹幇娆℃暟澶т簬绛変簬 \(i\) 鐨勯鑹叉暟閲忔湁澶氬皯锛岄偅涔堝湪姣忔鍋囪鐜板湪 \(cnt[i]\) 浠� \(x\) 鍙樹负 \(x+1\)锛屾垜浠彧闇€瑕佸湪 \(sum[x+1]\) 涓婂姞涓€鍗冲彲锛屽弽涔嬩害鐒躲€�

Description

缁欏畾涓€涓嫭鍙峰簭鍒楋紝姣忔璇㈤棶涓€涓尯闂达紝姹傝繖涓尯闂寸殑鎵€鏈夊瓙搴忓垪涓紝鍚堟硶鎷彿搴忓垪鐨勬渶澶ч暱搴︺€�

Solution

鑰冭檻绾挎鏍戯紝瀵逛簬涓€涓尯闂达紝鍏跺唴閮ㄧ浉浜掑尮閰嶅悗锛屼竴瀹氫細鍓╀笅鑻ュ共鐨勫乏鎷彿鍫嗙Н鍦ㄥ彸渚э紝鑻ュ共鐨勫彸鎷彿鍫嗙Н鍦ㄥ乏渚с€�
鍚堝苟鍖洪棿鏃讹紝宸﹁竟鍓╀綑鐨勫乏鎷彿鍜屽彸杈瑰墿浣欑殑鍙虫嫭鍙蜂細鐩镐簰娑堝幓涓€閮ㄥ垎銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡娆℃搷浣滀竴涓粨鐐癸紙灏嗗畠鍔犱笂 \(v\)锛屽瀛愬噺鍘� \(v\)锛屽瀛愮殑瀛╁瓙鍔犱笂 \(v\)锛屼互姝ょ被鎺級锛屾垨鑰呮煡璇竴涓粨鐐圭殑鍊笺€�

Solution

鑰冭檻缁存姢涓や釜搴忓垪锛屼竴涓簭鍒椾腑鎵€鏈夋繁搴︿负濂囨暟鐨勭偣鏄湁鏁堢殑锛屽彟涓€涓簭鍒椾腑鎵€鏈夋繁搴︿负鍋舵暟鐨勭偣鏄湁鏁堢殑銆傚鏋滄搷浣滅殑涓€涓偣鏄鏁版繁搴︾殑锛岄偅涔堝氨鍦ㄥ墠鑰呬腑鍔狅紝鍚庤€呬腑鍑忥紝鑻ユ槸鍋舵暟娣卞害鍒欐伆濂界浉鍙嶃€傚綋鎴戜滑鍙栧嚭涓€涓偣鐨勬潈鍊肩殑鏃跺€欙紝鏍规嵁瀹冩槸濂囨暟娣卞害鐨勭偣杩樻槸鍋舵暟娣卞害鐨勭偣鍒板搴旂殑搴忓垪涓彇鍗冲彲銆�
閫氳繃 DFS 搴忚浆鍖栦负鍖洪棿鎿嶄綔鍗曠偣璇㈤棶锛屽啀閫氳繃宸垎杞寲涓哄崟鐐逛慨鏀瑰尯闂磋闂紝浜庢槸鐢ㄦ爲鐘舵暟缁勫鐞嗗嵆鍙€�
鏈変竴杈嗚浇閲嶉噺涓� v 鐨勮揣杞︼紝 鍑嗗杩愰€佷袱绉嶇墿鍝併€� 鐗╁搧 A 鐨勯噸閲忎负 1锛� 鐗╀綋 B 鐨勯噸閲忎负 2锛� 姣忎釜鐗╁搧閮芥湁涓€涓环鍊笺€� 姹傝揣杞﹀彲浠ヨ繍閫佺殑鐗╁搧鐨勬渶澶т环鍊笺€�

Solution

鑰冭檻鎶婄墿鍝佸垎涓轰袱绫伙紝鏋氫妇 B 绫婚€夊灏戜釜锛岃€冭檻鍒版瘡涓€绫讳腑涓€瀹氫細浼樺厛閫夋嫨浠峰€兼渶楂樼殑閭d簺锛屾帓搴忓嵆鍙�

Description

姹傚湪涓や釜缁欏畾瀛楃涓蹭腑鍚勫彧鍑虹幇涓€娆$殑鏈€鐭殑鍏叡瀛愪覆銆�

Solution

瀵逛袱涓粰瀹氫覆寤虹珛骞夸箟 SAM锛屽姣忎釜缁撶偣锛屽垎鍒褰曟簮浜庡悇涓覆鐨� \(endpos\) 闆嗗悎鐨勫ぇ灏� \(cnt[i][0], cnt[i][1]\)
閬嶅巻鎵€鏈夎妭鐐� \(p\)锛岃嫢 \(cnt[p][0] = 1 \and cnt[p][1] = 1\) 鍒欒鐐瑰悎娉曪紝鐢ㄥ畠鐨� \(minlen\) 鏇存柊绛旀

Description

姹傛弧瓒� \(n+1\sim 2n\) 涔嬮棿鎭版湁 \(m\) 涓暟浜岃繘鍒惰〃绀轰腑鏈� \(k\) 涓� \(1\) 鐨� \(n\)锛岃緭鍑轰换鎰忎竴涓В鍗冲彲銆�

Solution

瀹规槗璇佹槑 \(n+1 \sim 2n\) 涓湁 \(k\) 涓� \(1\) 鐨勪釜鏁伴殢鐫€ \(n\) 澧炲ぇ鑰屽崟璋冧笉闄�
浜庢槸浜屽垎 \(n\)锛岄棶棰樿浆鍖栦负姹� \(n+1 \sim 2n\) 涓湁 \(k\) 涓� \(1\) 鐨勬暟鐨勪釜鏁帮紝瀵逛簬姣忎竴娆℃眰 \(sum(i)\) 鍗� \(1 \sim i\) 涓湁 \(k\) 涓� \(1\) 鐨勬暟鐨勪釜鏁�
浠� \(f[i][j][0/1]\) 琛ㄧず鑰冭檻鍒板簳 \(i\) 浣嶏紝\(1\) 鐨勬暟閲忎负 \(j\) 鐨勬暟锛屽墠 \(i\) 浣嶆槸鍚﹀凡缁忚揪鍒版渶澶ф椂鐨勪釜鏁帮紝鍒�
濡傛灉 \(a[i]=1\)

\[f[i][j][0]=f[i-1][j][0]+f[i-1][j-1][0]+f[i-1][j][1] \\ f[i][j][1]=f[i-1][j-1][1] \]

濡傛灉 \(a[i]=0\)

\[f[i][j][0]=f[i-1][j][0] + f[i-1][j-1][0] \\ f[i][j][1]=f[i-1][j][1] \]

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勯暱瀛楃涓诧紝瀹岀編瀛愪覆鏃㈡槸瀹冪殑鍓嶇紑涔熸槸瀹冪殑鍚庣紑锛屾眰瀹岀編瀛愪覆鐨勪釜鏁颁笖缁熻杩欎簺瀛愪覆鐨勫湪闀垮瓧绗︿覆涓嚭鐜扮殑娆℃暟銆�

Solution

KMP 姹傚嚭 next 鏁扮粍锛屽垯 next 鏁扮粍浠庢渶鍚庝竴浣嶅紑濮嬭烦鍑犳鍒� 1 灏辨槸涓暟
瀵逛簬鍑虹幇娆℃暟锛岃涓� f[]锛屽垯 f[next[i]]+=f[i] 杞Щ鍗冲彲锛屽垵濮嬪€� f[i]=1

[CF438D] The Child and Sequence - 绾挎鏍�

Description

缁欏畾鏁板垪锛屾煡璇㈠尯闂村拰锛屽尯闂村彇妯★紝鍗曠偣淇敼銆�

Solution

绾挎鏍戯紝璁板綍鍖洪棿鏈€澶у€硷紝濡傛灉澶т簬瑕佸彇妯$殑鏁板氨鎶婁慨鏀规毚鍔涢€掑綊涓嬪幓銆�

Description

鏈変竴涓ぇ灏忎负 \(n\) 鐨勯泦鍚� \(S\)锛岄棶鎵€鏈夌偣鏉冮兘鍦ㄩ泦鍚堜腑锛屽苟涓旂偣鏉冧箣鍜屽垎鍒负 \([0,m]\) 鐨勪簩鍙夋爲鐨勪釜鏁般€�

Solution

鍏堣€冭檻鏅€氱殑璁℃暟缁勫悎鍋氭硶銆傝 \(f(i)\) 琛ㄧず鐐规潈鍜� \(i\) 鐨勪簩鍙夋爲涓暟锛堟敞鎰� \(f(0)=1\)锛夛紝\(c(i)\) 鏄泦鍚堜腑鏁扮殑鐢熸垚鍑芥暟锛岄偅涔堝 \(f(n)\) 鑰冭檻灏� \(n\) 浣滄墍鍒掑垎锛屾牴缁撶偣鐢ㄥ幓 \(i\)锛屽乏瀛愭爲鐢ㄥ幓 \(j\)锛屽垯

\[f(n)=\sum_{i=1}^{n}c(i)\sum_{j=0}^{n-i}f(j)f(n-i-j) \]

寰�$$F(x)=F(x) F(x) C(x)+1$$锛屼簬鏄湁

\[F(x)=\frac{2}{1+\sqrt{1-4C(x)}} \]

Description

\(n\) 涓偣 \(m\) 鏉¤竟鐨勬棤鍚戝浘锛屽彟鏈� \(k\) 鏉$壒娈婅竟杩炴帴 \(1-i\)锛岄棶鏈€澶氬垹闄ゅ灏戞潯鐗规畩杈癸紝浣垮緱姣忎釜鐐瑰埌 \(1\) 鐨勬渶鐭窛绂讳笉鍙樸€�

Solution

鑰冭檻鍏堣绠楀埌姣忎釜鐐圭殑鏈€鐭矾鏉℃暟锛岀劧鍚庡垽鏂€�
濡傛灉 \(1 \to i\) 鏈夌壒娈婅竟锛岃嫢鐗规畩杈归暱搴� \(>\) 璺濈锛岄偅涔堟樉鐒惰繖鏉$壒娈婅竟娌℃湁璐$尞锛岀洿鎺ュ垹闄ゃ€傝嫢绛変簬璺濈锛屽苟涓旀渶鐭矾鏉℃暟 \(>1\)锛屽垯鍒犻櫎杩欐潯鐗规畩杈癸紝骞跺皢鏈€鐭矾鏉℃暟 \(-1\)銆�
娉ㄦ剰杩欓噷 \(-1\) 浠ュ悗鎴戜滑骞朵笉闇€瑕佸幓鑰冭檻瀹冨鍏跺畠鐨勭偣鐨勫奖鍝嶃€�

Description

缁欏畾 \(n\) 涓偣锛�\(m\) 鏉¤竟缁勬垚鐨勬.鏋楋紝鏈� \(q\) 娆℃搷浣滐紝姣忔鎿嶄綔瑕佷箞璇㈤棶鏌愮偣鎵€鍦ㄨ繛閫氬潡鐨勭洿寰勶紝瑕佷箞灏嗕袱涓笉鍚岀殑杩為€氬潡杩炴帴锛岃繛鎺ユ柟寮忚浣垮緱杩炴帴鍚庣殑鐩村緞鏈€鐭€�

Solution

璁句袱涓繛閫氬潡鐨勭洿寰勯暱搴﹀垎鍒负 \(l_1,l_2\)锛屽垯杩為€氬悗鐨勭洿寰勯暱搴︿负 \(\max(l_1,l_2,\lceil l_1/2 \rceil + \lceil l_2/2 \rceil + 1)\)
骞舵煡闆嗙淮鎶ゅ嵆鍙�
鐗瑰埆娉ㄦ剰鍒濇€佺殑鐩村緞鏄渶瑕佸缓鍥炬眰瑙g殑
锛堟嵁璇翠竴鏉¢摼鐨� Test 121 鍙互鍗″父锛燂級

[CF463C] Gargari and Bishops - 缁撹

Description

缁欏畾涓€涓� \(n \times n\) 鐨勫浗闄呰薄妫嬫鐩橈紝姣忎釜鏍煎瓙鏈変竴涓緱鍒嗭紝浣犻渶瑕佸湪妫嬬洏涓婃斁缃袱涓薄锛堝彲浠ユ部鐫€瀵硅绾胯璧帮級锛岃姹備笉鑳芥湁浣嶇疆鍚屾椂琚袱涓薄鏀诲嚮鍒帮紝鑰屾伆濂借兘琚竴涓薄鏀诲嚮鍒扮殑浣嶇疆鍙互鑾峰緱鏍煎瓙瀵瑰簲鐨勫緱鍒嗐€傛眰寰楀垎鐨勬渶澶у€硷紝浠ュ強鏀剧疆璞$殑鏂规銆�

Solution

棣栧厛锛屽鏄撹瘉鏄庯紝鑻ユ垜浠鏍煎瓙榛戠櫧鏌撹壊锛屽垯涓や釜璞′竴瀹氭斁鍦ㄥ紓鑹茬殑鏍煎瓙涓€�
浜庢槸鎴戜滑鍙互澶勭悊鍑烘瘡鏉″瑙掔嚎鐨勫拰锛岃繖鏍锋垜浠氨鍙互 \(O(1)\) 璇㈤棶灏嗚薄鏀惧湪涓€涓牸瀛愪腑鎵€鑳借幏寰楃殑寰楀垎銆傚悓鏃舵垜浠敞鎰忓埌锛屽湪婊¤冻涓婅堪鏉′欢鐨勬儏鍐典笅锛岃繖涓ょ鏂规鎵€鑳借幏寰楃殑绛旀鍏跺疄鏄嫭绔嬬殑锛屽洜姝ゆ垜浠彧闇€瑕佸垎鍒眰鍑烘渶澶у€煎嵆鍙€�
鎵惧埌鍚屾椂瀛樺湪浜� \(k \leq 5\) 涓帓鍒椾腑鐨� LCS

Solution

璁板綍姣忚涓瘡涓厓绱犵殑鍑虹幇浣嶇疆锛岄偅涔堟湰璐ㄤ笂鏄竴涓� \(k\) 缁村亸搴忛棶棰�
瀵逛簬 \(j<i\)锛屾垜浠毚鍔涙鏌� \(pos[a[j]] < pos[a[i]]\) 鏄惁瀵瑰叾瀹� \(k-1\) 涓淮搴︿篃鎴愮珛锛屽鏋滄槸灏辫浆绉�

Description

缁欏畾涓€涓暟缁� \(a\)锛屽寘鍚� \(n\) 涓暟瀛� \(a[1],a[2],a[3],...,a[n]\)銆傜幇鍦ㄤ綘瑕佹壘鍒版妸瀹冨垎鎴愪笁浠界殑鏂规硶锛屼娇寰楁瘡涓€浠戒箣鍐呮墍鏈夋暟鐨勫拰鐩哥瓑銆�

Solution

璁炬€诲拰涓� \(sum\)锛屽彧鑰冭檻 \(3|sum\) 鐨勬儏鍐碉紝璁� \(k=sum/3\)锛屽垯缁熻 \(s[i]=\sum_{j=1}^{i} [a[i]=k]\)锛屽垯 \(ans=\sum_{a[i]=2k} s[i-1]\)銆�

Description

鍏徃涓湁 \(n\) 鍚嶅憳宸ワ紝寮€濮嬫椂鍛樺伐涔嬮棿娌℃湁浠讳綍鑱旂郴锛屾帴涓嬫潵浼氫緷娆″彂鐢� \(m\) 鏉′簨浠讹紝绫诲瀷鏈変笁绉嶃€�

  • \(y\) 鎴愪簡 \(x\) 鐨勪笂鍙�
  • \(x\) 寰楀埌浜嗕竴浠芥枃浠讹紝\(x\) 鎶婃枃浠朵紶缁欎簡浠栫殑涓婂徃锛屼粬鐨勪笂鍙稿張浼氫紶缁欎笂鍙哥殑涓婂徃锛岀洿鍒版煇浜烘病鏈変笂鍙革紝姝ゆ椂鏂囦欢琚攢姣�
  • 璇㈤棶 \(x\) 鏄惁鐪嬭繃绗� \(i\) 浠芥枃浠�

Solution

鑰冭檻绂荤嚎澶勭悊锛屾椂搴忔壂鎻忥紝绗竴杞鐞� 1,2 鎿嶄綔锛岀浜岃疆澶勭悊璇㈤棶
瀵逛簬鎿嶄綔 1锛屽湪骞舵煡闆嗕腑鍚堝苟 \(x,y\)锛堥『搴忥紒锛夛紝鍦ㄦ.鏋椾腑鍔犺竟
瀵逛簬鎿嶄綔 2锛屾垜浠皢杩欎唤鏂囦欢璁板綍涓嬫潵锛屽叾淇℃伅涓� \(x\) 鍜屽畠鍦ㄥ苟鏌ラ泦涓殑鏍�
鏃跺簭鎵弿杩囩▼涓紝璁剧 \(i\) 浠芥枃浠舵秹鍙婄殑涓や釜鐐规槸 \(p_i,q_i\)锛屾垜浠彧闇€瑕佹鏌� \(x\) 鏄惁鍦� \(p,q\) 鏋勬垚鐨勯摼涓婂嵆鍙�
绠€鍗昫p + 鍓嶇紑鍜�

浣犺胺杩欎贡鏍囬毦搴︾殑椋庢皵鐪熸槸鈥︹€�

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫簭鍒楋紝鏈� \(q\) 缁勮闂紝姣忔璇㈤棶缁欏畾涓€涓笅鏍囧尯闂� \([l,r]\)锛岄棶杩欎釜鍖洪棿涓紝鏈夊灏戞暟鍙互鏁撮櫎鍖洪棿涓殑鎵€鏈夋暟銆�

Solution

瀵逛簬鍖洪棿 \([l,r]\)锛�\(a_i\) 鏁撮櫎鎵€鏈夋暟鍗� \(a_i | \textrm{gcd}(a_l,a_{l+1},...,a_r)\)
浠� \(g=\textrm{gcd}(a_l,a_{l+1},...,a_r)\)锛屽彲浠ョ敤绾挎鏍戝湪 \(O(\log n)\) 鏃堕棿鍐呮眰鍑�
鑰� \(a_i | g \and a_i \le g \Rightarrow a_i = g\)锛屼簬鏄彧闇€瑕佺粺璁″尯闂翠腑绛変簬 \(g\) 鐨勪釜鏁板嵆鍙�
瀵规墍鏈夋暟瀛楃鏁e寲鍚庯紝瀵规瘡绉嶆暟鐢� vector 瀛樺偍鍏跺嚭鐜颁綅缃紝鏌ヨ鏃跺湪 vector 涓婁簩鍒嗗嵆鍙�

Description

鏈夌孩鑹层€佺豢鑹蹭袱绉嶇爾鍧楋紝鍒嗗埆鏈� \(r,g\) 鍧楋紝瑕佺敤浠栦滑鎼缓楂樺害鏈€澶х殑閲戝瓧濉旓紙绗� \(i\) 灞傛伆濂芥湁 \(i\) 鍧楃爾锛夛紝姣忎竴灞傜殑鐮栫殑棰滆壊蹇呴』鐩稿悓锛屾眰鏈夊灏戠鏂规銆�

Solution

鑰冭檻鍒板眰鏁版槸 \(\sqrt n\) 閲忕骇鐨勶紝鍥犳鎴戜滑鍙互绠€鍗曞湴 DP锛屼笉濡ㄨ璁$畻鍑虹殑灞傛暟涓� \(h\)锛岄偅涔堣繖鏍烽渶瑕佺殑鎬荤爾鍧楁暟鏄‘瀹氱殑锛屼笉濡ㄨ涓� \(tot\)銆�
璁� \(f[i][j]\) 琛ㄧず鍒朵綔浜� \(1-i\) 灞傦紝鐢ㄤ簡 \(j\) 鍧楃孩鐮栵紝鏈夊灏戠鏂规銆�

Description

缁欏畾涓€涓簭鍒� \(a_i\)锛岃鎵句袱涓暟 \(i,j\)锛屼娇寰� \(a_i \ge a_j\) 骞朵笖 \(a_i \bmod a_j\) 鐨勫€兼渶澶э紝姹� \(a_i \bmod a_j\) 鐨勬渶澶у€笺€�

Solution

鑰冭檻 \(a \bmod b = a-kb\)锛屽叾涓� \(kb \le a < (k+1)b\)
鑰冭檻鏋氫妇 \(k,b\)锛屽彲浠ラ€氳繃浜屽垎鎵惧埌鏈€澶х殑 \(a\)锛屾樉鐒舵鏃朵綑鏁颁篃鏈€澶�
澶嶆潅搴� \(O(n \log^2 n)\)
鏈変竴缁勬暟锛屼綘瑕佹妸浠栧垎鎴愯嫢骞茶繛缁銆傛瘡涓€娈电殑鍊硷紝瀹氫箟涓鸿繖涓€娈� 鏁颁腑鏈€澶у€间笌鏈€灏忓€肩殑宸€� 姹備竴绉嶅垎娉曪紝浣垮緱杩欒嫢骞叉鐨勫€肩殑鍜屾渶澶с€� N < 1e6, a[i] < 1e9銆�

\(O(n^2)\) dp

璁�\(f[i]\)琛ㄧず鍒嗗墠\(i\)涓暟鍙互寰楀埌鐨勬渶澶у拰锛屽垯

\[f_i = Max_{0 \leq j < i}(f[j]+Query(j+1,i)) \]

鍏朵腑\(Query(l,r)\)琛ㄧず鐨勬槸\([l,r]\)娈电殑鍊煎煙澶у皬锛屽彲浠ラ€氳繃\(O(n^2)\)棰勫鐞嗗緱鍒帮紝鐒跺悗\(O(n^2)\)鏆村姏杞Щ锛屾€讳綋澶嶆潅搴�\(O(n^2)\)

璐績

寮曠悊 姣忎竴娈靛唴涓€瀹氭槸鍗曡皟鐨�
浜庢槸锛屾樉鐒跺皢姣忎釜涓婂崌/涓嬮檷鍖洪棿鍒掍负涓€娈典竴瀹氭渶浼樸€傛敞鎰忚竟鐣岀殑鍐崇瓥銆�

Description

缁欏畾涓€妫靛甫鐐规潈鐨勬爲锛屾眰婊¤冻鐐规潈鏋佸樊涓嶈秴杩� \(d\) 鐨勮繛閫氬瓙鍥剧殑涓暟銆�\(n,d \le 2000\)銆�

Solution

鏋氫妇姣忎釜鐐逛綔涓烘渶澶у€� \(M\)锛岄偅涔堟鏃跺彧鏈夌偣鏉� \(\ge M-d\) 鐨勭偣鏄彲浠ヨ鑰冭檻鐨勩€�
鏍戝舰 dp锛岃 \(f[p]\) 琛ㄧず浠ュ綋鍓嶉€夋嫨鐨勬渶澶у€肩偣涓烘牴鐨勬儏鍐典笅锛�\(p\) 鐨勫瓙鏍戝唴锛岄€夊彇涓€涓寘鍚� \(p\) 鐨勯潪绌鸿繛閫氬瓙鍥剧殑鏂规鏁般€�
杞Щ鏃讹紝瀵逛簬 \(p\) 鐨勫瀛� \(q_1,q_2,...,q_k\)锛屼緷娆℃灇涓惧苟鏇存柊 \(f[p]\)锛屽嵆 \(f[p] \leftarrow f[p] + f[p] f[q_i]\)銆�
娉ㄦ剰鐐规潈鏄彲浠ラ噸澶嶇殑锛岃繖鏍风粺璁′細閫犳垚閲嶅璁$畻锛屾垜浠繀椤昏鏋勯€犵偣涔嬮棿鐨勪弗鏍煎叏搴忓叧绯伙紝鍥犳褰撶偣鏉冪浉绛夋椂锛屾瘮杈冪紪鍙峰ぇ灏忓嵆鍙€�

Description

缁欏畾涓€涓暟鍒楋紝瀵逛簬姣忎釜鍏冪礌锛岄棶瀹冨睘浜庝互涓嬪摢涓€绫伙細蹇呴』鍦ㄦ渶闀夸笂鍗囧瓙搴忓垪涓紱鍙兘鍦ㄦ渶闀夸笂鍗囧瓙搴忓垪涓紝涓嶅彲鑳藉湪鏈€闀夸笂鍗囧瓙搴忓垪涓€�

Solution

姹傛瘡涓厓绱犲紑澶村拰缁撳熬鐨勬渶闀夸笂鍗囧瓙搴忓垪闀垮害 \(f[i]\) 鍜� \(g[i]\)
濡傛灉 \(f[i]+g[i]-1<ans\)锛屽叾涓� \(ans\) 鏄暣涓簭鍒楃殑鏈€闀夸笂鍗囧瓙搴忓垪锛屽垯 \(i\) 涓嶅彲鑳藉湪鏈€闀夸笂鍗囧瓙搴忓垪涓�
濡傛灉瀛樺湪 \(j\)锛屼娇寰� \(f[i]=f[j], g[i]=g[j]\)锛屽垯 \(i\) 涓嶅湪鎵€鏈夌殑鏈€闀夸笂鍗囧瓙搴忓垪涓�
鍚﹀垯锛�\(i\) 涓€瀹氬湪鎵€鏈夌殑鏈€闀夸笂鍗囧瓙搴忓垪涓�

Description

鏈� \(n\) 棣栫嫭濂忎箰鏇诧紝绗� \(i\) 棣栫殑闊抽珮鑼冨洿涓� \([a_i,b_i]\)锛屾湁 \(m\) 浣嶆紨濂忓锛岀 \(i\) 浣嶈兘婕斿鐨勯煶楂樿寖鍥翠负 \([c_i,d_i]\)锛屼笖浠栨渶澶氬彲浠ュ嚭婕� \(k_i\) 娆°€傞棶鏄惁瀛樺湪鍚堟硶鏂规鑳戒娇鎵€鏈変箰鏇查兘琚紨濂忎竴娆°€�

Solution

瀵逛簬鎵€鏈変箰鏇插拰婕斿瀹讹紝鎸夌収宸︾鐐规帓搴忥紝浠庡皬鍒板ぇ渚濇鎵弿
缁存姢涓€妫垫紨濂忓鐨勫钩琛℃爲锛屽叧閿瓧涓� \(d_i\)锛屽悓鏃惰褰曞叾鍓╀綑鐨勫嚭婕旀鏁�
鎵弿涓紝姣忛亣鍒版柊鐨勬紨濂忓锛屽氨灏嗗叾鍔犲叆骞宠 鏍�
姣忛亣鍒版柊鐨勪箰鏇诧紝鏄剧劧瀵瑰钩琛℃爲涓墍鏈夌殑婕斿瀹讹紝涓€瀹氭弧瓒� \(c \le a\)锛屽彧闇€瑕佺害鏉� \(b \le d\)
鏁呭湪骞宠 鏍戜腑浜屽垎锛屾壘鍒� \(\ge b\) 鐨勭涓€浣嶆紨濂忓锛屽皢鍏跺嚭婕旀鏁� \(-1\)锛屽鏋滀负 \(0\) 鍒欏皢鍏朵粠骞宠 鏍戜腑鍒犻櫎

[CF498C] Array and Operations - 鏁拌,鏈€澶ф祦

Description

鏈変竴涓暱搴︿负 n 鐨勬暟缁� a 鍜� m 瀵规暟 \((i_1,j_1),(i_2,j_2)...,(i_m,j_m)\)锛屽浜庢瘡瀵规暟閮芥弧瓒� \(i_k + j_k\) 鏄竴涓鏁帮紝涓旀瘡涓暟閮藉湪 1 鍒� n 涔嬮棿銆備綘姣忔鎿嶄綔鍙渶瑕佹寫涓€瀵规暟锛堢粰瀹氱殑 m 瀵归噷闈級\(i_k,j_k\)锛岀劧鍚庝娇 \(a[i_k]=\frac{a[i_k]}{v},a[j_k]=\frac{a[j_k]}{v}\)锛寁 鏄竴涓笉绛変簬 1 鐨勬鏁存暟锛屼笖 \(v\) 鏄� \(a[i]\) 鍜� \(a[j]\) 鐨勫叕绾︽暟銆傞棶鏈€澶氬彲浠ヨ繘琛屽灏戞鎿嶄綔銆�

Solution

姣忔娑堝幓涓€涓川鍥犲瓙涓€瀹氭槸鏈€浼樿В
濂囨暟鐨勬€ц川鏄剧劧淇濊瘉浜嗘瘡娆℃搷浣滃彂鐢熷湪涓や釜涓嶅悓鐨勯儴鍒嗕箣闂达紝杩欐槸涓€涓樉鐒剁殑浜屽垎鍥�
瀵逛簬姣忎釜鏁扮殑姣忎釜璐ㄥ洜鏁板缓鐐癸紝鍒版簮/姹囷紙杩欏彇鍐充簬瀹冧綅缃殑濂囧伓鎬э級鐨勫閲忎负璐ㄥ洜瀛愮殑鎸囨暟
瀵逛簬涓€涓搷浣� \((i_k,j_k)\) 鎴戜滑鍦ㄨ繖涓や釜鏁扮殑鎵€鏈夌浉鍚岀殑璐ㄥ洜瀛愪箣闂磋繛杈癸紝瀹归噺鍙互璁句负鏃犵┓

Description

鏋勯€犱竴涓暱搴︿负 \(2n\) 鐨勫悎娉曟嫭鍙峰簭鍒楋紝浣垮緱瀵逛簬浠庡乏鍒板彸鐨勭 \(i\) 涓乏鎷彿锛屼笌瀹冮厤瀵圭殑鍙虫嫭鍙峰拰杩欎釜宸︽嫭鍙蜂箣闂寸殑璺濈鍦� \([l_i,r_i]\) 涔嬮棿銆�

Solution

鑰冭檻鐢ㄦ爤妯℃嫙锛屾爤椤舵嫭鍙峰鏋滆兘鍖归厤灏变竴瀹氬厛鍖归厤锛屽惁鍒欎細瀵艰嚧澶遍厤銆�
鍏蜂綋鍦帮紝瀵逛簬姣忎竴涓乏鎷彿锛屾垜浠绠楀嚭瀹冨湪搴忓垪涓兘鍖归厤鐨勭湡瀹炰綅缃紝鐒跺悗鍦ㄦ爤椤舵弧瓒虫潯浠舵椂寮规爤鍗冲彲銆�

Description

缁欏嚭 \(n\) 涓凡鐭ュ瓧绗︿覆锛�\(m\) 娆¤闂紝姣忔璇㈤棶缁欏嚭涓€涓瓧绗︿覆锛岄棶涓婇潰 \(n\) 涓瓧绗︿覆涓槸鍚︽湁涓€涓瓧绗︿覆婊¤冻鎭板ソ鏈変竴涓瓧姣嶄笉鍚屼簬璇㈤棶鐨勫瓧绗︿覆銆傚瓧绗︿覆鐨勫瓧绗﹂泦涓� {a,b,c}銆�

Solution

瀵逛簬姣忎釜宸茬煡瀛楃涓诧紝鎴戜滑鍙互灏嗗畠鐨� hash 鍊兼墧杩涗竴涓泦鍚堥噷銆�
瀵逛簬姣忎釜璇㈤棶涓诧紝鎴戜滑鏋氫妇淇敼鍝竴涓瓧绗︼紝浠ュ強淇敼鎴愪粈涔堛€�

[CF519E] A and B and Lecture Rooms - LCA

Description

缁欏畾涓€妫垫爲锛屾湁 \(m\) 缁勮闂紝姣忔缁欏畾涓や釜鐐� \(u,v\)锛岄棶鍒� \(u,v\) 璺濈鐩哥瓑鐨勭偣鏈夊灏戜釜銆�

Solution

涓€瀹氭槸杩炴帴 \(u,v\) 鐨勮矾寰勭殑涓偣浠ュ強瀹冩墍鍙戝嚭鐨勫叾瀹冨瓙鏍戙€�
浠ヤ笅璁� \(LCA(u,v)=l, MID(u,v)=c\)銆�
濡傛灉 \(l=c\)锛岄偅涔堢爫鎺変笌 \(u,v\) 鏈夊叧鐨勪袱妫靛瓙鏍戝嵆鍙€�
濡傛灉 \(l \neq c\)锛屽亣璁� \(DEP(u)>DEP(v)\)锛屽垯涓偣鐨勫瓙鏍戠爫鎺変笌 \(u\) 鏈夊叧鍙殑涓€妫靛瓙鏍戝嵆鍙€�
闂 1锛氬埌搴曟€庝箞姹備腑鐐癸紵

涓偣瀛樺湪鐨勫厖瑕佹潯浠朵负 $2|(DEP(u)+DEP(v))$锛屽鏋滀腑鐐瑰瓨鍦紝閭d箞瀹冪殑娣卞害锛屾槸鍙互姹傚嚭鐨勶細鐩撮摼鐨勬儏鍐典负 $\frac {DEP(u)+DEP(v)} 2$锛屾洸閾剧殑鎯呭喌涓嬶紝璁� $len = DEP(u)+DEP(v)-2DEP(l)$锛屽亣璁� $DEP(u) \ge DEP(v)$锛屽垯 $MID$ 鐨勬繁搴︿负 $DEP(u)-\frac {len} 2$銆傛眰鍑烘繁搴﹀悗锛屾垜浠粠杈冩繁鐐瑰€嶅鍚戜笂璺冲嵆鍙€�
闂 2锛氭€庢牱鐮嶆帀鐐� $p$ 涓庣偣 $q$ 鐩稿叧鐨勪竴妫靛瓙鏍戯紵
鎴戜滑灏� $q$ 鍊嶅鍚戜笂璺筹紝浣垮畠鎴愪负 $p$ 鐨勫瀛愶紝閭d箞姝ゆ椂鐨勬繁搴︽樉鐒舵槸 $DEP(p)+1$銆�
### Description 缁欏畾涓€涓暱搴︿负 $n$ 鐨勫瓧绗︿覆 $S$锛屾眰瀹冪殑鎵€鏈夊墠缂€涓紝鍝簺鍙互琚垝鍒嗕负 $ABAB...ABA$ 鐨勫舰寮忥紝鍏朵腑 $A,B$ 鏄彲浠ヤ负绌虹殑涓诧紝涓斾竴鍏卞寘鍚簡 $k$ 缁� $AB$銆� ### Solution 鑰冭檻浠� $S=AB$锛屾灇涓� $S$ 鐨勯暱搴� $i$锛屾垜浠彧闇€瑕佹鏌� $LCP(ji+1,1) \ge i, j=1..k-1$锛屽鏋滈兘婊¤冻锛屽垯鍙互灏嗙瓟妗堝簭鍒椾腑寰€鍚庣殑涓€娈佃鐩栦负 $1$ 鐢ㄦ墿灞� KMP 鍙互鍦� $O(n)$ 鏃堕棿鍐呭畬鎴愬 $LCP(i,1), i=1..n$ 鐨勮绠� 鎵€鏈夎鏋氫妇鐨勯暱搴﹀叡鏈� $O(n/k)$ 涓紝姣忔闇€瑕佹鏌� $O(k)$ 涓綅缃紝鏁呮€诲鏉傚害 $O(n)$ 鏁拌酱涓婃湁n 涓偣锛岀i 涓偣鐨勫潗鏍囦负xi锛屾潈鍊间负wi銆備袱涓偣i,j涔嬮棿瀛樺湪涓€鏉¤竟褰撲笖浠呭綋 abs(xi-xj)>=wi+wj銆� 浣犻渶瑕佹眰鍑鸿繖寮犲浘鐨勬渶澶у洟鐨勭偣鏁般€� ### Solution 鎶婃瘡涓偣鐪嬩綔浠� $(x_i,0)$ 涓哄渾蹇冿紝鍗婂緞涓� $r_i$ 鐨勫渾 閭d箞濡傛灉涓嶇浉浜ゅ氨鏈夎竟鐩歌繛 骞茶剢鐪嬩綔绾挎鍚э紝鎵€浠ュ氨鏄眰鏈€澶т笉鐩镐氦绾挎鏁� 杩欏氨鏄竴涓緢鍩虹鐨勮椽蹇冿紝浠ュ彸绔偣涓虹涓€鍏抽敭瀛楋紝宸︾鐐逛负绗簩鍏抽敭瀛� `sort` 鐒跺悗鈥滆兘鍙栧氨鍙栤€濆嵆鍙� ### Description 缁欏畾涓€涓幆鐘跺簭鍒楋紝姣忔鎿嶄綔閫夋嫨涓€涓尯闂达紝鏁翠綋鍔犱笂涓€涓暟锛屾垨鑰呰闂渶灏忓€笺€� ### Solution 瀵逛簬涓€涓尯闂达紝濡傛灉 $l \le r$ 鍒欐槧灏勫埌 $[l+1,r+1]$锛涘惁鍒欙紝鏄犲皠鍒颁袱涓尯闂� $[l+1,n],[1,r+1]$. 绾挎鏍戠淮鎶ゅ嵆鍙€� ### Description 缁欏畾涓€妫垫湁鏍规爲锛岀敳涔欒疆娴佹搷浣滐紝姣忔姣忎汉閫夋嫨涓€鏉¤竟璧帮紝浠庢牴璧板埌涓€涓彾瀛愶紝鐢插笇鏈涙渶鍚庡緱鍒扮殑鍙跺瓙缁撶偣鐨勬潈鍊煎敖鍙兘澶э紝涔欏笇鏈涙渶鍚庡緱鍒扮殑鍙跺瓙缁撶偣鐨勬潈鍊煎敖鍙兘灏忥紝涓や汉閮介噰鍙栨渶浼樼瓥鐣ャ€傜幇鍦ㄩ渶瑕佺粰姣忎釜鍙跺瓙鑺傜偣鍒嗛厤鏉冨€硷紝鏉冨€兼槸 $1 \sim m$ 鐨勫叏鎺掑垪銆傞棶璁╃敳鍒嗛厤鏉冨€煎垯鏈€鍚庡彇寰楃殑鏈€澶ф潈鍊兼槸澶氬皯锛岃涔欏垎閰嶆潈鍊煎垯鏈€鍚庡彇寰楃殑鏈€灏忔潈鍊兼槸澶氬皯銆� ### Solution 鏍戝舰 dp锛岃 $f[i]$ 琛ㄧず $i$ 鐐瑰瓙鏍戝唴鑳借揪鍒扮殑鏈€灏忔帓鍚嶏紝$h[i]$ 琛ㄧず鏈€澶ф帓鍚嶏紝鍒欐湁

\[f[i]=\min_{i \to j} h[j], \ \ h[i]=\sum_{i \to j} f[j] \]

Description

鏈変竴涓皬鏍瑰爢锛岃繖涓爢鍙樻垚浜嗕竴涓� \(k\) 鍙夊爢锛堝舰寮忚浆鍖栵紝閫愬眰鎺掑竷锛夛紝浣嗚繖鏍蜂笉涓€瀹氭槸鍚堟硶鐨勶紙鍗虫湁鑻ュ共涓妭鐐瑰皬浜庡畠鐨勭埗浜诧級銆傞棶鐜板湪杩欎釜鍫嗘湁澶氬皯涓嶅悎娉曠殑鍏冪礌銆傚鎵€鏈� \(k\) 杈撳嚭缁撴灉銆�

Solution

\(x\) 鍙风偣鍦� \(k\) 鍙夋爲涓婄殑鐖朵翰鏄� \([\frac {x-2} {k}]+1\)
鏋氫妇鍎垮瓙鏉ヨ绠楃瓟妗堬紝鏄剧劧鍙互鏁撮櫎鍒嗗潡锛岀敤宸垎璁$畻绛旀锛屽鏉傚害涓� \(O(n \sqrt n)\)

Description

缁欏畾涓€寮� \(n \times m\) 鐨勭綉鏍煎浘锛屾瘡涓牸瀛愬彲鑳芥槸濂界殑涔熷彲鑳芥槸鍧忕殑锛屽潖鐨勮蛋浜嗗氨浼氱粨鏉燂紝濂界殑璧颁簡灏变細鍙樻垚鍧忕殑銆傜幇鍦ㄨ姹備粠璧风偣鍑哄彂锛岃蛋鍒扮粓鐐瑰苟鍦ㄧ粓鐐圭粨鏉燂紙鎰忓懗鐫€濡傛灉缁堢偣鏄ソ鐨勯偅涔堥渶瑕佺粡杩囦竴娆″悗鍐嶅埌杈撅級銆傛眰鑳藉惁瀹屾垚銆�

Solution

濡傛灉缁堢偣鏄潖鐨勶紝閭d箞鍙互瀹屾垚褰撲笖浠呭綋瀛樺湪涓€鏉″埌杈剧粓鐐圭殑璺緞銆�
濡傛灉缁堢偣鏄ソ鐨勶紝閭d箞鍙互瀹屾垚褰撲笖浠呭綋缁堢偣鐨勫洓鐩搁偦鏍煎瓙涓嚦灏戞湁涓や釜 \(p,q\) 婊¤冻瀛樺湪涓€鏉′粠璧风偣鍒嗗埆鍒拌揪 \(p,q\) 鐨勮矾寰勩€�

Description

鐜板湪鏈変竴涓敱鎵€鏈夋鏁存暟缁勬垚鐨勬棤闄愰€掑搴忓垪銆傚杩欎釜搴忓垪鎵ц \(n\) 娆′氦鎹㈡搷浣溿€傛瘡娆′竴涓搷浣滐紝缁欏嚭涓や釜鏁存暟 \(a,b\)锛屼氦鎹綅缃� \(a\) 鍜� \(b\) 澶勭殑鍏冪礌銆傚湪鎵€鏈夋搷浣滅粨鏉熷悗锛岃緭鍑烘渶缁堝簭鍒楃殑閫嗗簭瀵逛釜鏁般€�

Solution

绂绘暎鍖栵紝鍒╃敤宸﹂棴鍙冲紑鍖洪棿 \([l,r)\) 浣滀负鍗曚釜缁撶偣
绂绘暎鍖栧悗鐩存帴浜ゆ崲锛屼氦鎹㈠悗鐢ㄦ寜鐓ч『搴忎粠灏忓埌澶ф壂涓€閬嶏紝绾挎鏍戠粺璁″嵆鍙�

[CF543B] Destroying Roads - 鏈€鐭矾

Description

缁欏畾鏃犲悜鏃犳潈鍥撅紝姹傚湪淇濊瘉 \(s_1,t_1\) 闂磋窛绂讳笉瓒呰繃 \(t_1\)锛�\(s_2,t_2\) 闂磋窛绂讳笉瓒呰繃 \(t_2\) 鐨勬儏鍐典笅锛屾渶澶氳兘鐮村潖鐨勫叕璺暟閲忋€�

Solution

濡傛灉鍙湁涓€涓害鏉燂紝鏄剧劧鏈€鐭矾
鑰冭檻鏈変袱涓害鏉燂紝閭d箞鏈€鐭矾鍙兘鏈変氦锛屼篃鍙兘鏃犱氦
鏃犱氦鐨勬儏鍐碉紝绛旀灏辨槸 m-涓ゆ潯鏈€鐭矾闀垮害鍜�
鏈変氦鐨勬儏鍐碉紝鏋氫妇鏈€鐭矾绔偣 i,j锛岀劧鍚庤€冭檻涓ょ鍙兘鐨勬儏鍐�
涓や釜浜虹帺鐗岋紝棣栧厛涓や釜浜洪兘鎷垮嚭鑷繁鎵嬬墝鐨勬渶涓婇潰鐨勮繘琛屾嫾鐐癸紝涓ゅ紶鎷肩偣鐗屽皢閮界粰鎷肩偣璧㈠緱浜猴紝杩欎袱寮犵墝鏀惧叆鎵嬬墝鐨勯『搴忔槸锛氬厛鏀惧鏂圭殑鐗屽啀鏀捐嚜宸辩殑銆傝嫢鏈€鍚庢湁涓€涓汉娌℃湁鎵嬬墝浜嗭紝閭d箞浠栧氨杈撲簡锛屾眰杈撳嚭鎷肩偣鐨勬鏁板拰璧㈠緱浜虹殑缂栧彿锛屽鏋滀竴鐩存棤娉曠粨鏉熸瘮璧涳紝鍒欒緭鍑�-1.
鐢ㄩ槦鍒楁ā鎷熷嵆鍙€�

[CF546E] Soldier and Traveling - 鏈€澶ф祦

Description

\(n \le 100\) 涓煄甯傦紝\(m \le 200\) 鏉¤竟銆傜劧鍚庝汉鍙兘浠庤蛋鐩搁偦杈圭浉杩炵殑鍩庡競銆傜幇鍦ㄧ粰浣犲垵濮嬪煄甯傜殑姣忎竴涓汉鏁帮紝鍐嶇粰涓€缁勬瘡涓煄甯備汉鏁般€傝闂槸鍚﹀彲浠ヤ粠褰撳墠浜烘暟鍙樻崲鍒扮粰瀹氫汉鏁般€�

Solution

鐩存帴瀵瑰煄甯傛媶鐐逛负鍏ョ偣銆佸嚭鐐瑰悗璺戞渶澶ф祦

[CF551C] GukiZ hates Boxes - 浜屽垎,璐績

Description

鏈� n 涓綅缃紪鍙� 1 鍒� n锛岀 i 涓綅缃笂鏈� ai 涓瀛愶紝鏈� m 涓汉锛屽紑濮嬪湪 0 浣嶇疆锛屾瘡绉掗挓姣忎釜浜哄彲浠ラ€夋嫨鎼蛋鑷繁褰撳墠浣嶇疆涓婄殑涓€涓瀛愭垨鑰呭悜鍓嶈蛋涓€姝ワ紝闂嚦灏戦渶瑕佸灏戞椂闂磋兘鎶婃墍鏈夌瀛愭惉瀹屻€�

Solution

浜屽垎绛旀鍔犻獙璇侊紝鍋囪鏈� mid 绉掞紝涓€涓汉涓€涓汉鐨勫鐞嗭紝姣忎釜浜哄敖鍙兘鎷挎渶杩滅殑閭d釜绠卞瓙锛堝弽姝d竴瀹氫細鏈変汉鎷块偅涓紝鍏堟嬁涓嶄細鏇村姡锛�
姣斿鐜板湪鎴戜滑瀹夋帓涓€涓汉锛屾垜浠壘浜嗘渶杩滅殑绠卞瓙缁欎粬锛堝亣璁捐窛绂讳负 dist锛夛紝閭d箞浠栧凡缁忚姳璐逛簡 dist 鏃堕棿璧拌矾骞惰姳璐� 1 鏃堕棿鎼瀛愶紝鍓╀笅鐨勬椂闂村彲浠ョ敱杩滃埌杩戝鐞嗘帀鑻ュ共涓瀛�

Description

缁欏畾涓€涓彧鏈� +锛宍* 鍜屼竴浣嶆暣鏁版瀯鎴愮殑琛ㄨ揪寮忥紝浣犲彲浠ユ坊鍔犱竴瀵规嫭鍙凤紝浣垮緱杩欎釜琛ㄨ揪寮忕殑鍊兼渶澶с€俙* 鐨勪釜鏁颁笉瓒呰繃 \(15\)銆�

Solution

鏄剧劧 ( 涓€瀹氬嚭鐜板湪寮忓瓙鏈€宸﹁竟鎴栬€呮煇涓� * 鐨勫彸杈�
鏄剧劧 ) 涓€瀹氬嚭鐜板湪寮忓瓙鏈€鍙宠竟鎴栬€呮煇涓� * 鐨勫乏杈�
浜庢槸鎴戜滑鍙互鏆村姏鏋氫妇瑕佸皢鍝竴娈靛鎷彿锛岀劧鍚庣敓鎴愪竴涓柊鐨勮〃杈惧紡锛屾毚鍔涜绠楀嵆鍙�
鎵嬪啓琛ㄨ揪寮忚绠楀櫒澶儲浜嗭紝浜庢槸鐩存帴 Python

[CF558E] A Simple Task - 绾挎鏍�

Description

缁欏畾涓€涓暱搴︿笉瓒呰繃 \(10^5\) 鐨勫瓧绗︿覆锛堝皬鍐欒嫳鏂囧瓧姣嶏級锛屽拰涓嶈秴杩� 50000 涓搷浣溿€傛瘡涓搷浣� L R K 琛ㄧず缁欏尯闂� [L,R] 鐨勫瓧绗︿覆鎺掑簭锛孠=1 涓哄崌搴忥紝K=0 涓洪檷搴忋€�

Solution

绾挎鏍戯紝姣忎釜缁撶偣缁存姢鍖洪棿鍐� 26 涓瓧姣嶇殑鍑虹幇娆℃暟锛屽姣忔鎺掑簭鎿嶄綔鏆村姏閲嶆柊瑕嗙洊銆�

Description

缁欏畾涓€涓� \(H \times W\) 鐨勬鐩橈紝鏈� \(N\) 涓殰纰嶆牸瀛愶紝妫嬪瓙姣忔鍙互鍚戝彸鎴栬€呭悜涓嬬Щ鍔ㄤ竴姝ワ紝姹備粠宸︿笂瑙掑埌鍙充笅瑙掓湁澶氬皯绉嶄笉鍚岀殑璺嚎銆�\(N \le 2000\)

Solution

鐢变簬 \(N\) 杈冨皬锛岃€冭檻 dp锛岃 \(f[i]\) 琛ㄧず璧板埌绗� \(i\) 涓殰纰嶇偣锛堜笖涔嬪墠涓嶇粡杩囧叾瀹冧换浣曢殰纰嶇偣锛夌殑鏂规鏁帮紝鍒�

\[f[i]=g(x_i,y_i) - \sum_{j \to i} g(x_i-x_j+1,y_i-y_j+1 )\cdot f[j] \]

鍏朵腑 \(j \to i \Leftrightarrow x_j \le x_i \and y_j \le y_i\)锛�\(g(x,y)\) 琛ㄧず鏃犻殰纰嶆儏鍐典笅 \((1,1) \to (x,y)\) 鐨勬柟妗堟暟锛屾湁

\[g(x,y)=\binom {x+y-2}{x-1} \]

Description

缁欏畾 \([l,r]\)锛屾眰 \([l,r]\) 涔嬮棿鏈夊灏戜釜鏁版弧瓒冲畠鐨勪换鎰忔暟浣嶉兘鍙互鏁撮櫎瀹冩湰韬€�

Solution

\(f(i,j,k,full)\) 琛ㄧず浠庨珮鍒颁綆鑰冭檻鍒扮 \(i\) 浣嶆暟锛屽墠闈㈡瀯鎴愮殑鏁版ā \(2520=j\)锛屽墠闈㈣繖浜涙暟浣嶇殑 \(LCM\) 涓� \(k\)锛屽綋鍓嶆槸鍚﹁创鍚堜笂鐣岀殑鏂规鏁般€傛妸 \(k\) 绂绘暎鍖栦竴涓嬭妭绾︾┖闂淬€�
娉ㄦ剰鍙渶瑕佽褰� full=0 鐨勬儏鍐靛嵆鍙紝骞朵笖杩欎簺鎯呭喌鍙互鍦ㄥ悇缁勬暟鎹棿澶嶇敤锛屽洜姝ゅ氨瑕佹眰 \(i\) 瑕佸€掔潃璁板綍銆�

Description

缁欏畾涓€妫垫湁鏍规爲锛屾瘡涓粨鐐规湁涓€涓瓧姣嶏紝姣忎釜鐐圭殑娣卞害瀹氫箟涓哄埌 \(1\) 鍙风偣鐨勮矾寰勪笂鐨勭偣鐨勪釜鏁帮紝姣忔璇㈤棶 \(a,b\)锛屾煡璇互 \(a\) 涓烘牴鐨勫瓙鏍戝唴娣卞害涓� \(b\) 鐨勭粨鐐逛笂鐨勫瓧姣嶉噸鏂版帓鍒椾箣鍚庤兘鍚︽瀯鎴愬洖鏂囦覆銆�

Solution

鏉′欢绛変环浜庡鏁扮粨鐐逛釜鏁颁笉澶т簬 \(1\)
绂荤嚎澶勭悊锛屽皢璇㈤棶鎸傚湪 \(a\) 涓�
瀵逛簬姣忎釜瀛愭爲锛屾垜浠渶瑕佹眰鐨勬槸瀛愭爲鍐呭悇涓鑹茬粨鐐圭殑涓暟鍜�
鐢变簬璧蜂綔鐢ㄧ殑鍙湁濂囧伓鎬э紝鎴戜滑鍙互鐢ㄤ竴涓� 01 涓茶褰曠姸鎬侊紝鍔犲噺灏辨槸寮傛垨
鑰冭檻鎸� DFS 搴忓仛宸紝鎴戜滑鍙渶瑕佸湪杩涘叆瀛愭爲鐨勬椂鍊欒褰曚竴涓嬬姸鎬侊紝閫€鍑虹殑鏃跺€欏皢褰撳墠鐘舵€佷笌璁板綍寮傛垨涓€涓嬪嵆鍙�

Description

缁欏畾 \(n\) 涓暟锛岄棶鑳藉惁閫夊嚭涓€涓潪绌哄瓙闆嗕娇寰楀拰鑳借 \(m \le 10^3\) 鏁撮櫎銆�

Solution

姝g粡瑙f硶搴旇鏄厛瀹规枼鍘熺悊鍐嶈儗鍖呫€�
鍙槸鍐欎簡涓€鍙� bitset 鑳屽寘灏卞啿杩囧幓浜嗐€�

[CF587C] Duff in the Army - 鏍戜笂鍊嶅,STL

Description

鏈� n 涓煄甯傦紝鐢� n-1 鏉¤竟杩炴帴銆備袱涓煄甯備箣闂寸殑閬撹矾鏄敮涓€鐨勩€傛湁 m 涓汉锛屼綇鍦ㄨ繖 n 涓煄甯備腑锛岀幇鍦ㄧ粰鍑� m 涓汉鐢熸椿鐨勫煄甯傜紪鍙枫€備綘闇€瑕佸洖绛旓紝浠庝竴涓煄甯� u 鍒板彟涓€涓煄甯� v 鐨勮矾寰勪腑锛岀紪鍙峰墠 a 灏忕殑浜虹殑缂栧彿鏄摢浜涖€�

Solution

鏍戜笂鍊嶅澶勭悊璺緞闂锛岄噸杞界粨鐐瑰姞娉�

[CF598C] Nearest vectors - 璁$畻鍑犱綍

Description

鏈� n 涓偣锛屾瘡涓偣琛ㄧず鍘熺偣鍒拌鐐圭殑鍚戦噺锛岃浣犳眰鍑轰袱涓悜閲忔渶灏忕殑澶硅锛岃緭鍑哄悜閲忕殑搴忓彿銆�

Solution

鑰冭檻鏆村姏绠楀嚭鏋佽鐒跺悗鎺掑簭锛岀敤 atan2(y,x)

[CF5C] Longest Regular Bracket Sequence - 璐績,dp

Description

缁欏嚭涓€涓嫭鍙峰簭鍒楋紝姹傚嚭鏈€闀垮悎娉曞瓙涓插拰瀹冪殑鏁伴噺銆�

Solution

鑰冭檻璐績鍦伴澶勭悊鍑烘瘡涓嫭鍙峰尮閰嶇殑鏈€杩戜綅缃紝鍒╃敤鏍堟壂涓€閬嶅嵆鍙€�
鍦ㄥ鐞嗗嚭绗� \(i\) 涓瓧绗︾殑鍖归厤浣嶇疆 \(j\) 鍚庯紝鎴戜滑灏卞彲浠ョ敤杩欎竴娈电殑鍊煎幓鏇存柊绛旀锛岃 \(f[i]\) 琛ㄧず浠� \(i\) 缁撳熬鐨勫悗缂€鐨勬渶澶у尮閰嶉暱搴︽槸澶氬皯锛岄偅涔堝緢瀹规槗鍒╃敤涓婇潰鐨勪俊鎭潵杞Щ銆�

Description

缁欏畾涓€妫垫湁 \(n\) 涓粨鐐圭殑鏁帮紝浠� \(1\) 涓烘牴锛屾爲涓婄殑鐐圭殑棰滆壊涓� \(c[i]\)锛屽姣忎釜鐐癸紝姹備互鍏朵负鏍圭殑瀛愭爲鍐呯殑鎵€鏈変紬鏁扮殑鍜屻€�

Solution

dsu on tree锛岄鍏堥澶勭悊鍑烘瘡涓偣鐨勯噸鍎垮瓙 \(wson[p]\)銆傜劧鍚� dfs 鏁存5鏍戯紝澶勭悊 p 鐨勬墍鏈夊瀛愭椂锛屽厛璺宠繃閲嶅瀛愶紝鏈€鍚庡鐞嗛噸瀛╁瓙鏃讹紝淇濈暀鍏惰础鐚紝骞舵毚鍔涘姞涓婅交瀛╁瓙浠殑璐$尞锛屾渶鍚庡緱鍒版€昏础鐚€�

Description

鏈� \(n\) 鍫嗙煶瀛愶紝姣忔鍙互瀵逛竴鍫嗙煶瀛愯繘琛屾搷浣滐紝濡傛灉褰撳墠鐭冲瓙鏄伓鏁帮紝閭d箞鍙互閫夋嫨灏嗚繖 \(2x\) 涓煶瀛愬垎鎴� \(k\) 鍫嗙煶瀛愭暟涓� \(x\) 鐨勭煶瀛愬爢锛岃繕鏈変竴绉嶆病鏈夊墠鎻愮殑鎿嶄綔鏄彇璧板綋鍓嶅爢鐨勪竴涓煶瀛愶紝闂厛鎵嬭耽杩樻槸鍚庢墜璧€€�

Solution

鑻� \(x\) 涓哄伓鏁帮紝鍒� \(SG(x)=\text{mex}(\{ SG(\frac x 2)^k, SG(x-1) \})\)
鑻� \(x\) 涓哄鏁帮紝鍒� \(SG(x)=\text{mex} ( \{ SG(x-1) \} )\)
鍏堟毚鍔涜绠楀嚭 \(x \le 4\) 鐨勬儏鍐碉紝鍏朵綑婊¤冻
\(x\) 涓哄鏁版椂锛�\(SG(x)=0\)
\(x\) 涓哄伓鏁版椂锛岃嫢 \(k\) 涔熶负鍋舵暟锛屽垯 \(SG(x)=1\)锛岃嫢 \(k\) 鏄鏁帮紝鍒� \(SG(x)=\text{mex} (0,SG(\frac x 2))\)

[CF603R]

Description

缁欏畾 \(N \times N\) 鐨勬鐩橈紝涓や汉杞祦鏀炬瀛愩€傛瀛愮殑涓婁笅宸﹀彸鍥涗釜鏍煎瓙涓嶈兘鍐嶆斁妫嬪瓙銆備笉鑳芥搷浣滅殑浜鸿礋銆傚垽鏂儨璐熴€�

Solution

鐢ㄧ殑鏄緢甯歌鐨勬€濇兂銆�
濡傛灉 \(N\) 鏄伓鏁帮紝閭d箞鍚庢墜姘歌繙鍦ㄥ拰鍏堟墜瀵圭О鐨勪綅缃笅妫嬪氨涓€瀹氳兘璧€€�
濡傛灉 \(N\) 鏄鏁帮紝鍏堟墜鍦ㄤ腑蹇冧綅缃笅妫嬪苟灏嗚嚜宸卞彉涓轰笂涓€绉嶆儏鍐典腑鐨勫悗鎵嬶紝鍏堟墜鑳溿€�
浠庝竴涓簭鍒椾腑姣忔鍙栧嚭涓€涓洖鏂囦覆锛屾眰鏈€灏戝彇鍑犳锛堝彇鍑哄悗涓ょ澶栫殑鏁颁細鐩告帴锛�
璁� \(f[i][j]\) 涓哄湪闂尯闂� \([i,j]\) 鍙栧畬鎵€鏈夌殑鑺辫垂锛屽垯鏈� \(f[i][i]=1, f[i][i+1]=1+[a[i] \neq a[i+1]]\)
杞Щ鏂圭▼
\(f[i][j] = f[i+1][j-1], a[i]=a[j]\)
\(f[i][j] = min_{k=i}^{j-1} (f[i][k]+f[k+1][j])\)

Description

瀵规棤鍚戝浘姹傚叾涓瘡鏉¤竟蹇呴』琚€変腑鏃剁殑鏈€灏忕敓鎴愭爲銆�

Solution

鐜颁换鎰忔眰鍑轰竴妫垫渶灏忕敓鎴愭爲锛屽缓鏍戯紝鏍戜笂鍊嶅鏀寔璇㈤棶 LCA 鍜岄摼鏈€澶у€笺€�
濡傛灉閫夋嫨鐨勮竟鏄爲鏋濆垯鐩存帴杈撳嚭銆傚鏋滄槸寮︼紝鍒欑敤杩欐潯寮︽崲鎺夊搴斿熀鏈洖璺笂鐨勬澶у€硷紝鍗冲搴旀爲涓婅矾寰勪笂鐨勬渶澶у€笺€�
锛堝氨褰撳涔犱竴涓嬪啓鏍戜笂鍊嶅浜嗭級

Description

姹� \(\sum_{i=1}^m ( n \bmod i)\)锛�\(n,m \le 10^{13}\)

Solution

鑰冭檻浣垮緱 \([n/i]\) 鐩稿悓鐨勪竴娈� \(i\)锛岃涓� \([l,r]\)锛屽垯

\[\sum_{i=l}^r n \bmod i = n(r-l+1)-[\frac n l] (\frac {r(r+1)} 2 - \frac {l(l+1)} 2) \]

鍙互鍦� \(O(1)\) 鏃堕棿鍐呰绠楋紝鏁呮椂闂村鏉傚害 \(O(\sqrt n)\)
鍙栨ā鍧戯紒

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勫瓙搴忓垪 \(a\)锛屽啀缁欏畾涓€涓暟瀛� \(k\)锛岀粰鍑� \(m\) 缁勮闂紝姣忕粍璇㈤棶缁欏嚭涓€涓尯闂达紝闂湁澶氬皯鍖洪棿鐨勫紓鎴栧拰涓� \(k\)銆�

Solution

姹備竴涓尯闂寸殑寮傛垨鍜岋紝鏈川涓婂氨鏄眰鍓嶇紑鍜屽簭鍒椾腑涓や釜鏁扮殑寮傛垨锛屽綋鐒惰繖涓や釜鐐逛笉鑳介噸鍚�
浜庢槸鑰冭檻鑾槦锛屼笅闈㈠彧璁ㄨ鍓嶇紑鍜屽簭鍒楋紝鐢ㄦ《缁存姢鍖洪棿涓殑鎵€鏈夋暟锛屾坊鍔犳垨鍒犻櫎鏃堕『渚胯褰曚竴涓嬬瓟妗堝嵆鍙�
娉ㄦ剰鎴戜滑鍦ㄧ淮鎶ょ瓟妗堟椂锛岃淇濊瘉閫夋嫨鐨勬槸鏃犲簭瀵�

Description

瀹屽叏鍥句笂鏈変竴妫电敓鎴愭爲锛岀敓鎴愭爲涓婄殑鎵€鏈夎竟杈规潈涓� \(x\)锛屽叾瀹冭竟杈规潈涓� \(y\)锛屾眰鏈€鐭搱瀵嗛】鍥炶矾銆� \(n \le 200000\)

Solution

褰� \(x \ge y\) 鏃讹紝鏄剧劧璧� \(y\) 杈规洿浼橈紝浣嗗鏋滅敓鎴愭爲鏄釜鑿婅姳鍥惧垯蹇呴』瑕佽蛋涓€鏉� \(x\) 杈癸紝杩欑鎯呭喌瑕佺壒鍒ゆ帀
褰� \(x<y\) 鏃讹紝鎴戜滑甯屾湜灏藉彲鑳借蛋 \(x\) 杈癸紝杩欐椂灏卞彉鎴愪簡涓€涓爲涓婃渶灏忚鐩栫殑闂
鑰冭檻涓€涓椽蹇� DFS 鐨勮繃绋嬶紝姣忓埌杈句竴涓柊鐐� \(p\)锛屾垜浠煡閬撳畠鏈€澶氳兘鏈� \(2\) 搴︼紝璁惧墿浣欏害鏁颁负 \(2\)锛屽悜涓� DFS 鍒� \(q\)锛屾瘡涓� DFS 杩囩▼浼氳繑鍥炰竴涓€硷紝琛ㄧず璇ョ偣鏄惁杩樻湁鍓╀綑搴︽暟锛岄偅涔堝鏋� \(q\) 鏈夊墿浣欏害鏁帮紝鎴戜滑灏卞彲浠ュ湪 \(p,q\) 涔嬮棿鍔犺竟锛屼簨瀹炰笂涔熷彧闇€瑕佸皢 \(p\) 鐨勫墿浣欏害鏁� \(-1\)

[CF620E] New Year Tree - 绾挎鏍�,DFS搴�,浣嶈繍绠�

Description

缁欏嚭涓€妫� \(n\) 涓妭鐐圭殑鏍戯紝鏍硅妭鐐逛负 \(1\)銆傛瘡涓妭鐐逛笂鏈変竴绉嶉鑹� \(c_i\)銆�\(m\) 娆℃搷浣溿€傛搷浣滄湁涓ょ锛�

  • 1 u c锛氬皢浠� \(u\) 涓烘牴鐨勫瓙鏍戜笂鐨勬墍鏈夎妭鐐圭殑棰滆壊鏀逛负 \(c\)銆�
  • 2 u锛氳闂互 \(u\) 涓烘牴鐨勫瓙鏍戜笂鐨勬墍鏈夎妭鐐圭殑棰滆壊鏁伴噺銆�

    \(1\le n,m\le 4\times 10^5\)锛�\(1\le c_i,c\le 60\)

Solution

dfs 搴忚浆鍖栦负鍖洪棿闂锛岀嚎娈垫爲澶勭悊锛屾瘡涓粨鐐圭敤涓€涓� int64 瀛橀鑹诧紝瀛樻爣璁帮紝闇€瑕佹湁鏍囪涓嬩紶鍜岀粨鏋滀笂浼狅紝鏀寔鍖洪棿淇敼鍜屽尯闂磋闂�

Description

缁欏畾 \(d\)锛屽鏋滀竴涓暟浠庨珮寰€浣庢暟绗鏁颁綅閮芥槸 \(d\)锛岀鍋舵暟浣嶉兘涓嶆槸 \(d\)锛岄偅涔堣繖涓暟绉颁负 d-magic 鏁般€�
缁欏畾涓や釜闀垮害鐩哥瓑鐨勬暟 \(l,r\)銆傛眰 \([l,r]\) 涓湁澶氬皯涓� d-magic 鏁帮紝绛旀 \(\bmod 10^9+7\)銆�\(l,r\) 鐨勯暱搴� \(n \le 2000\)銆�

Solution

杞寲涓� \(f(r)-f(l-1)\) 鐨勮瘽杩樿鍋氫竴涓嬮珮绮惧害鍑忔硶锛屾瘮杈冮夯鐑︼紝鎵€浠ユ垜浠氨鐩存帴澶勭悊浜嗐€�
瀵逛簬姣忎釜鐘舵€侊紝缁存姢 \(pos\) 琛ㄧず褰撳墠鎵埌浠庡乏鍒板彸鐨勭 \(pos\) 浣嶏紝\(rem\) 琛ㄧず鍓� \(i\) 涓暟浣嶆瀯鎴愮殑鏁扮殑浣欐暟鏄� \(rem\)锛岀敤涓や釜鏍囪 \(tagl,tagr\) 琛ㄧず宸﹁竟鐣屽拰鍙宠竟鐣屾槸鍚﹀凡缁忎笌褰撳墠鏁板垎绂汇€�
杞Щ杩囩▼鏄剧劧鏄幓鏋氫妇褰撳墠鏁颁綅鐨勬墍鏈夊彲鑳藉彇鍊硷紝鐒跺悗閫掑綊鍋氫笅鍘汇€�

[CF653F] Paper task

Description

缁欏畾涓€涓嫭鍙峰簭鍒楋紝缁熻鍚堟硶鐨勬湰璐ㄤ笉鍚屽瓙涓茬殑涓暟銆�

Solution

寰堝鏄撴兂鍒帮紝鍙鍦ㄤ紶缁熺粺璁℃湰璐ㄤ笉鍚屽瓙涓茬殑鍩虹涓婁慨鏀逛竴涓嬪嵆鍙€�
鑰冭檻缁忓吀缁熻杩囩▼锛屽浜庣 \(i\) 涓悗缂€锛屽畠鐨勮础鐚负 \(n - sa[i] + 1 - h[i]\)
涔熷氨鎰忓懗鐫€锛屽畠浜х敓璐$尞鐨勫尯闂存槸 \([sa[i]+h[i], n]\) 銆傛崲瑷€涔嬶紝瀵逛换鎰� \(j \in [sa[i]+h[i], n]\) 锛� \(s[sa[i],j]\) 鏄竴涓瓟妗堛€�
閭d箞鎴戜滑鐜板湪灏辨槸瑕佸垽鏂繖浜涚瓟妗堜腑鏈夊灏戝悎娉曘€備篃灏辨槸瀵规煇涓� \(i\) 锛屾湁澶氬皯涓� \(j \in [sa[i]+h[i], n]\) 锛� 锛屾弧瓒� \(\sum_{k=sa[i]}^j a_k = sum[j]-sum[sa[i]-1]\) 涓� \(0\)銆� 杩欓噷 \(a_i\) 琛ㄧず鎷彿搴忓垪锛屽乏鎷彿瀵瑰簲 \(1\) 锛屽彸鎷彿瀵瑰簲 \(-1\) 銆�
涔熷氨鏄闂笅鏍囧湪 \(sa[i]+h[i]\) 鍙婁箣鍚庯紝 \(sum[k]=sum[sa[i]-1]\) 鐨� \(k\) 鏈夊灏戜釜銆�
鎸夋暟鍊兼彃杩涜嫢骞蹭釜 std::vector 鐒跺悗鏆村姏浜屽垎鍗冲彲銆�
浣嗚繖鏍蜂細蹇界暐閭d簺涓€斿嚭鐜板彸鎷彿姣斿乏鎷彿澶氱殑鎯呭喌銆傚洜姝わ紝瀵逛簬姣忎釜鍚庣紑锛屾垜浠湪缁熻鏃惰鎵惧埌鏈€杩滆兘鍒拌揪鐨勪綅缃紝鍗崇涓€涓皬浜庣瓑浜� \(sum[sa[i]-1]-1\) 鍑虹幇鐨勪綅缃紝鎴戜滑瑕佹妸杩欎釜浣嶇疆涔嬪悗鐨勭粨鏋滃噺鍘汇€傛毚鍔涙壂涓€閬嶏紝鏉冨€肩嚎娈垫爲缁存姢鍗冲彲銆�
鑰冭檻鏋氫妇琛屾搷浣滅姸鎬� \(i\)锛岃嫢鏈€� \(j\)锛屼笖璁�\(a_i\)琛ㄧず鍒濇€佷负\(i\)鐨勫垪鏁帮紝\(b_j\)涓烘湯鎬佷负\(j\)鐨勫垪鍙互鎻愪緵鐨勮础鐚紙缈昏浆鎴栬€呬笉缈昏浆锛岄澶勭悊鍑猴級锛屽垯绛旀涓�\(\sum a_{i \ xor \ j}b_j\)锛岃涓哄簭鍒�\(c_i = \sum_{j \ xor \ k=i} a_k b_j\)锛屼负鏍囧噯寮傛垨瀛愰泦鍗风Н锛孎WT鍗冲彲銆�
鍗风Н棰樻暟缁勮寰楀紑涓ゅ€�

Description

缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒� \(\{a_i\}\)锛岀粰瀹� \(k\)锛屾眰鏈夊灏戜釜瀛愪覆婊¤冻 \(\oplus_{i=l}^r a_i \ge k\)銆�

Solution

澶勭悊鍑哄墠缂€寮傛垨鍜屽簭鍒楋紝鏋氫妇 \(s_{l-1}\)锛岃姹� \(s_{l-1} \oplus s_r \ge k\)锛孴rie 鏍戜笂杈硅窇杈圭粺璁″嵆鍙�
鍏蜂綋鍦帮紝褰� \(k \oplus s_{l-1}\) 鐨勬煇涓€浣嶆槸 \(1\) 鐨勬椂鍊欙紝鎴戜滑鍙兘璧拌繖涓€杈癸紝鐩存帴缁х画寰€涓嬭蛋锛涘綋 \(k\) 鐨勬煇涓€浣嶆槸 \(0\) 鐨勬椂鍊欙紝\(1\) 鐨勬暣涓瓙鏍戜細浜х敓璐$尞锛屼簬鏄垜浠褰曡繖涓础鐚紝骞剁户缁線 \(0\) 鐨勯偅涓€杈硅蛋鍗冲彲
鍏蜂綋鍦帮紝褰� \(k\) 鐨勬煇涓€浣嶆槸 \(1\) 鏃讹紝鎴戜滑鍙兘璧颁笌 \(s_{l-1}\) 鐨勮繖涓€浣嶇浉鍙嶇殑閭d竴杈癸紝鐩存帴缁х画寰€涓嬭蛋鍗冲彲
褰� \(k\) 鐨勬煇涓€浣嶆槸 \(0\) 鐨勬椂鍊欙紝涓� \(s_{l-1}\) 鐨勮繖涓€浣嶇浉鍙嶇殑閭d竴杈圭殑鏁翠釜瀛愭爲閮戒細浜х敓璐$尞锛屼簬鏄垜浠褰曡繖涓础鐚紝骞剁户缁線鐩稿悓鐨勯偅涓€杈硅蛋鍗冲彲

[CF675C] Money Transfer - 鎬濈淮

Description

缁欎綘 n 涓摱琛屼腑鐨勫瓨娆撅紙璐熷€艰〃绀哄€熻捶锛夛紝鏄垚鐜殑锛�1 璺� n 鐩告帴锛岃繖 n 涓暟鐨勫拰涓� 0銆傚彲浠ヤ粠 i 鍚� i 鐨勭浉閭讳袱渚ц浆绉诲瓨娆撅紝闂綘鏈€灏戣浆绉诲灏戞锛屽彲浠ヨ鎵€鏈夐摱琛岀殑瀛樻閮戒负 0銆�

Solution

濡傛灉娌℃湁鎴愮幆鐨勬潯浠讹紝閭d箞鎴戜滑澶勭悊鍑哄墠缂€鍜屽簭鍒� s锛屽垯鎵€鏈� s=0 鐨勪綅缃彸杈瑰彲浠ヤ綔涓轰竴涓垎鍓茬偣锛屾瘡涓垎鍓茬偣鍐呭崟鐙鐞嗭紝绛旀鍗充负 n-鍒嗗壊鐐逛釜鏁般€�
鑰冭檻鍒版湁鎴愮幆鐨勬潯浠讹紝鐩稿綋浜庢垜浠彲浠ラ€夊彇浠绘剰涓€涓� s[i] 浣滀负闆剁偣锛屼簬鏄棶棰樹篃灏辫浆鍖栦负姹傚墠缂€鍜屽簭鍒椾腑鍑虹幇鏈€澶氱殑鏁板嚭鐜扮殑娆℃暟銆�

Description

缁欏畾姝f暣鏁� $ n $锛屾壘涓€涓渶灏忔鏁存暟 $ t $锛屼娇寰楀湪 $ t $ 鍐呮湁 $ n $ 缁勫叕姣斾负鏁存暟鐨勭瓑姣旀暟鍒楁垚绔嬶紝\(n \le 10^{15}\)

Solution

鍊掕繃鏉ユ樉鐒舵槸濂藉仛鐨勶紝鑰岀瓟妗堝張鏄崟璋冪殑锛岃€冭檻浜屽垎
妫€楠屾椂锛屾垜浠彲浠ユ灇涓惧叕姣旀潵璁℃暟

Description

缁欏畾涓€涓� \(n\) 涓偣鐨勫甫鏉冩湁鍚戝浘锛屾瘡涓偣鏈変笖浠呮湁涓€鏉″嚭杈癸紝瀵逛簬姣忎釜鐐圭敱瀹冨嚭鍙戣蛋 \(k\) 鏉¤竟锛屾眰杩� \(k\) 鏉¤竟鐨勬潈鍊煎拰锛屼互鍙婃渶灏忓€笺€�

Solution

鍊嶅

[CF703D] Mishka and Interesting sum - 绂荤嚎澶勭悊,鏍戠姸鏁扮粍

Description

缁欏畾 \(n\) 涓暟鐨勫簭鍒� \(a\)銆�\(m\) 娆℃搷浣溿€傛瘡娆℃眰 \(a_l,a_{l+1},...,a_r\) 涓紝鍑虹幇鍋舵暟娆$殑鏁扮殑寮傛垨鍜屻€�

Solution

鍗冲尯闂存湰璐ㄤ笉鍚屾暟鐨勫紓鎴栧拰涓庡尯闂村紓鎴栧拰鐨勫紓鎴栵紝鍏抽敭鏄眰鍖洪棿鏈川涓嶅悓鏁扮殑寮傛垨鍜�
鑰冭檻鍒� n 鏈� 1e6锛岃帿闃熻窇涓嶅姩浜嗭紝鑰冭檻绂荤嚎澶勭悊骞剁敤鏍戠姸鏁扮粍缁存姢寮傛垨鍜岋紝鍦ㄦ瘡涓暟鏈€鍚庝竴娆″嚭鐜扮殑鍦版柟鏀句笂杩欎釜鏁�

[CF705B]

Description

ICG 娓告垙鏈夎嫢骞蹭釜鐜紝姣忔鎿嶄綔灏嗕竴涓幆鏂垚闈炵┖鐨勪袱閮ㄥ垎锛岃妭鐐规暟鎬诲拰涓嶅彉銆傞泦鍚堝垵鎬佷负绌猴紝姣忔鍚戦泦鍚堜腑娣诲姞涓€涓幆锛岃闂綋鍓嶉泦鍚堢敤浜庢父鎴忕殑鑳滆礋銆� \(n \le 10^5, a_i \le 10^9\)

Solution

鑰冭檻姣忎釜鐜紝濡傛灉鎴戜滑灏嗘搷浣滃悗浜х敓鐨勭幆閮界湅浣滆繖涓幆鐨勪竴閮ㄥ垎锛岄偅涔堜竴涓幆涓€瀹氬湪琚搷浣� \(a_i - 1\) 娆″悗灏变笉鑳芥搷浣滀簡銆傛墍浠ュ彧闇€瑕佸垽鏂� \(\sum{a_i - 1}\) 鐨勫鍋跺嵆鍙€�

Code

Description

A,B 涓や汉鐜╀竴涓父鎴忥紝鍏辨湁 t 杞紝姣忚疆娌′汉闅忔満绛夋鐜囦粠 [-k,k] 涓€変竴涓暟瀛楀姞鍒版€诲緱鍒嗕腑锛屽垵鎬佷笅鍒嗗埆鏈� a,b 鍒嗭紝鏈€佷笅寰楀垎楂樿€呰儨鍒┿€傞棶 A 鑳滃埄鐨勬鐜� \(\times (2k+1)^2t\) 鐨勫湪妯� \(10^9+7\) 涓嬬殑鍊笺€�\(t \le 100, k\le 1000\)

Solution

璁剧 \(i\) 娆★紙姣忚疆绠椾袱娆★級鏃跺垎宸负 \(j\) 鐨勬鐜� \(\times (2k+1)^i\) 涓� \(f[i][j]\)锛屽垯

\[f[i][j]=\sum_{l=j-k}^{j+k} f[i-1][l] \]

鐢ㄤ竴涓嬪墠缂€鍜屽嵆鍙€�

Description

缁欎竴寮犳棤鍚戝浘瀹氬悜锛屼娇寰楁湁鏈€澶氱殑鐐规弧瓒冲叆搴︾瓑浜庡嚭搴︺€�\(T \le 200, n \le 200, m\le 20000\)

Solution

寤轰竴铏氱偣锛屽皢鎵€鏈夊搴︾偣涓庤櫄鐐归棿杩炶櫄杈癸紝鏋勯€犱竴鏉℃鎷夊洖璺紝鍒犲幓鎵€鏈夎櫄杈癸紝鍗冲緱
锛堝洜涓哄害鏁板繕璁版竻闆� WA 浜嗚嫢骞插彂锛�

Description

鏌愪汉鍦ㄨ捣鐐瑰锛屽埌缁堢偣鐨勮窛绂讳负 \(s\)銆傛苯杞︾璧佸叕鍙告彁渚� \(n\) 绉嶈溅鍨嬶紝姣忕杞﹀瀷鏈夊睘鎬� \(c_i\)锛堢杞﹁垂鐢級锛�\(v_i\)锛堟补绠卞閲忥級銆傝溅瀛愭湁涓ょ鍓嶈繘鏂瑰紡锛氣憼鎱㈤€燂細\(1km\) 娑堣€� \(1L\) 姹芥补锛岃姳璐� \(2\) 鍒嗛挓銆傗憽蹇€燂細\(1km\) 娑堣€� \(2L\) 姹芥补锛岃姳璐� \(1\) 鍒嗛挓銆傝矾涓婃湁 \(k\) 涓姞娌圭珯锛屾补閮芥槸鍏嶈垂鐨勶紝鍔犳补涓嶉渶瑕佽姳璐规椂闂达紝涓旂洿鎺ョ粰娌圭鍔犳弧銆傞棶鍦� \(t\) 鍒嗛挓鍐呭埌杈剧粓鐐圭殑鏈€灏忚姳璐规槸澶氬皯锛熻嫢鏃犳硶鍒拌揪缁堢偣锛岃緭鍑� \(-1\)銆�

Solution

鑰冭檻瀵逛簬涓€娈甸暱涓� \(len\) 鐨勫尯闂达紝璁炬參閫� \(x\)锛屽揩閫� \((len-x)\)锛屽垯

\[t=2x+len-x=x+len \\ v=x+2(len-x)=2len-x \Rightarrow x=2len-v \\ 0 \le x \le len \]

濡傛灉鐩存帴姹傝В寰楀嚭鐨� \(x > len\) 鍒欒鏄庢棤娉曢€氳锛屽鏋滅洿鎺ユ眰瑙g殑 \(x <0\)锛屾垜浠鍏朵负 \(0\) 鍗冲彲
瀵规墍鏈夌殑 \(t\) 姹傚拰锛屽鏋滄瘮缁欏畾鐨勫紑濮嬫椂闂村皬锛屽垯鍙
杩欐牱鎴戜滑灏卞緱鍒颁簡涓€涓� \(O(nk)\) 鐨勭畻娉�
鑰冭檻鍒拌垂鐢ㄦ湰韬苟娌℃湁浠€涔堢敤锛屾墍浠ユ垜浠彧闇€瑕佷簩鍒嗗嚭涓€涓渶灏忕殑锛屽彲浠ュ畬鎴愪换鍔$殑 \(v\)锛岀劧鍚庡浜庢墍鏈� \(v_i \ge v\) 瀵瑰簲鐨� \(c_i\) 鍙栨渶灏忓€煎嵆鍙�

[CF734E] Anton and Tree - 鏍戠殑鐩村緞

Description

缁欏畾 n 涓妭鐐圭殑鏍戯紝姣忎釜鐐逛负榛戣壊鎴栫櫧鑹诧紝涓€娆℃搷浣滃彲浠ヤ娇涓€涓浉鍚岄鑹茬殑杩為€氬潡鍙樻垚鍙︿竴绉嶉鑹诧紝姹備娇鏁存5鏍戝彉鎴愪竴绉嶉鑹茬殑鏈€灏戞搷浣滄暟銆�

Solution

灏嗗悓鑹茶繛閫氬潡缂╃偣鍚庯紝绛旀鏄剧劧绛変簬鏍戠殑鍗婂緞

Description

鏈変竴涓� $ n $ 涓妭鐐圭殑浜屽弶鏍戙€�

瑕佹眰姣忎釜鑺傜偣鐨勪袱涓効瀛愮殑瀛愭爲鏈€澶ф繁搴︾浉宸笉瓒� $ 1 \(锛屾眰鏈€澶ф繁搴︺€�<br> \) n <= 10^{18} $

Solution

鍊掕繃鏉ユ兂锛岃 \(f(x)\) 琛ㄧず娣卞害涓� \(x\) 鐨勮繖鏍风殑浜屽弶鏍戯紝鏈€灏戦渶瑕佸灏戜釜鐐�
鏄剧劧鏈� \(f(x)=f(x-1)+f(x-2)\)
杈圭晫鏉′欢 \(f(0)=1,f(1)=2\) 锛堢敱棰樻剰寮曞彂鐨勬暟鍊煎亸绉伙級
浜庢槸鎴戜滑閫掓帹鍑� Fib 鏁板垪鍗冲彲

[CF755B]

Description

涓や釜浜鸿疆娴佽鍗曡瘝锛屾瘡涓汉鍙兘璇磋嚜宸辩殑鐨勫崟璇嶅簱閲岀殑鍗曡瘝銆傝浠绘剰鏂硅杩囩殑鍗曡瘝涓嶈兘鍐嶈銆備竴涓崟璇嶅彧浼氬湪鏌愪釜浜虹殑鍗曡瘝搴撲腑鍑虹幇涓€娆★紝浣嗘槸鍙兘鍚屾椂鍑虹幇鍦ㄤ袱涓汉鐨勫崟璇嶅簱涓€傛渶鍏堟病鏈夊崟璇嶈鐨勪汉璐熴€傛眰娓告垙鐨勮儨璐熴€� \(n,m \le 1000, L_s \le 500\)

Solution

鏈€浼樼瓥鐣ュ繀鐒舵槸浼樺厛璇存帀鎵€鏈夊叕鍏卞崟璇嶏紝鐒跺悗鍐嶈闈炲叕鍏卞崟璇嶃€�
璁惧叕鍏卞崟璇嶇殑鏁伴噺涓� \(c\) 銆�
鑻� \(c\) 涓哄鏁帮紝閭d箞鏈€鍚庝竴涓鍑哄叕鍏卞崟璇嶇殑鏄厛鎵嬶紝姝ゆ椂鑻� \(n \ge m\) 鍒欏厛鎵嬭儨銆�
鑻� \(c\) 涓哄伓鏁帮紝閭d箞鏈€鍚庝竴涓鍑哄叕鍏卞崟璇嶇殑鏄悗鎵嬶紝姝ゆ椂鑻� \(n > m\) 鍒欏厛鎵嬭儨銆�

Code

Description

缁欏畾 \(n\) 涓帓鎴愪竴鎺掔殑涓€妯′竴鏍风殑鐞冿紝瑕佷粠涓€夊嚭涓€浜涚悆骞跺瀹冧滑杩涜鍒嗙粍锛屾瘡涓粍涓悆鐨勪釜鏁板彧鑳戒负 1,2锛屾眰鍙栧嚭 \(1,2,...,k \le 2^{16}\) 缁勭殑鏂规鏁板垎鍒负澶氬皯銆�

Solution

鑰冭檻 dp锛岃 \(f_{i,j}\) 琛ㄧず鑰冭檻浜嗗墠 \(i\) 涓悆骞朵笖宸茬粡鍙栧嚭浜� \(j\) 缁勭殑鏂规鏁般€�
绗竴绉嶈浆绉绘柟寮忔槸鏋氫妇鏈€鍚庝竴涓悆鐨勫幓鍚戯紝鏄剧劧鏈変笁绉嶏細涓㈠純锛屽崟鐙垚缁勶紝鍜屼笂涓€涓竴璧锋垚缁勶紝鍒欒浆绉绘柟绋嬩负

\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}+f_{i-2,j-1} \]

绗簩绉嶈浆绉绘柟寮忔槸锛岃€冭檻浠庝腑闂存柇寮€锛屽嵆灏� \(n\) 鎷嗗垎涓� \(a+b\)锛岄偅涔堝鏋滅 \(a,a+1\) 涓悆涓嶅湪鍚屼竴缁勶紝鍒欏彲浠ュ垎鎴愪簰涓嶇浉骞茬殑涓ょ粍鏉ュ鐞嗭紱濡傛灉鏄繛鐫€鐨勶紝鍒欏 \(1 \sim a-1, a+2 \sim a+b\) 鍒嗗埆澶勭悊锛岀粍鏁颁笂鍐嶅姞涓婁竴缁勫嵆鍙紝杞Щ鏂圭▼涓�

\[f_{a+b,i} = \sum_{j=1}^{i-1} f_{a,j}f_{b,i-j}+\sum_{j=1}^{i-2}f_{a-1,j}f_{b-1,i-j-1} \]

鑰冭檻杞寲涓哄椤瑰紡褰㈠紡锛岃 \(F_n(x)=\sum_{i=0}^k f_{n,i} x^i\)锛屽垯涓婅堪鏂圭▼鍙互杞寲涓�

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{a+b}(x)=F_a(x)F_b(x)+xF_{a-1}(x)F_{b-1}(x) \]

鑰冭檻浠� \(a=n,b=n\)锛屽垯绗簩绉嶈浆绉绘柟妗堢殑閫掓帹寮忔敼鍐欎负

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

鍚岀悊鏈�

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

鏁寸悊涓€涓嬶紝鎴戜滑鐜板湪鎷ユ湁鐨勫椤瑰紡褰㈠紡鐨勯€掓帹寮忔湁

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

浜庢槸鏄剧劧鎴戜滑闇€瑕佹瀯寤轰竴涓笁鍏冪粍 \(G_n = (F_n,F_{n-1},F_{n-2})\) 浣滀负涓€涓渶灏忕殑鍗曚綅銆�
鏍规嵁绗竴涓紡瀛愶紝鎴戜滑鍙互鍋氬埌 \(G_n \to G_{n+1}\)锛屾牴鎹悗涓変釜寮忓瓙鍙互鍋氬埌 \(G_n \to G_{2n}\)銆�
浜庢槸鎴戜滑鍙渶瑕佸 \(n\) 鍒嗚В涓€涓嬪嵆鍙€傚鏋滃綋鍓� \(n\) 鏄鏁伴偅涔堝氨 \(-1\) 骞朵笖娣诲姞涓€涓� \(G_n \to G_{n+1}\) 鎿嶄綔锛涘鏋滃綋鍓� \(n\) 鏄伓鏁伴偅涔堝氨 \(\div 2\) 骞朵笖娣诲姞涓€涓� \(G_n \to G_{2n}\) 鎿嶄綔銆傚惊鐜墽琛岀洿鍒� \(n=2\)锛屾渶鍚庢瀯閫犲垵濮嬬姸鎬佸苟鍊掑簭澶嶅師鎵€鏈夋搷浣滃嵆鍙€�

Description

骞抽潰涓婃湁 \(n\) 涓笌鍧愭爣杞村钩琛岀殑鐭╁舰銆傜煩褰㈢殑鎵€鏈夎竟鐨勯暱搴﹂兘鏄鏁般€傜煩褰笉鑳界浉浜わ紝浣嗗畠浠彲浠ヤ簰鐩告帴瑙︺€傛瀯閫犱竴绉嶆煋鑹叉柟妗堬紝浣垮緱鎵€鏈夌浉閭荤煩褰㈢殑棰滆壊閮戒笉鐩稿悓銆�

Solution

鑰冭檻鍒扳€滅煩褰㈢殑鎵€鏈夎竟鐨勯暱搴﹂兘鏄鏁扳€濊繖涓潯浠讹紝閭d箞濡傛灉涓や釜鐭╁舰鐩搁偦锛屼粬浠殑妯旱鍧愭爣濂囧伓鎬ц嚦灏戞湁涓€涓笉鍚屻€�
鍥犳鎴戜滑鏍规嵁涓€涓《鐐圭殑鍧愭爣鐨勫鍋舵€ф潵鏌撹壊鍗冲彲銆�

Description

缁欏嚭涓€涓叉湁灏忓啓瀛楁瘝缁勬垚鐨勯暱搴︿负 \(n \le 10^3\) 鐨勫瓧绗︿覆銆傛瘡涓皬鍐欏瓧姣嶉兘鏈夊搴斿€� \(a_i\)锛屽垎鍓插師涓诧紝瑕佹眰瀵瑰簲鍊间负 \(a_i\) 鐨勫瓧绗︿笉鑳藉嚭鐜板湪闀垮害瓒呰繃 \(a_i\) 鐨勫瓧涓蹭腑銆傞棶鍏辨湁澶氬皯绉嶅垎鍓叉柟寮忥紝鍒嗗壊鍚庝細鍑虹幇鐨勬渶闀垮瓙涓查暱搴︽槸澶氬皯锛岄噰鐢ㄦ渶灏戝垎鍓叉鏁扮殑鏂瑰紡锛屾渶灏戝垎鍓叉鏁版槸澶氬皯锛�

Solution

dp锛屽垎鍒涓夌璇㈤棶杩涜澶勭悊锛�\(O(n^2)\)

Description

\(n\) 绉嶇墿鍝侊紝姹備竴娆″彇涓€浠舵妸鎵€鏈夌绫诲彇閬嶇殑姒傜巼涓嶅皬浜庣粰瀹氬€� \(p/2000\) 鐨勬渶灏忓ぉ鏁般€�

Solution

璁� \(f[i][j]\) 琛ㄧず鍓� \(i\) 娆″彇鍑轰簡 \(j\) 绉嶇殑姒傜巼锛屽垯

\[f[i][j]=\frac j n f[i-1][j] + \frac {n-j+1} n f[i-1][j-1] \]

璁� \(m\) 涓轰竴瓒冲澶х殑鏁帮紙涓嶅Θ鍙� \(10^4\)锛夛紝鍒欏浜庢瘡涓闂紝鎵惧埌鏈€灏忕殑 \(k\) 浣垮緱 \(f[m][n] \ge p/2000\) 鍗冲彲
涓€鍏辨湁 \(N\) 涓鐩紝鍏朵腑鏈� \(M\) 涓富瑕佺鐩紝鍙 \(M\) 涓富瑕佺鐩兘閫氳繃浜嗭紝閭d箞瀵瑰簲涓讳汉鍏氨鍙互姣曚笟浜嗭紝涔熷氨鏄揪鎴愪簡鐩殑銆傜幇鍦ㄦ湁涓€涓垪琛紝琛ㄧず瑕侀€氳繃绗� \(i\) 闂ㄨ绋嬮渶瑕佸厛閫氳繃鐨勭鐩垪琛ㄣ€傜幇鍦ㄤ富浜哄叕甯屾湜寰楀埌涓€涓€氳繃绉戠洰鐨勯『搴忥紝浣垮緱鏈€缁堜粬閫氳繃鏈€灏戠殑绉戠洰浣垮緱涓讳汉鍏瘯涓氥€�

Solution

濡傛灉鏈夌幆锛屽垯鏃犺В
瀵逛簬姣忎釜涓荤鐩紝浠庤繖涓偣寮€濮嬶紝鍦ㄥ弽鍥句笂 DFS 鍗冲彲锛岄亣鍒板凡缁忔爣璁扮殑鐐瑰氨閫€鍑�
杈撳嚭鏃舵寜鐓ф嫇鎵戝簭杈撳嚭

Description

缁欏畾 \(n\) 涓暟瀛楋紝鍒嗗埆涓� \(2,3,...,n+1\)锛岃瀵规瘡涓暟瀛楁煋鑹诧紝浣垮緱涓€涓暟瀛楁槸鍙︿竴涓暟瀛楃殑璐ㄥ洜瀛愭椂锛屼袱涓暟瀛楃殑棰滆壊涓嶅悓锛屾渶灏忓寲浣跨敤鐨勯鑹叉暟銆傛眰鏌撹壊鏂规銆�

Solution

棣栧厛璇佹槑涓€瀹氬彲浠ョ敤涓ょ棰滆壊鏌撳畬銆備笉濡ㄧ敤绗竴绉嶉鑹叉煋鎵€鏈夌殑璐ㄦ暟锛岀敤绗簩绉嶉鑹叉煋鎵€鏈夌殑闈炶川鏁帮紝鏄剧劧婊¤冻鏉′欢銆�
鑰屽綋涓嶅瓨鍦ㄤ换鎰忎袱涓暟浣垮緱涓€涓暟鏄彟涓€涓暟鐨勮川鍥犲瓙鏃讹紝鍙互鐢ㄤ竴绉嶉鑹叉煋瀹屾墍鏈夌殑鏁般€傜敱浜庢暟瀛楁槸 \(2,3,4,...,n+1\)锛岃繖绉嶆儏鍐典細鍙戠敓锛屽綋涓斾粎褰� \(n \le 2\)銆�

Description

姣忔墖闂ㄨ涓や釜寮€鍏虫帶鍒讹紝鎿嶄綔涓€涓紑鍏冲皢鏀瑰彉鎵€鏈夊畠鎵€鎺у埗鐨勯棬鐨勭姸鎬併€傛眰鏄惁瀛樺湪涓€涓搷浣滄柟妗堬紝鎵撳紑鎵€鏈夌殑闂ㄣ€�

Solution

瀵逛簬寮€鍏宠鐘舵€侊紝\(1\) 琛ㄧず鎿嶄綔杩欎釜寮€鍏筹紝\(0\) 琛ㄧず涓嶆搷浣�
濡傛灉涓€鎵囬棬鐨勭姸鎬佹槸 \(1\)锛屽垯鎺у埗瀹冪殑涓や釜寮€鍏崇姸鎬佸繀椤荤浉鍚岋紙\(00/11\)锛�
濡傛灉涓€鎵囬棬鐨勭姸鎬佹槸 \(0\)锛屽垯鎺у埗瀹冪殑涓や釜寮€鍏崇姸鎬佸繀椤荤浉鍙嶏紙\(01/10\)锛�

鍥為【涓€涓� 2-SAT 鐨勫缓鍥炬柟娉�
璁炬湁 \(n\) 涓� \(x_i\)锛岄€昏緫绾︽潫涓轰竴涓富鍚堝彇鑼冨紡
姣忔潯杈� \(p \to q\) 琛ㄧず閫変簡 \(p\) 灏卞繀椤昏閫� \(q\)
鍥犳渚嬪瀵逛簬 \(i \or j\)锛屾垜浠繛杈� \(\neg i \to j\) 浠ュ強 \(\neg j \to i\)
鑰冭檻姣忎釜鍙橀噺
濡傛灉 \(x\to \neg x\)锛屽垯 \(x=0\)锛涘鏋� \(\neg x \to x\)锛屽垯 \(x=1\)锛涘鏋� \(x \to \neg x \and \neg x \to x\) 鍒欐棤瑙�
鍥犳锛屽鏋滀换鎰忎竴涓彉閲� \(x\) 涓� \(\neg x\) 鍦ㄥ悓涓€涓� SCC 涓紝鍒欐棤瑙o紝璺戜竴閬� Tarjan 鍗冲彲

鍥炲埌鏈锛岃鏌愰棬瀵瑰簲鐨勫紑鍏虫槸 \(p,q\)
濡傛灉闂ㄦ槸 \(1\)锛屽垯 \(p \to q, q \to p,\neg p \to \neg q,\neg q \to \neg p\)
濡傛灉闂ㄦ槸 \(0\)锛屽垯 \(p \to \neg q, q \to \neg p, \neg p \to q,\neg q \to p\)

[CF786B] Legacy - 绾挎鏍戜紭鍖栧缓鍥�,鏈€鐭矾

Description

鏈変笁绉嶆搷浣滐細1.杩涜鍗曠偣涓庡崟鐐硅繛鏈夊悜杈� 2.杩涜鍗曠偣涓庡尯闂磋繛鏈夊悜杈� 3.杩涜鍖洪棿涓庡崟鐐硅繛鏈夊悜杈广€傛眰鏈€鐭矾銆�

Solution

鍙戠幇娌℃湁鍖洪棿鍜屽尯闂达紝杩欐殫绀虹殑澶熸槑鏄句簡锛岀嚎娈垫爲浼樺寲寤哄浘鍗冲彲

Description

缁欏畾涓€妫垫爲锛屾爲涓婃湁涓€浜涚偣鏄叧閿偣銆備竴妫垫爲鏄悎娉曠殑褰撲笖浠呭綋鎵€鏈夌偣绂绘渶杩戠殑鍏抽敭鐐圭殑璺濈涓嶈秴杩� \(d\)锛屾眰鏈€澶氳兘鍒犻櫎澶氬皯鏉¤竟銆�

Solution

鑰冭檻浠庢墍鏈夌殑鍏抽敭鐐瑰紑濮� BFS銆傚亣璁惧綋鍓嶄綅浜庣偣 \(p\)锛屼笅涓€涓璁块棶鐨勭偣鏄� \(q\)锛岃嫢 \(q\) 琚闂繃鑰� \((p,q)\) 杩欐潯杈规湭琚闂繃锛屽垯杩欐潯杈瑰彲浠ヨ鍒犻櫎銆�

Description

缁欏嚭涓€涓瓧绗︿覆锛屾寜鐓т粠鍓嶅埌鍚庣殑椤哄簭杩涙爤锛岃緭鍑哄瓧鍏稿簭鏈€灏忕殑鍑烘爤搴忓垪

Solution

鏍堥《鍏冪礌姣旀湭鍏ユ爤鐨勬墍鏈夊厓绱犻兘灏忥紙涓嶄弗鏍硷級鏃舵墠鍑烘爤

Description

Mike 缁欏畾涓€涓� \(n\) 涓厓绱犵殑鏁存暟搴忓垪 \(A=[a_1,a_2,...,a_n]\)锛屾瘡娆℃搷浣滃彲浠ラ€夋嫨涓€涓� \(i (1 \le i<n)\)锛屽皢 \(a[i],a[i+1]\) 鍙樻垚 \(a[i]-a[i+1]\) 鍜� \(a[i]+a[i+1]\)銆傜幇鍦ㄦ兂瑕佺殑鏄� \(A\) 搴忓垪鎵€鏈夊厓绱犵殑鏈€澶у叕绾︽暟澶т簬 \(1\)锛岃璁$畻鏈€灏戠殑鎿嶄綔娆℃暟銆�

Solution

鍘熷搴忓垪鐨� GCD 涓� 1 鏃讹紝鎴戜滑鍙渶瑕佸皢鍏跺彉涓� 2
鑰冭檻涓や釜鏁板浣曞彉鎴愬叏鍋舵暟锛氫袱涓鏁伴渶瑕� \(1\) 娆℃搷浣滐紝涓€涓鏁颁竴涓伓鏁伴渶瑕� \(2\) 娆℃搷浣�
浜庢槸鎴戜滑鎶婂師搴忓垪鎻愬嚭濂囧伓鎬у悗锛屽厛鎵竴閬嶅鐞嗘帀鎵€鏈夌浉閭荤殑濂囨暟锛屽啀鎵竴閬嶅鐞嗘帀鎵€鏈変竴涓鏁颁竴涓伓鏁扮殑鎯呭喌鍗冲彲
鏃犺В鏄笉浼氭棤瑙g殑

[CF7D] Palindrome Degree - dp

Description

涓€涓暱搴︿负 n 瀛楃涓� s 琚彨鍋� k 闃剁骇鍥炴枃涓诧紝褰撲笖浠呭綋瀹冩湰韬槸涓€涓洖鏂囦覆锛岃€屼笖瀹冮暱搴︿负 n/2 鐨勫墠缂€鍜屽悗缂€閮芥槸 k-1 闃剁骇鍥炴枃涓层€備换浣曚竴涓瓧绗︿覆锛堝寘鎷┖瀛楃涓诧級閮借嚦灏戞槸 0 闃剁骇瀛楃涓层€傜幇鍦ㄧ粰瀹氫綘涓€瀛楃涓诧紝璇蜂綘姹傚嚭鍏舵墍鏈夊墠缂€鐨勭殑闃剁骇涔嬪拰銆�

Solution

璁� \(f[i]\) 琛ㄧず闀垮害涓� i 鐨勫墠缂€鐨勯樁鏁帮紝濡傛灉鏄洖鏂囩殑锛岄偅涔� \(f[i]=f[i/2]+1\)锛屽惁鍒� \(f[i]=0\)
鍒ゆ柇鍥炴枃鍙互鐩存帴 Manacher

Description

鐜板湪缁欏嚭 \(n\) 涓暟 \(a_{1},a_{2},鈥�,a_{n}\)锛�\(a_{i}\) 琛ㄧず鏃跺埢 \(i\) 鍑虹幇鐨勬暟銆傚畾涔� \(cnt_{x}(i)\) 琛ㄧず鍒� \(i\) 鏃跺埢 \(x\) 鍑虹幇杩囩殑涓暟銆侫lice 閫夋嫨浜嗕竴涓暟 \(m\)锛岃甯姪 Bob 閫夋嫨涓€涓暟 \(k\ne m\)锛屼娇寰楀浠绘剰鏃跺埢 \(i\)锛岄兘鏈� \(cnt_{k}(i) \ge cnt_{m}(i)\)銆傝嫢涓嶅瓨鍦ㄨ繖鏍风殑 \(k\) 璇疯緭鍑� \(-1\)銆�

Solution

缁存姢璁℃暟鍣紝缁熻鍒板綋鍓嶆椂鍒绘瘡涓暟瀛� \(x\) 鍑虹幇浜嗗灏戞
璁板綍褰撳墠鏃跺埢 \(m\) 鐨勪釜鏁颁负 \(now\)锛屽鏋滄煇涓� \(x\) 鍑虹幇鍦� \(m\) 鍚庨潰锛屼笖 \(cnt[x]<now\) 鍒� \(x\) 涓嶅悎娉曪紝婊¤冻杩欑鎯呭喌鎴戜滑灏变笉缁х画鍔犱簡
鏈€鍚庢壂涓€閬嶈鏁板櫒鍗冲彲

Description

缁欏畾鍙惈 ACTG 鐨勫瓧绗︿覆 S锛屾湁涓ょ鎿嶄綔锛岃涔堜慨鏀规煇涓瓧绗︼紝瑕佷箞璇㈤棶鍦ㄤ竴涓尯闂村唴锛屼笌璇㈤棶涓茬殑寰幆閲嶅鍖归厤鐨勫瓧绗︿釜鏁般€傝闂覆闀垮害涓嶈秴杩� 10銆�

Solution

璁� \(Seg[i][j][k]\) 琛ㄧず鐢ㄤ簬缁存姢涓嬫爣瀵� \(i\) 鍙栨ā锛屼綑鏁颁负 \(j\)锛屽瓧绗� \(k\) 鐨勫嚭鐜扮殑鍔ㄦ€佸紑鐐圭嚎娈垫爲
鏈変竴妫� \(n\) 涓妭鐐圭殑鏍戯紝涓€鍏� \(q\) 娆¤闂紝姣忔璇㈤棶缁欏畾 \(3\) 涓偣锛屾眰涓ゆ潯璧风偣缁堢偣鍦ㄨ繖涓変釜鐐逛笂涓斾笉瀹屽叏閲嶅悎鐨勮矾寰勭殑鏈€澶氬叕鍏辫妭鐐规暟銆�

Solution

鏋氫妇鍏叡鐐癸紝绛旀涓� \((dis(a,b) + dis(a,c) - dis(b,c)) / 2 + 1\)

[CF833B] The Bakery - dp,绾挎鏍�

Description

灏嗛暱 n 鐨勫簭鍒楀垎鎴� k 娈碉紝姣忔鐨勪环鍊间负鍖洪棿鍐呬笉鍚屾暟瀛椾釜鏁帮紝浣垮緱鎬讳环鍊兼渶澶с€�\(n \le 35000, k \le 50\)

Solution

\(f[i][j]=\max f[l][j-1]+C(l+1,i)\)
鐜板湪锛屽涓庢墍鏈夌殑 l锛屾垜浠凡缁忕煡閬� C(l+1,i-1)锛屾垜浠笇鏈涘揩閫熷緱鍒� C(l+1,i)
瀵逛簬涓€涓壒瀹氱殑 l锛屽鏋� \([l+1,i-1]\) 涓兘鎵惧埌 \(a[i]\)锛岄偅涔堟病鏈夎础鐚�
璁� \(a[i]\) 涓婃鍑虹幇鐨勪綅缃槸 \(last[i]\)锛岄偅涔� \([last[i],i-1]\) 鐨� l 浣嶇疆浼� +1
鎴戜滑鐢ㄧ嚎娈垫爲缁存姢锛堝褰撳墠鐨� i,j锛屾墍鏈� l锛�\(f[l-1][j-1]+C(l,i)\)锛屾瘡娆′慨鏀� \([last[i]+1,i]\)锛屾瘡娆℃煡璇㈡渶澶у€�
娉ㄦ剰鍦� dp 鏃讹紝鎴戜滑澶栧眰鏋氫妇 j锛屽唴灞傛灇涓� i锛岄偅涔堟瘡娆℃崲 j 鏃堕渶瑕佸紑涓€妫垫柊鐨勭嚎娈垫爲

[CF837D] Round Subset - dp

Description

缁欎綘涓€涓暱搴︿负 \(n\) 鐨勬暟鍒楋紝瑕佹眰浣犱粠涓€夊嚭 \(k\) 涓暟锛屼娇寰楄繖浜涢€夊嚭鐨勬暟鐨勭Н鐨勬湯灏� \(0\) 鐨勪釜鏁板ぇ銆�

Solution

璁� \(f[i][j][k]\) 琛ㄧず浠庡墠 i 涓暟涓€変簡 j 涓紝宸茬粡鏈変簡 k 涓� 5锛屾渶澶氳兘鏈夊灏戜釜 2

Description

缁欏畾涓€涓暱搴︿负 \(n\) 鐨勬暟鍒� \(a_i\)锛屾瘡涓暟浜掍笉鐩稿悓锛屾瘡杞細浠庡墿浣欑殑閮ㄥ垎涓彇鍑轰竴涓笅鏍囧簭鍒楀瓧鍏稿簭鏈€灏忕殑鍊间笂鍗囩殑瀛愬簭鍒椼€傛寜杞緭鍑哄彇鍑虹殑鏁板垪銆�

Solution

鍏堢鏁e寲涓€涓�
鏍稿績瑙傚療鏄細鍋囧鎴戜滑鍦� \([1,i]\) 涓瀯寤轰簡涓や釜搴忓垪锛岄偅涔堢粨鏉熶綅缃棭鐨勯偅涓簭鍒楃殑鏈熬鍏冪礌涓€瀹氭瘮鏅氱殑閭d竴涓澶�
杩欎釜瑙傚療鎻愪緵浜嗗彲浜屽垎鎬�
鎴戜滑浠庡乏鍒板彸鎵竴閬嶆暣涓簭鍒楋紝鍚屾椂鐢ㄤ竴涓� set 缁存姢鎵€鏈夌殑鏈熬鍏冪礌鍊硷紝姣忔鍦ㄦ湯灏惧厓绱犻泦鍚堥噷浜屽垎鏉ュ喅瀹氳繖涓厓绱犳帴鍦ㄦ煇涓殑鍚庨潰杩樻槸鍙﹀紑涓€涓�

Description

鏈� \(n\) 涓暱搴︿负 \(9\) 涓斿彧鍖呭惈鏁板瓧瀛楃涓� 浜掍笉鐩稿悓 鐨勪覆銆傞渶瑕佸浜庢瘡涓覆鎵惧埌涓€涓� 闀垮害鏈€鐭� 鐨勮瘑鍒爜锛屼娇寰楄繖涓瘑鍒爜鏄笖浠呮槸杩欎釜涓茬殑瀛愪覆銆�

Solution

瀛楀吀鏍戣В娉�

灏嗘瘡涓覆鐨勬墍鏈夊悗缂€鍔犲叆瀛楀吀鏍戜腑
鐒跺悗瀵逛簬姣忎釜涓诧紝璺戝畠鐨勬瘡涓瓙涓诧紝濡傛灉璺戝埌鏌愪釜浣嶇疆锛屽瓙鏍戜腑鍙墿涓嬩笌鑷繁鍚岀被鐨勶紝灏卞彲琛岋紝鏈€鍚庡鎵€鏈夊彲琛屽彇鏈€灏忓€�

map瑙f硶

鐢� map 淇濆瓨姣忎釜瀛愪覆鏄皝鐨勶紝濡傛灉鍚屾椂鏄袱涓互涓婄殑锛岃繖涓瓙涓插氨涓嶈兘鐢�
鏈€鍚庨亶鍘� map 瀵圭瓟妗堣繘琛屾洿鏂�
鏈変竴涓暱搴︿负n鐨勫簭鍒楋紝Alice鍜孊ob鍦ㄧ帺娓告垙銆侭ob鍏堟墜鎺屾彙鍐崇瓥鏉冦€�
浠栦滑浠庡乏鍚戝彸鎵暣涓簭鍒楋紝鍦ㄤ换鎰忔椂鍒伙紝鎷ユ湁鍐崇瓥鏉冪殑浜烘湁濡備笅涓や釜閫夋嫨锛�

灏嗗綋鍓嶇殑鏁板姞鍒拌嚜宸辩殑寰楀垎涓紝骞跺皢鍐崇瓥鏉冪粰瀵规柟锛屽鏂瑰皢鑾峰緱涓嬩竴涓暟鐨勫喅绛栨潈

灏嗗綋鍓嶇殑鏁板姞鍒板鏂圭殑寰楀垎涓紝骞跺皢鍐崇瓥鏉冧繚鐣欑粰鑷繁锛岃嚜宸卞皢鑾峰緱涓嬩竴涓暟鐨勫喅绛栨潈

鍋囧畾浠栦滑閮戒娇鐢ㄦ渶浼樼瓥鐣ワ紝姹備粬浠渶鍚庡垎鍒兘鑾峰緱澶氬皯鍒�

Solution

鑰冭檻鍒版棤鍚庢晥鎬э紝浠� \(f[i][0/1]\) 琛ㄧず 0/1 澶勭悊瀹屼簡鍓� \(i\) 涓暟锛屽厛鎵嬪拰鍚庢墜寰楀垎鐨勫樊
杞Щ鍗虫灇涓句笂涓€娆$殑浣嶇疆
\(f[i][1]=max(f[j][0] - a[j+1] - a[j+2] - ... +a[i])\)
\(f[i][0]=min(f[j][1] + a[j+1] + a[j+2] + ... -a[i])\)
鎹釜鎬濊矾锛岃 \(f[i]\) 涓轰粠 \(i\) 寮€濮嬪線鍚庨€夛紝鑳借幏寰楃殑鏈€澶ф敹鐩婏紝鎴戜滑鍙互鏉ュ喅绛栨瘡涓綅缃槸鍚︾炕闈�
\(f[i]=max(f[i+1], s[i]-f[i+1])\)
鍏朵腑 \(s[i]\) 鏄悗缂€鍜�

[CF86D] Powerful array - 鑾槦

Description

缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒� \(a\)锛屾湁 \(q\) 娆¤闂紝姣忔璇㈤棶缁欏嚭涓や釜鏁� \(l,r\)銆傚浜庢瘡娆¤闂紝璁� \(cnt_i\) 琛ㄧず \(i\) 鍦� \(a_l,a_{l+1},\cdots,a_r\) 鍑虹幇鐨勬鏁帮紝鎮ㄩ渶瑕佹眰鍑� \(\displaystyle\sum_i cnt_i^2\cdot i\)銆�\(1\le a_i\le 10^6\)

Solution

杩欑鍖洪棿闂寰堟樉鐒跺氨鏄帿闃熶簡锛屾瘡娆′慨鏀圭殑鏃跺€欐垜浠噺鍘诲師鏉ョ殑绛旀鍐嶅姞涓婃柊鐨�
鍙兘鍥犱负鐢ㄤ簡澶 vector 琚崱甯镐簡锛屼簬鏄姞浜嗕釜濂囧伓浜ゆ崲

include <bits/stdc++.h>

using namespace std;

define int long long

vector belong;

struct MoSolution
{
vector a;
int block_size;

struct Question
{
    int l, r, id;
    friend bool operator<(const Question &lhs, const Question &rhs)
    {
        if (belong[lhs.l] == belong[rhs.l])
            if (belong[lhs.l] & 1)
                return lhs.r < rhs.r;
            else
                return lhs.r > rhs.r;
        else
            return lhs.l < rhs.l;
    }
};

vector<Question> questions;

struct Bucket
{
    static const int maxn = 1e6 + 5;

    vector<int> cnt;
    int ans;

    Bucket()
    {
        cnt.resize(maxn);
        ans = 0;
    }

    void Add(int x)
    {
        ans += 2 * cnt[x] * x + x;
        cnt[x]++;
    }

    void Dec(int x)
    {
        cnt[x]--;
        ans -= 2 * cnt[x] * x + x;
    }
} bucket;

vector<int> ans;
int n, m;

void solve()
{
    cin >> n >> m;
    block_size = sqrt(n);

    a.resize(n + 2);
    belong.resize(n + 2);

    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
        belong[i] = i / block_size;

    questions.resize(m + 2);
    ans.resize(m + 2);

    for (int i = 1; i <= m; i++)
    {
        cin >> questions[i].l >> questions[i].r;
        questions[i].id = i;
    }

    sort(&questions[1], &questions[m + 1]);

    int l = 1, r = 0;

    for (int i = 1; i <= m; i++)
    {
        int ql = questions[i].l, qr = questions[i].r;

        while (r < qr)
            bucket.Add(a[++r]);
        while (l > ql)
            bucket.Add(a[--l]);

        while (r > qr)
            bucket.Dec(a[r--]);
        while (l < ql)
            bucket.Dec(a[l++]);

        ans[questions[i].id] = bucket.ans;
    }

    for (int i = 1; i <= m; i++)
    {
        cout << ans[i] << endl;
    }
}

};

signed main()
{
MoSolution solution;
solution.solve();
}

Description

缁欏畾涓€涓暱搴︿负 \(n (n \le 2\times 10^5)\) 鐨勬暟鍒� \(a_i\)锛屾眰婊¤冻鍖洪棿 \(OR\) 澶т簬鍖洪棿鏈€澶у€肩殑鍖洪棿鐨勪釜鏁般€�

Solution

娉ㄦ剰鍒板尯闂存垨姘歌繙涓嶄細灏忎簬鍖洪棿鏈€澶у€�
浜庢槸杞寲涓烘眰鍖洪棿鎴栫瓑浜庡尯闂存渶澶у€肩殑鍖洪棿涓暟
鏋氫妇鏈€澶у€煎厓绱� \(a_p\)锛岀粨鍚堥澶勭悊寰楀埌鍏舵帶鍒剁殑锛堜笅鏍囷級鍖洪棿 \([l,r]\)
姝ゆ椂鎴戜滑闇€瑕佸緱鍒板畠鍚戝乏/鍚戝彸鑳芥墿灞曠殑鏈€澶ч暱搴�
鑰冭檻鍒板崟璋冩€э紝鍒╃敤 ST 琛ㄥ嵆鍙�

Description

鏈変竴 \(N \times M\) 鐨勮糠瀹紝# 鏄锛宍.` 鏄矾锛屼竴绉掗挓鍙互鍚戝洓涓柟鍚戜腑鐨勪竴涓Щ鍔� \(1 \sim k\) 姝ワ紝姹備粠璧风偣鍒扮粓鐐圭殑鏈€鐭椂闂淬€�\(N,M,k \le 1000\)銆�

Solution

姝e父 BFS 鍗冲彲瑙e喅锛屽叧閿槸鑰冭檻鍒版瘡涓偣鍙細鍏ラ槦涓€娆★紝杩欐牱淇濊瘉浜嗘椂闂村鏉傚害銆�
涓昏鏄娉ㄦ剰涓€涓嬪嚑涓壀鏋濇潯浠躲€�
缁欏嚭涓€涓� n 涓偣 m鏉¤竟鐨勬棤鍚戝浘锛屾瘡鏉¤竟鏈夎竟鏉冿紝鍏� Q娆¤闂紝姣忔缁欏嚭 \(k\)鏉¤竟锛岄棶杩欎簺杈硅兘鍚﹀悓鏃跺湪涓€妫垫渶灏忕敓鎴愭爲涓娿€�

Solution

鎵€鏈夋渶灏忕敓鎴愭爲涓煇鏉冨€肩殑杈圭殑鏁伴噺鏄竴瀹氱殑
鍔犲畬灏忎簬鏌愭潈鍊肩殑鎵€鏈夎竟鍚庡浘鐨勮繛閫氭€ф槸涓€鏍风殑
瀵逛簬姣忎釜璇㈤棶锛屾瘡绉嶆潈鍊煎垎寮€鑰冭檻
瀵规瘡涓潈鍊硷紝鍔犲畬灏忎簬杩欐潯杈圭殑鏉冨€煎悗鐨勬墍鏈夎竟
鐒跺悗鍒ゆ柇杩欎釜鏉冨€煎湪缂╃偣鍚庡浘涓婃槸鍚︽垚鐜�
鍥犳闇€瑕佽窇涓€娆� Kruskal 骞朵笖璁板綍涓嬪浜庢瘡鏉¤竟锛屽姞瀹屾潈鍊煎皬浜庡畠鐨勬墍鏈夎竟鍚庯紝鍏朵袱涓鐐规墍鍦ㄧ殑杩為€氬潡缂栧彿
杩欐牱璇㈤棶鏃跺彧闇€瑕佹嬁鐫€骞舵煡闆嗘悶灏卞彲浠ヤ簡

[CF903D] Almost Difference

Description

瀹氫箟鍑芥暟 \(d(x,y)=\begin{cases}y-x,\text{if }|x-y| >1\\0,\text{if }|x-y|\le 1\end{cases}\)锛岀粰瀹氶暱搴︿负 \(n\) 鐨勫簭鍒� \(a\)锛屾眰 \(\sum_{i=1}^n\sum_{j=i+1}^n d(a_i,a_j)\)

Solution

鍏堢粺璁″嚭鎵€鏈夌殑鍚庨」鍑忓墠椤圭殑鍜岋紝鐒跺悗鑰冭檻鍑忓幓鎵€鏈� \(x-y \le 1\) 鐨勬儏鍐碉紝鍏蜂綋鍦帮紝鎵弿姣忎竴涓� \(i\)锛屽浜庡叾宸﹁竟鐨� \(j\)锛屽姞涓婂叾涓� \(a_j = a_i+1\) 鐨勪釜鏁帮紝鍐嶅噺鍘诲叾涓� \(a_j = a_i-1\) 鐨勪釜鏁�

Description

缁欏畾涓€涓覆锛屾瘡杞繘琛屽涓嬫搷浣滐細濡傛灉涓€涓瓧绗︾殑鐩搁偦瀛楃涓瓨鍦ㄤ笌瀹冧笉鍚岀殑锛屽垯杩欎釜瀛楃琚€変腑锛岄€夊ソ鎵€鏈夊瓧绗﹀悗灏嗚繖浜涘瓧绗﹀悓鏃跺垹闄わ紝璇ヨ疆缁撴潫銆傞棶鎿嶄綔澶氬皯娆″悗鏃犳硶鍐嶅垹闄や换浣曠偣銆�

Solution

灏嗙浉鍚岀殑杩炵画娈靛悎骞舵垚涓€涓粨鐐癸紝鐢ㄩ摼琛ㄧ淮鎶�
姣忔閬嶅巻鎵€鏈夎妭鐐癸紝澶村熬鍊� -1锛屼腑闂村€� -2锛屽鏋滄煇涓妭鐐瑰€� \(\le 0\) 浜嗗氨鍒犻櫎瀹�
锛堝 stl::list 杩樻槸涓嶇啛鎮夛級

Description

缁欎綘涓€涓暱搴︿负 \(N\) 鐨勫簭鍒楋紝鏈� \(M\) 娆℃搷浣溿€傛瘡娆$炕杞� \([l,r]\) 鐨勫尯闂达紝姣忔鎿嶄綔鍚庤闂簭鍒楅€嗗簭瀵逛釜鏁扮殑濂囧伓鎬с€�

Solution

缈昏浆涓€涓瓙鍖洪棿涓暟涓哄伓鏁扮殑鍖洪棿锛岄€嗗簭瀵逛釜鏁板鍋舵€т笉鍙�
缈昏浆涓€涓瓙鍖洪棿涓暟涓哄鏁扮殑鍖洪棿锛岄€嗗簭瀵逛釜鏁板鍋舵€ф敼鍙�

[CF915D] Almost Acyclic Graph - 鎷撴墤鎺掑簭

Description

缁欏畾鏈夊悜鍥� \(n \le 500, m \le 10^5\)锛屾渶澶氬垹鍘讳竴鏉¤竟鏄惁鑳戒娇寰楄繖涓浘鍙樻垚鏈夊悜鏃犵幆鍥撅紵

Solution

鐩磋浣嗛夯鐑︾殑鎯虫硶锛氶殢渚挎壘涓€涓幆锛屾毚鍔涙灇涓惧垹闄ょ幆涓婄殑涓€鏉¤竟锛屽啀妫€楠�
鑰冭檻鏋氫妇璁╂煇涓偣鍒犲幓涓€鏉¤竟锛屼絾鏄笉鐢ㄧ湡鐨勫垹锛屽彧闇€瑕佹妸瀹冪殑鍏ュ害 -1 鍗冲彲锛岃繖鏍风浉褰撲簬鍒犲幓浜嗕换鎰忎竴鏉★紝璁╄繖涓偣鏇存棭鍦扮О涓烘嫇鎵戞帓搴忚繃绋嬩腑鐨勫彲閫夌偣
鏈変竴涓� DAG锛屾瘡鏉¤竟涓婃湁涓€涓皬鍐欒嫳鏂囧瓧姣嶈〃绀烘潈鍊硷紝Alice 鍜� Bob 姣忎汉鏈変竴涓瀛愶紝鍚勬斁鍦ㄤ竴涓妭鐐逛笂锛堝彲浠ユ斁鍦ㄥ悓涓€涓妭鐐逛笂锛夈€傜涓€杞� Alice 鍙互娌夸竴鏉¤竟鎶婃瀛愮Щ鍒颁竴涓浉閭荤殑鑺傜偣涓婏紝涔嬪悗 Bob 娌夸竴鏉¤竟绉诲姩妫嬪瓙锛屼互姝ょ被鎺ㄣ€傝鍒欒瀹氭瘡涓€娆$Щ鍔ㄧ粡杩囩殑杈圭殑 ASCII 鐮佸崟璋冧笉闄嶃€備笉鑳借蛋鐨勪汉杈撱€傚浜庢墍鏈夌殑鍒濆浣嶇疆锛屼袱浜洪兘鎸夋渶浼樼瓥鐣ワ紝闂皝浼氳耽銆�\(n\leq 100\)

Solution

璁� \(f[i][j][k]\) 琛ㄧず鍏堟墜浣嶄簬 \(i\)锛屽悗鎵嬩綅浜� \(j\)锛岃竟鏉冧负 \(k\) 瀵瑰簲鐨勮儨璐熸儏鍐�
瀵逛簬 \(i\) 鎵€鏈夊嚭鐐� \(q\)锛岀姸鎬佽浆绉讳负 \(f[j][q][w]\)
濡傛灉鑷冲皯瀛樺湪涓€涓� \(q\) 浣垮緱 \(f[j][q][w]\) 涓� \(0\)锛岄偅涔� \(f[i][j][k]\) 涓� \(1\)锛屽惁鍒欎负 \(0\)

Description

缁欏畾鏁存暟 \(x\)锛屾眰鏈夊灏戜釜姝f暣鏁� \(n\) 婊¤冻 \(1 \le n \le x\) 涓� \(na^n \equiv b \bmod p\)锛�\(p \le 10^6 + 3\) 涓旀槸涓€涓川鏁帮紝\(x \le 10^{12}\)銆�

Solution

\(n\) 鍥犲瓙鐨勫惊鐜懆鏈熶负 \(p\)锛�\(a^n\) 鍥犲瓙鐨勫惊鐜懆鏈熶负 \(p-1\)
锛堢敱浜庢ā璐ㄦ暟涔樻硶鏋勬垚寰幆缇ゆ弧瓒虫秷鍘诲緥锛屽叾杩愮畻琛ㄧ殑浠绘剰琛屽垪涓哄厓绱犲叏鎺掑垪锛�

\[n \equiv ba^{-n} (\bmod p) \]

鏋氫妇 \(n\)锛岃 \(\delta = n-ba^{-n} \bmod p\)锛屽垯 \(n'=n+(p-1)\delta\) 鎵嶆槸绗竴涓纭殑 \(n\)
浜庢槸杩欎竴姝ヨ础鐚� \([\frac {x-n'} {p(p-1)}]\)
鏈塶涓汉鍦ㄩ槦鍒椾腑绛夊緟銆傚亣濡傛煇涓汉鍓嶉潰鏈変竴涓汉骞撮緞姣斾粬灏忥紝閭d粬灏变細涓嶉珮鍏达紱瀹氫箟浠栫殑鈥滀笉楂樺叴搴︹€濅负浠栧墠闈㈢暀浠栨渶杩滅殑骞撮緞姣斾粬灏忕殑浜轰笌浠栫殑璺濈锛屾眰姣忎釜浜虹殑涓嶉珮鍏村害銆� n<=10^5

Solution

鏉冨€肩嚎娈垫爲

[CF936B] Sleepy Game - DFS,BFS

Description

鏈夊悜鍥句笂鎸囧畾涓€涓捣鐐广€傝嫢瀛樺湪涓€鏉″埌鍙跺瓙璺濈涓哄鏁扮殑璺緞锛堟敞鎰忚繖閲岀殑璺緞涓嶄竴瀹氭槸鏈€鐭矾寰勶級锛屽垯蹇呰儨銆傝嫢涓嶅瓨鍦紝浣嗘槸鍙互鍒拌揪涓€涓洖璺紝鍒欏彲浠ュ钩灞€銆備笂杩颁袱绉嶉兘涓嶈兘杈惧埌锛屽垯澶辫触銆�

Solution

杩欓噷瀹為檯涓婃槸涓や釜闂

  • 鏄惁瀛樺湪涓€鏉″埌鍙跺瓙璺濈涓哄鏁扮殑璺緞
  • 鏄惁鑳借蛋鍒颁竴涓幆

瀵逛簬闂 1锛屾垜浠敤鍥� dp 鐨勬柟娉曞仛锛屽嵆寤虹珛鍒嗗眰鍥剧劧鍚� BFS锛屽叿浣撳湴锛屽浘鍒嗕负濂囧眰鍜屽伓灞傦紝璧风偣鍦ㄥ伓灞備笂锛岃繛杈规案杩滃湪鐩搁偦灞備腑杩�
瀵逛簬闂 2锛孌FS 涓€閬嶏紝濮嬬粓鏍囪鏍堜腑缁撶偣锛屽鏋滆兘璧板洖鏍堜腑缁撶偣锛岄偅涔堝氨鏈夌幆

Description

缁欏畾涓や釜姝f暣鏁� \(n,m(m鈮)\)锛屽浜庝竴涓� \(n\) 闃� \(0-1\) 鏂归樀锛� 鍏朵换鎰� \(m\) 闃跺瓙鏂归樀涓嚦灏戞湁涓€涓厓绱� \(鈥�0鈥�\)锛屽垯鍙互姹傝В杩欎釜鏂归樀涓殑 \(鈥�1鈥�\) 鐨勬渶澶ф暟鐩€傜幇姹傝В杩欎釜闂鐨勯€嗗悜闂锛氬凡鐭ヨ繖涓渶澶ф暟鐩负 \(X\)锛屾眰鐩稿簲鐨� \(n\) 鍜� \(m\)銆�

Solution

璁炬硶璁╂瘡涓� \(0\) 琚厖鍒嗗湴鍒╃敤
浜庢槸 \(n,m,x\) 婊¤冻鍏崇郴

\[n^2-\lfloor\frac n m \rfloor^2=x \]

浠� \(t=\lfloor n/m \rfloor\)锛屽垯

\[(n+t)(n-t)=x \]

鏋氫妇 \(x\) 鐨勬墍鏈夊垎瑙� \(x=ab\)锛岄偅涔� \(x\) 鍙互鍒嗚В涓哄钩鏂瑰樊褰撲笖浠呭綋 \(a,b\) 鐨勫鍋舵€х浉鍚岋紝姝ゆ椂

\[n=\frac{a+b} 2, \ t=\frac{a-b} 2 \]

濡傛灉鎴戜滑鎵惧埌浜嗚繖涓垎瑙� \(n,t\)锛屽垯鍙渶瑕佸瓨鍦ㄤ竴涓� \(m\) 浣垮緱 \(t=\lfloor n/m \rfloor\) 鍗冲彲锛屾垜浠彧闇€瑕佸亣璁� \(m=n/t\) 鍒ゆ柇涓€涓嬫槸鍚﹀彲琛屽嵆鍙�
鍦� \(n\) 涓煄甯傚紑婕斿敱浼氾紝杩� \(n\) 涓煄甯傜殑浜洪兘鎯冲幓鍚紨鍞变細锛屾瘡涓煄甯傜殑绁ㄤ环涓嶅悓锛屼簬鏄繖浜涗汉灏辨兂鏄惁鑳藉幓鍏朵粬鍩庡競鍚紨鍞变細鏇翠究瀹滐紙鍘诲洖閮借璺垂锛�

Solution

璁炬紨鍞变細涓� \(0\) 鍙风偣
杩炶竟 \(0 \to i\)锛屽浜庝竴瀵瑰彲杈剧殑鍩庡競锛岃繛杈� \(u \leftrightarrow v\)
璺戞渶鐭矾鍗冲彲
\(n\) 涓偣鐨勫畬鍏ㄥ浘鏍囧彿 \((0-n-1)\)锛�\(i\) 鍜� \(j\) 杩炶竟鏉冨€间负 \(i\ \textrm{XOR}\ j\)锛屾眰 MST 鐨勫€�

Solution

璁� \(f[n]\) 琛ㄧず鐐规暟涓� \(n+1\) 鏃剁殑绛旀锛岄偅涔堣椽蹇冨湴鑰冭檻锛屾樉鐒� \(f[0]=0, f[n]=f[n-1]+lowbit(n)\)
鏍规嵁瑙傚療鏄撳緱 \(f[n]=2f[n-1]+2^n-2^{n-1}\)锛屽悓鏃剁敱浜� \(f[]\) 灏辨槸涓� \(lowbit\) 鐨勫墠缂€鍜岋紝婊¤冻鍙姞鎬э紝鎵€浠ョ洿鎺ュ \(n\) 浜岃繘鍒跺垎瑙e苟缁熻绛旀鍗冲彲

Description

鎵惧埌涓€涓暟鍒楋紙闀垮害涓嶈秴杩� \(10^4\)锛夛紝浣垮緱鏈変笖浠呮湁 \(x\) 涓潪绌哄瓙鏁板垪涓厓绱犳瀬宸皬浜� \(d\)锛屾垨鑰呭垽瀹氫笉瀛樺湪銆�

Solution

鑰冭檻濡備綍璁╁悗鍔犵殑瀛愬簭鍒椾腑鐨勬暟涓嶄細褰卞搷鍒板墠闈㈢殑锛屽彧闇€瑕佸姞涓€涓� \(d\)锛屽氨鍙互褰㈡垚鏂扮殑涓€缁�
浜庢槸鎴戜滑闇€瑕佸皢鑷鍒楁媶鎴愯嫢骞蹭釜浜掍笉鐩稿共鐨勭粍锛屾瘡缁勫唴鍙栦竴涓浉鍚岀殑鍊�
瀵逛簬涓€涓惈鏈� \(n\) 涓厓绱犵殑缁勶紝瀹冪殑璐$尞鏄� \(2^n-1\)
鍋囧杩欎釜璐$尞鏄� \(2^n\) 灏卞彲浠ョ洿鎺ヤ簩杩涘埗鍒嗚В鍋氫簡
閭d箞鎴戜滑寮鸿琛ヤ竴涓ぇ灏忎负 \(1\) 鐨勭粍锛岃繖鏍峰氨鍙互褰撳仛瀹冩槸 \(2^n\) 浜�

Description

缁欏畾涓€妫垫棤闄愬眰鐨勬弧浜屽弶鏍戯紝濡傛灉 \(x\) 鏄牴锛岄偅涔堝乏瀛╁瓙鏄� \(2x\)锛屽彸瀛╁瓙鏄� \(2x+1\)銆傜幇鍦ㄦ湁涓夌鎿嶄綔锛氬皢 \(x\) 鎵€鍦ㄥ眰鐨勬墍鏈夎妭鐐规暣浣撳悜鍙冲惊鐜Щ鍔� \(k\) 涓崟浣嶏紱灏� \(x\) 鎵€鍦ㄥ眰鐨勬墍鏈夎妭鐐瑰強鍏跺瓙鏍戞暣浣撳悜鍙冲惊鐜Щ鍔� \(k\) 涓崟浣嶏紱杈撳嚭 \(x\) 鍒版牴鐨勮矾寰勩€�

Solution

瀹為檯涓婏紝鐢变簬璁块棶鍒扮殑灞傛暟涓嶄細瓒呰繃 \(63\)锛屾垜浠彧闇€瑕佹毚鍔涜褰曟瘡涓€灞傝寰幆绉诲姩鐨勬鏁板嵆鍙€傚浜庣涓€绉嶆搷浣滀慨鏀瑰綋灞傚嵆鍙紱瀵逛簬绗簩绉嶆搷浣滀慨鏀瑰叾鍚庣殑鎵€鏈夊眰鍗冲彲銆�
瀵逛簬璇㈤棶锛屾垜浠彧闇€瑕佸弽瑙e嚭瀹為檯浣嶇疆锛屽氨寰楀埌浜嗚矾寰勪笂鎵€鏈夌偣鐨勪綅缃紝鍐嶆妸浣嶇疆鎹㈢畻鍥炰笅鏍囧嵆鍙€傛湰璐ㄤ笂锛屾垜浠彧闇€瑕佹彁渚涗綅缃拰涓嬫爣涔嬮棿鐨勬崲绠楀嵆鍙€�
缁欎綘涓€寮� \(n\) 涓偣 \(m\) 鏉¤竟鐨勫甫鏉冩湁鍚戝浘锛屽彲鑳芥湁閲嶈竟鍜岃嚜鐜€傝竟浼氭寜鐓ч『搴忕粰鍑恒€傝浣犳眰鍑轰竴鏉$粡杩囪竟鏁版渶澶氱殑璺緞锛屼娇寰楄矾寰勪笂鐨勮竟婊¤冻杈规潈鍜屽嚭鐜扮殑鏃堕棿涓ユ牸閫掑銆傝矾寰勫彲浠ラ噸澶嶇粡杩囧悓涓€涓偣銆�

Solution

鎸夐『搴忓鐞嗘墍鏈夎竟锛屽浜庢瘡涓偣缁存姢浠ヨ繖涓偣缁撳熬锛岀粨灏捐竟鏉冧负 \(?\) 鏃剁殑鏈€澶ч暱搴�
瀵逛簬 \((u,v,w)\)锛屾壘鍑� \(u\) 鐨勭粨灏捐竟鏉冧负 \([0,w-1]\) 鏃剁殑鏈€澶ч暱搴︼紝鎷垮幓鏇存柊 \(v\) 鐨勭粨灏捐竟鏉冧负 \(w\) 鏃剁殑鏈€澶ч暱搴﹀嵆鍙�
鏄剧劧鎴戜滑鍙互鐢ㄥ姩鎬佸紑鐐规潈鍊肩嚎娈垫爲缁存姢杩欎竴鍒�
鑰冭檻鍒版垜浠瘡娆¤闂殑閮芥槸 \([0,?]\) 鐨勬渶澶у€硷紝姣忔淇敼涔熷彧浼氳绛旀鏇村ぇ锛屾墍浠� \([0,?]\) 鐨勭瓟妗堟槸鍏充簬 \(?\) 鍗曡皟鐨�
鍥犳鎴戜滑鍙互灏嗘潈鍊肩嚎娈垫爲鎹㈡垚涓€涓� std::map锛岃〃绀虹粨灏捐竟鏉�-鏈€澶ч暱搴︾殑浜屽厓鍏崇郴锛屽苟涓旀垜浠彧淇濈暀閭d簺鍗曡皟鐨勫叧绯�

Description

缁欎竴涓ぇ灏忎负 \(n\) 鐨勬暟缁勶紝灏嗘暟鍊煎垎缁勶紝姣忎釜缁勭浉褰撲簬鍊煎煙鐨勪竴涓瓙鍖洪棿锛屼竴涓粍鍐呯殑鏁板瓧鏋佸樊涓嶈秴杩� \(k\)銆傚帇缂╁悗锛屼竴涓粍鐨勬暟瀛楅兘浼氬彉鎴愯繖涓粍涓殑鏈€灏忓€笺€傛眰瀛楀吀搴忔渶灏忕殑鎯呭喌銆�
渚嬪

4 3
2 14 3 4

鐨勭粨鏋滀负 0 12 3 3

Solution

鑰冭檻璐績锛岄『搴忔灇涓炬瘡涓€涓� \(i\)锛屽浜� \(a_i\)锛屽湪鍊煎煙涓紝浠� \(a[i]\) 鍊掑簭鎵惧垎缁�
濡傛灉鎵惧埌浜嗗垎缁勶紝鑰冭檻杩欎釜鍒嗙粍鑳藉惁瀹瑰緱涓� \(a[i]\)锛屽鏋滃寰椾笅鍒欏皢 \(a[i]\) 鍒嗚繘鍘伙紝鍚﹀垯鍙﹀紑涓€缁�
濡傛灉娌℃壘鍒板垎缁勶紝鍒欏彟寮€涓€缁�### Description
缁欏畾闀垮害涓� \(n\) 鐨勫簭鍒楋紝鏈� \(q\) 鏉℃搷浣滐紝姣忔潯鎿嶄綔涓哄皢鍖洪棿 \([l,r]\) 鍔犱笂 \(x\)銆傚簭鍒楀垵濮嬮兘涓� \(0\)銆傞棶鏈夊灏戜釜 $ k \in [1,n]$ 婊¤冻鑳戒粠 \(q\) 鏉℃搷浣滀腑閫夊嚭鑻ュ共鏉℃搷浣滃悗浣垮緱搴忓垪鐨勬渶澶у€间负 \(k\)銆�

Solution

濡傛灉鑳芥湁鏂规浣垮緱鏌愪釜浣嶇疆鐨勫€煎彉鎴� \(k\)锛屽氨涓€瀹氬瓨鍦ㄦ柟妗堜娇寰楁渶澶у€煎彉涓� \(k\)銆�
鑰冭檻涓€涓毚鍔涳紝瀵逛簬姣忎釜浣嶇疆鍒嗗埆鑰冭檻鏄惁鑳戒娇瀹冨彉涓� \(k\)锛岃 \(f[i][j]\) 琛ㄧず鍓� \(i\) 鏉℃搷浣滀腑閫夊彇鑻ュ共鎿嶄綔鏄惁鑳戒娇寰楄浣嶇疆鐨勫拰鍙樹负 \(j\)锛岀敤 Bitset 浼樺寲锛屾€绘椂闂村鏉傚害 \(O(\frac 1 w n^2 q)\)
鑰冭檻绾挎鏍戝垎娌伙紝灏� \(q\) 鏉℃搷浣滀腑鐨勬瘡涓尯闂存媶鍒嗘寕鍦ㄧ嚎娈垫爲鐨勮嫢骞茬粨鐐逛笂锛岀劧鍚庡皢绾挎鏍� DFS 涓€閬嶏紝杩囩▼涓埄鐢ㄧ粨鐐逛笂鎸傜殑鍖洪棿鏉ヤ慨鏀癸紝鍘嗗彶璁板綍鐢ㄦ爤瀛樺偍锛岃繖鏍峰洖婧椂鍙互鎾ら攢锛屽埌杈惧彾瀛愮粨鐐规椂鍗冲彲寰楀埌褰撶粨鐐圭殑绛旀銆傛瘡娆′慨鏀圭殑澶嶆潅搴︿负 \(O(\frac 1 w n)\)锛屾渶澶氭湁 \(O(q \log n)\) 涓媶鍒嗗悗鐨勫尯闂达紝鏁呮€绘椂闂村鏉傚害涓� \(O(\frac 1 w nq \log n)\)銆�

[CF988E] Divisibility by 25 - 璐績

Description

缁欏嚭涓€涓粠 1 鍒� 10^18 鐨勬暣鏁� n锛屼笉鍖呭惈鍓嶅闆躲€傚湪涓€娆$Щ鍔ㄤ腑锛屽彲浠ヤ氦鎹换鎰忎袱涓浉閭绘暟瀛楋紝浣垮緱缁撴灉鏁板瓧涓嶅寘鍚墠瀵奸浂銆傝幏鍙栧彲琚� 25 鏁撮櫎鐨勬暟瀛楁墍闇€鐨勬渶灏忕Щ鍔ㄦ鏁版槸澶氬皯锛�

Solution

灏遍偅涔堝嚑绉嶆儏鍐�

  • 鎶� 5 鍐掓场鍒版渶鍚庯紝鎶� 2 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 5 鍐掓场鍒版渶鍚庯紝鎶� 7 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 0 鍐掓场鍒版渶鍚庯紝鎶� 5 鍐掓场鍒板€掓暟绗簩浣�
  • 鎶� 0 鍐掓场鍒版渶鍚庯紝鎶婂彟涓€涓� 0 鍐掓场鍒板€掓暟绗簩浣�

鎴戜滑鍙互鍏堝皾璇曟€у湴鍋氫竴涓嬶紝濡傛灉鎹㈠畬浠ュ悗鏈夊墠瀵奸浂锛岄偅涔堝啀寮鸿鎵句竴涓渶宸﹁竟鐨勯潪闆舵暟瀛楁崲鍒板墠闈㈡潵锛屽鏋滄崲瀹屼互鍚庣偢浜嗛偅涔堣繖绉嶆儏鍐靛氨鏃犳晥
鍙互璇佹槑鍏堟妸闈為浂鏁板瓧鎹㈠埌鍓嶉潰锛屽拰鍏堟妸鏈夋晥鏁板瓧鎹㈠埌鍚庨潰锛屽緱鍒扮殑绛旀鏄竴鏍风殑
鎵惧埌鏈€闈犲彸鐨勪袱涓垜浠鎵剧殑鏁板瓧锛屼笅鏍囦负 i,j锛屽亣璁炬垜浠殑鐩爣鏄妸 j 鎹㈠埌鏈€鍚庯紝i 鎹㈠埌鍊掓暟绗簩涓綅缃�
濡傛灉鍙湁 i,j 涓や釜鏁板瓧锛岀殕澶ф鍠滐紙杩欐椂 i,j 涓嶅彲鑳介兘鏄� 0锛�
濡傛灉闄や簡 i,j 澶栫殑绗竴涓暟瀛楁槸 0锛屾垜浠鎵惧埌绗竴涓潪闆剁殑鏁板瓧锛屽鏋滄壘鍒颁簡璁板綍瀹冪殑涓嬫爣 k锛屽鏋滄病鎵惧埌鐩存帴缁撴潫
鐜板湪鎴戜滑鏄妸 j 鎹㈠埌鏈€鍚庯紝i 鎹㈠埌鍊掓暟绗簩涓綅缃紝濡傛灉鏈夌殑璇濓紝鎶� k 鎹㈠埌绗竴涓綅缃�
杩欎釜杩囩▼涓紝浼氬嚭鐜扮殑鍩虹璐$尞涓� n-j+n-1-i+k-1
鑰冭檻鐩镐簰浣滅敤瀵艰嚧鐨勯檮鍔犺础鐚紝濡傛灉 \(k>i\) 鍒欓檮鍔犺础鐚紝濡傛灉 \(k>j\) 鍒欓檮鍔犺础鐚紝濡傛灉 \(i>j\) 鍒欓檮鍔犺础鐚�
鏈� n 涓獞澹兂鍐虫垬銆傛瘡涓獞澹兘鏈夎兘鍔涘€硷紙浜掍笉鐩稿悓锛夛紝涓旇韩涓婂甫鏈変竴浜涢噾甯併€傚鏋滈獞澹� A 鐨勮兘鍔涘€煎ぇ浜庨獞澹� B 锛岄偅涔堥獞澹� A 灏卞彲浠ユ潃姝婚獞澹� B 锛屽苟鑾峰緱楠戝+ B 韬笂鐨勬墍鏈夐噾甯併€備絾灏辩畻鏄獞澹篃涓嶄細娈嬪繊杩囧害锛屼粬浠渶澶氬彧浼氭潃姝� k 涓獞澹€傚浜庢瘡涓€浣嶉獞澹紝璇蜂綘姹傚嚭鍦ㄦ潃鎺夋墍鏈変粬鑳芥潃鐨勪汉锛堝彧鏈変粬鑳芥潃浜哄埆浜轰笉鍔級鍚庝粬韬笂閲戝竵鐨勬渶澶у€笺€�

Solution

娉ㄦ剰鍒扳€滀簰涓嶇浉鍚屸€濊繖涓急鍖栨潯浠讹紝鑰冭檻瀵硅兘鍔涘€间粠灏忓埌澶ф帓搴忥紝閭d箞姣忎釜楠戝+鑳戒笖鍙兘鏉€浠栧墠闈㈢殑浜恒€傛墍浠ュ姩鎬佺淮鎶ゅ墠 \(k\) 澶у拰灏卞ソ浜�
锛堥鎰忔湁鐐圭浠欙級
鏈� \(n\) 搴у煄甯傚拰 \(m\) 鏉″崟鍚戦亾璺紝涓轰簡鑳借棣栭兘鑳藉鍒拌揪鎵€鏈夌殑鍩庡競锛屾渶灏戦渶瑕佹柊淇缓澶氬皯鏂扮殑鍗曞悜閬撹矾锛�

Solution

绛旀涓虹缉鐐瑰悗鐨勫垎閲忓浘涓櫎 \(S\) 鎵€鍦ㄥ垎閲忓鍏ュ害涓� \(0\) 鐨勫垎閲忔暟

-- coding:utf-8-

import os
import os.path
import time
time1=time.time()

def MergeTxt(filepath,outfile):
k = open(filepath+outfile, 'a+')
for parent, dirnames, filenames in os.walk(filepath):
for filepath in filenames:
txtPath = os.path.join(parent, filepath)
f = open(txtPath,encoding="utf-8")
k.write(f.read()+"\n")

k.close()

if name == 'main':
filepath="./"
outfile="result.md"
MergeTxt(filepath,outfile)
time2 = time.time()

Description

给定一个 \(n\) 个点 \(m\) 条边的无向图,找到两个点 \(s,t\),使得 \(s\)\(t\) 必须经过的边最多。

Solution

边双内的边显然都不是关键边,否则必是,于是缩点后求直径即可

[CF1006F] Xor-Paths

Description

给出一个 n × m 的网格,每个格子上有权值 \(a[i][j]\),要从 (1,1) 走到 (n,m),每次只能向右或向下走,沿路计算异或和,求异或和等于 k 的路径数。

Solution

双向 BFS,由于要走的总步数为 \(steps=n+m-2\),正着走 \(steps/2\),反着走 \((steps+1)/2\),然后合起来用 map 算答案即可

Description

我们将一个无向图称作互质图,当且仅当对于其中每一条边 \((v, u)\)\(v\)\(u\) 互质(也即 \(GCD(v,u)=1\))。当两个顶点之间没有边时不需要考虑。顶点从 \(1\) 开始标号。
现在给你 \(n\) 个顶点和 \(m\) 条边,要求你建立一个无重边和自环并且连通的互质图,或者判定无法构造。

Solution

设将每条边描述为 \((u,v)\),满足 \(u<v\),那么我们从小到大枚举 \(u\),再从小到大枚举 \(v\),能连就连
复杂度与 \(\varphi\) 函数的前缀和有关,不妨将其视作 \(O(n \log n)\)

给你一个 \(n \times m\) 的矩形,一开始有 \(q\) 个格子上被标记。对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记。问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记。

Solution

行和列分别对应二分图的左部右部,格子对应边,那么我们只需要手动使得二分图连通,通过自动标记的操作就可以得到完全二分图
于是答案为连通块数量 \(-1\)

Description

已知一个 \(n×m\) 的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出"NO",否则输出"YES"和矩阵。

$ n,m \leq 100 $

Solution

将前 \((n-1)(m-1)\) 设为 \(0\),只通过最后一个 \(L\) 型来构造

Description

给你一个长度为 \(n\) 的数列,初始全部为 \(0\) ,你可以任意(任选区间)进行 \(q\) 次操作,第 \(i\) 次操作使 \([l_i,r_i]\) 内的数全部变为 \(i\) ,你必须进行全部 \(q\) 次操作,且每个操作区间都不能为空,所有操作区间的并必须为 \([1,n]\)。现在给你一个数列,其中 \(0\) 代表这个位置可以是任何数,问你能否通过上述的 \(q\) 次操作得到这个数列。输出方案。

Solution

以下 \(m\) 即为题面中的 \(q\)

无解的判定

如果两个数之间存在比它们小的数,则无解
如果序列中不存在值为 \(m\) 的数,则无解

解的构造

考虑为 \(0\) 的位置需要怎样处理

如果数列中没有 \(m\),则优先填 \(m\)

如果某个位置的左侧右侧同时存在 \(x\),则该位置 \(\ge x\),换言之我们在这个位置需要取它左边右边都有的数中的最大值

否则填 \(1\)

如何维护

考虑维护一个 std::set,在某个数第一次出现时 insert(x),最后一次出现时 erase(x)
那么我们每次取 *s.rbegin() 即可

[CF1025D] Recovering BST - 区间dp

Description

给定一棵二叉搜索\(n \le 700\) 的所有点权,构造二叉树满足任意两个直接相邻的点的权值的 GCD 不是 1

Solution

这种关于二叉搜索树中序遍历的 DP 问题,设状态时忽略根而考虑区间,因为这个区间作为一个子树,它的父亲一定是区间左端点的左边的点或者区间右端点的右边的点
\(f[i][j]\) 表示以 \([i,j-1]\) 作为 j 的左孩子是否合法
\(g[i][j]\) 表示以 \([i+1,j]\) 作为 i 的右孩子是否合法
转移时,考虑一个区间 \([l,r]\),枚举它的根 \(k\),需要满足 \(f[i][k]\) 并且 \(g[k][j]\)
如果此时 \(k\)\(l-1\) 相连是合法的,那么就可以转移到 \([l-1,r]\)
如果此时 \(k\)\(r+1\) 相连是合法的,那么就可以转移到 \([l,r+1]\)
总之,设状态时设的是“半棵子树”的合法性,转移时首先考虑一个区间可能有哪些根,然后分别考虑这些点为根时,向外的转移情况

Description

给定两个集合 \(A,B\),要求在任意时刻 \(A\) 中元素小于 \(B\) 中元素。每次操作可以添加一个元素 \(x\) 到任意一个集合(由程序来选择)或者删除一个元素 \(x\),保证添加的元素互不相同,删除的元素一定存在,并要求删除的元素必须是 \(A\) 的最大值或者 \(B\) 的最小值。求方案数。

Solution

每次删除操作会对前面所有的添加操作产生某种限制。
假设本次删除 \(x\),那么前面所有小于 \(x\) 的元素都必须被加入 \(A\),大于 \(x\) 的元素都必须被加入 \(B\),等于 \(x\) 的元素,如果 \(x\) 小于 \(A\) 的最大值则必须被加入 \(A\),大于 \(B\) 的最小值则必须被加入 \(B\),否则可以任意选择,总方案数 \(\times 2\)
但最后一次删除后还可能有若干添加操作,对于这些添加操作,我们在删除其中小于 \(A\) 的最大值、大于 \(B\) 的最小值者后,剩余的元素可以任取分割界,左侧加入 \(A\) 右侧加入 \(B\)。假设元素一共有 \(c\) 个,则答案 \(\times (c+1)\)

Description

给出一个在二维平面直角坐标系第一象限内的,单位长度为 \(1\) 的无限大网格,每条直线都代表道路。又给你一条直线 \(ax+by+c=0\),也代表一条道路。

现在给你两个格点 \(A,B\) 坐标 \((x1,y1)\)\((x2,y2)\),让你求该两点间最短的道路距离。

Solution

求矩形交点后再求距离
(又把 fabs 写成 abs
(以及关错了流同步被迫害

Description

给你 \(n\) 个数,去掉尽量少的数使得剩下数的最大公约数比原来的大。无解输出 \(-1\)

Solution

首先将所有数除以最大公约数
\(M=\max a_i\),维护一个桶 \(b[]\),对每个 \(i\),在 \(b[a[i]]\)\(+1\)
枚举 \([1,M]\) 中的所有质数 \(p\),考虑让最大公约数乘以 \(p\),代价就是我们需要删去所有的 \(a_i\) 满足 \(p|a_i\),于是我们枚举所有 \(p\) 的整数倍 \(q\),统计所有 \(b[q]\) 的和,就是 \(p\) 的答案
最后对所有 \(p\) 的答案取最小值即可
复杂度是 \(\sum_{p \leq M} M/i\),由于收敛较快,可以接受

判断能否整除即可

CF 题解汇总 如果自己是回文串可以做中心 如果一个串和另一个串的转置相等则可以凑一对 优先配对

Description

定义一个数字是好数,当且仅当它的十进制表示下有不超过 $ 3 $ 个数字 $ 1 \sim 9 $。给定 $ [l,r] $,问有多少个 $ x $ 使得 $ l \le x \le r $,且 $ x $ 是好数。$ 1 \le l_i \le r_i \le 10^{18} $

Solution

常规的数位 dp,设 \(f[i][j]\) 表示前 \(i\) 个数位,有 \(j\) 个非零数位时,有多少个数满足条件

Description

给你一个长度为 \(n\) 的整数序列,你可以对其做两种操作:

  • \(i!=j\),将 \(a_j\) 替换为 \(a_i\cdot a_j\),删除 \(a_i\)
  • 选一个未被删除的 \(a_i\),将其删除。该操作在任意时刻均可执行,最多执行一次

你需要操作 \(n-1\) 次,剩下一个数,使其最大。由于剩下的数可能会很大,你需要输出任意一种得到它的操作序列。

Solution

分类讨论

  • 如果负数的个数是偶数

  • 如果没有 \(0\),取绝对值处理即可

  • 如果有 \(0\),将所有 \(0\) 乘在一起,消去,剩下的取绝对值处理即可

  • 如果负数的个数是奇数

  • 如果没有 \(0\),消去一个绝对值最小的负数,剩下的取绝对值处理即可

  • 如果有 \(0\),先将所有 \(0\) 乘在一起,再将绝对值最小的负数乘到 \(0\) 上,消去这个 \(0\),剩下的取绝对值处理即可

Description

\(N\) 个点,求与 \(y=0\) 相切的,包含这 \(N\) 个点的最小圆的半径。

Solution

考虑二分半径,现在要检验 \(r\) 是否可行,显然对于每个 \((x_i,y_i)\) 我们可以计算出 \(d=\sqrt {r^2 - (y_i-r)^2}\),则区间 \([x_i-d, x_i+d]\) 是可行的,我们只需要验证所有区间是否有交即可。

Description

现在有 $ N $ 个人,每一个人都不想周围的人坐得离他很近,所以在他的左边要放 $ L_i $ 张椅子,右边要放 $ R_i $ 张椅子,现在他们要坐成若干个圈,请问最少要放多少张椅子。

Solution

左右手数目分别排序后,答案即为 \(n+\sum \max(l_i,r_i)\)

给定一个 \(n \times m\) 地图,每个格子为空地或墙,你从一个位置开始,四连通移动,向上向下次数不限,向左最多 \(x\) 次,向右最多 \(y\) 次,问能到达多少个格子

Solution

如果只有一个方向有代价,那么简单 BFS 即可
然而这里两个方向都有代价,但是点 \((r,c) \to (i,j)\) 的横坐标差是确定的,换言之,如果设向左走了 \(a\) 步,那么向右走的步数就是 \(i-r+a\)
于是我们只对向左的边设代价即可,最终在考虑 \((r,c) \to (i,j)\) 的过程时,同时要求 $a \leq x $ 和 $ j-c+a \leq y$ 即可

CF1070A Find a Number

Description

给定两个数 \(d \le 500\)\(s \le 5000\),求最小的 \(n\) 使得 \(d|n\) 并且 \(n\) 的各位数字之和为 \(s\)

Solution

\(f[i][j]\) 表示生成一个和为 \(i\)\(\bmod d=j\) 的数字的最小 \(n\) 的末位数字
用 BFS 实现即可

Description

在平面直角坐标系中,一个机器人处于 $ (0,0) $ 点。它能进行以下的移动操作。$ U~~ $ 从 $ (x,y) $ 移动到 $ (x,y+1) \(;\) D~~ $ 从 $ (x,y) $ 移动到 $ (x,y-1) \(;\) L~~ $ 从 $ (x,y) $ 移动到 $ (x-1,y) \(;\) R~~ $ 从 $ (x,y) $ 移动到 $ (x+1,y) $。现在有一个长度为 $ n $ 的操作序列。Vasya想修改这个序列使机器人最终移动到 $ (x,y) $。其修改的花费为 $ maxID-minID+1 \(。\) maxID $ 是修改的操作的下标的最大值,$ minID $ 是修改的操作的下标的最小值。如果没有修改,则花费为 $ 0 $。

Solution

考虑到对于一个区间,如果它可行,那么一个包含它的区间一定可行
故尺取法即可

给定无向带权连通图,保留至多 \(k\) 条边,最大化到 \(1\) 号节点最短路长度不变的点的数量。

Solution

一个显然的做法是,构建原图的一棵最短路径树,任意选择一个大小为 \(k\) 的包含根的连通块就是答案
另一方面,我们回归到 Dijkstra 算法的原理,不难发现,我们只需要在算法加了 \(k\) 条边以后停止,当前选择的边集就是答案

Description

有 $ n $ 个问题,问题的主题分别是 $ a_1,a_2,\cdots,a_n $,需要组织一些专题比赛,同时要满足以下条件:一场专题比赛中的所有题目的主题相同;组织的所有专题比赛中主题互异;从第二场比赛开始,比赛中的题目数必须是前一场比赛题目数量的 $ 2 $ 倍,第一场比赛的题目数量可以是任意的。求所有比赛使用的题目数量之和的最大值。

Solution

把每个类型的问题压在一起,枚举每一个开始问题数目,检验答案时,维护一个当前位置 \(pos\),每次在 \(pos\) 后的段中二分,找到第一个可以容纳的题目类型,复杂度 \(O(n \log^2 n)\)

给定 \(n\) 个点 \(m\) 条边的无向图,图中 \(k\) 个特殊顶点,你选定一个边集,使得 \(k\) 个点通过这些边能够连通,求选定边集中最长边的最小值。

Solution

显然在求最小生成树的时候维护一下就行了,关键是如何判定当前 \(k\) 个点已经连通
维护一个 \(cnt\),如果本次合并涉及到的两个集合中都有特殊点,则 \(cnt+1\)

Description

点有正权,边有负权。在这样的无根树中找到一条权重最大的链并输出权重。

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

重要结论:如果一条路径正向反向不同时合法,则它一定存在一条子路径比它更优(想到了就很显然)
于是我们就可以当做无向链处理了
\(f[i]\) 表示到 \(i\) 结尾的一条直链的最大值
递推 \(f[]\) 时,选取最大儿子即可
更新答案时,选取最大儿子和次大儿子即可

[CF1092D1] Great Vova Wall - 栈,贪心

Description

给定一个序列 \(a=\{a_1,a_2,\dots,a_n\}\),有以下两种操作:若 \(a_i=a_{i+1}\),则可将 \(a_i\)\(a_{i+1}\) 同时加 \(1\);将 \(a_i\)\(2\)。求问是否可经过多此操作后使得所有 \(a_i\) 相等。

Solution

相当于按奇偶性做匹配,不难想到用栈维护,碰到奇偶性相同的就消去,如果最后栈内剩余元素数量不超过 1 则 YES

Description

\(n\) 个节点的树,每个节点有一点权 \(a_i\)。定义 \(\textrm{dist}(x,y)\)\(x\)\(y\) 的边数。选取一点 \(v\),使 $ \sum_{i=1}^{n}a_i \cdot \textrm{dist}(i ,v)$ 最大

Solution

典型换根 dp,设 \(1\) 号点为根,设 \(s[i]\) 表示点 \(i\) 子树中的权值和,\(f[i]\) 表示 \(v=i\) 时的答案,首先我们可以通过一次 DFS 算出 \(f[1]\),同时有转移方程

\[f[q]=f[p]-s[q]+s[1]-s[q]=f[p]+s[1]-2s[q] \]

Description

给定一个长度为 $ n $ 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列。即在任意一个位置前缀左括号的个数不少于前缀右括号的个数,同时整个序列左右括号个数相同 $ 1 \leq n \leq 10^6 $

Solution

将左括号记为 \(1\),右括号记为 \(-1\),这个数字序列记为 \(a[]\),它的前缀和记为 \(s[]\),同时记录每一个后缀 \(a[i..n]\) 的最小前缀 \(f[i]\)
计算 \(f[]\) 时,只需要倒序递推即可(类似最大子段和的处理)
如果一个位置 \(i\),满足所有 \(i\) 之前的前缀都合法,且 \(s[n]-2a[i]=0\),并且 \(s[i-1]-a[i]+f[i+1] \ge 0\),则这个位置是满足条件的

给定 \(n\) 个点,每个点有点权,连结两个点花费的代价为两点的点权和。另外有 \(m\) 条特殊边,参数为 \(x,y,z\)。意为如果你选择这条边,就可以花费 \(z\) 的代价将点 \(x\) 和点 \(y\) 连结起来,当然你也可以不选择这条边。求使整个图联通的最小代价

Solution

模拟 Kruskal 过程,同时维护每个集合的最小点权,每次比较当前最小特殊边的边权和最小点权的两个集合的和,走比较小的那一个
std::set 维护即可

Description

有一颗树,每个点有一个点权,边权都是 \(1\),问路径上的所有点的 gcd 不是 \(1\) 的最长路径是多少?

Solution

分治到每个点时,考虑当前分治范围内经过该点的路径。
对于每个子树,记录一个映射,表示每个数能到达的最深的深度,边搜索边更新即可。
维护当前分治主树的映射,枚举完一个子树后,用子树映射和主树映射中的值更新答案,并将子树映射并入主树映射中。

Description

给定一个回文字符串,\(n \le 5000\),如今想将这个字符串用 \(k\) 刀切成 \(k+1\) 个部分,然后对这 \(k+1\) 个子串重新排列(不能改变子串内部的字符顺序)使得得到的新串也为回文串且不与原串一样。求出这个最小的数 \(k\)。如果做不到,则输出 Impossible

Solution

无解的充要条件是原串对称轴一侧的所有字母均相同,如果有解则解不超过 \(2\)
\(O(n^2)\) 的时间检验答案是否可以为 \(1\)
如果答案为 \(2\),则一定是剪下两个长度为 \(len\) 的分别是前后缀的子串,相互交换,也可以花 \(O(n^2)\) 的时间检验
(结论也太神仙了……)

[CF1110D] Jongmah

Description

你手上有 \(n\) 个麻将,每个麻将上有一个在 \(1\)\(m\) 范围内的整数 \(a_i\)。为了赢得游戏,你需要将这些麻将排列成一些三元组,每个三元组中的元素是相同的或者连续的。请求出你最多可以形成多少个三元组。

Solution

连续三元组的数目在少于三个时才是必要的,大于等于三个时可以直接用相同三元组代替
因此设 \(f[i][j][k]\) 表示考虑完了 \([1,i]\) 的牌并且也可能使用过 \(i+1,i+2\) 的牌,\((i-1,i,i+1)\) 的组合有 \(j\) 个,\((i,i+1,i+2)\) 的组合有 \(k\) 个,此时的最大三元组数是多少
这一次做完以后,i 就彻底不能用了,因此我们要在这里判断 i 是否够用,如果不够用则这种状态直接非法,如果够用就转移
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

给定两个数列 \(c,t\),每次操作可以选择一个 \(i\),令 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\),问进行若干次操作后,是否能使得数列 \(c\)\(t\) 相等。

Solution

分析差分序列,将 \(c_{i-1},c_i,c_{i+1}\) 变为 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 后,差分序列从 \(c_i-c_{i-1},c_{i+1}-c_i\) 变为 \(c_{i+1}-c_i,c_{i}-c_{i-1}\),即差分序列的相邻两项交换了。
因此每次操作的实质就是交换差分序列的相邻两项。
于是,若原序列满足 \(c_1=t_1,c_n=t_n\),我们只需要比较差分序列的元素多重集是否相等即可。

Description

$ n $ 个方块排成一排,第 $ i $ 个颜色为 $ c_i $。定义一个颜色联通块 $ [l,r] $ 当且仅当 $ l $ 和 $ r $ 之间所有方块的颜色相同。现在你可以选定一个起始位置 $ p $,每次将 $ p $ 所在颜色联通块的所有方块颜色改成另一种。这个操作可能将多个颜色联通块合并成一个。问最少要多少步,能让 $ [1,n] $ 变成一个颜色联通块。

$ 1\le n,c_i\le 5000 $

Solution

先把序列 unique 一下,使得相邻两个位置颜色总不同,然后区间 DP
考察 \(c[i]\)\(c[j]\) 是否相等,如果相等则 \(f[i][j]\) 的转移来源为 \(f[i+1][j-1]\),否则转移来源在 \(f[i+1][j],f[i][j-1]\) 中选取

Description

坐标系上有一只小船,现在想从 $ (x_1,y_1) $ 去 $ (x_2,y_2) $。每时刻都有风,会把船往对应的风向吹一个单位(比如北风会把船往南吹),风是循环的,吹完 $ s_1 \sim s_n $ 就又会从 $ s_1 $ 开始。船在每一时刻都可以向指定方向移动一个单位。求船到目的地的最少时间,如果不能到达输出 -1。

Solution

容易证明关于总时间满足可二分性
判断时,加上 \([mid/n]\) 个周期偏移,加上 \(mid \bmod n\) 的单偏移后,检查曼哈顿距离是否不大于 \(mid\) 即可

[CF1117D] Magic Gems - 矩阵乘法优化dp

Description

一颗魔法宝石可以分解为 m 颗普通宝石,魔法宝石和普通宝石都占据 1 体积的空间。现在有一大堆带编号的魔法宝石,可以选出一部分宝石,然后指定一种一部分魔法宝石分解,求有多少种选出体积为 n 的集合的方案。\(n \le 10^{18}, m \le 100\)

Solution

\(f[i]\) 表示用了 \(i\) 个单位空间时的方案数,考虑最后一个选出的魔法宝石是否分解,于是有 \(f[i]=f[i-1]+f[i-m]\),由于 \(m\) 很小,矩阵快速幂即可

Description

给定 \(n\) 种木棍,第 \(i+1\) 种有 \(a_i\) 个,长度为 \(2^i\),求用这些木棍可以同时拼出多少个三角形(不可重复使用同一根)

Solution

容易发现三角形一定要满足 \(ABB(A\le B)\) 的结构,于是我们从大到小考虑所有依次打包成 \(BB\),如果有多余的就可以当做 \(A\) 与一个已有的 \(BB\) 匹配,答案 \(+1\);最后如果有没有匹配完的 \(BB\),则自己拆掉一些 \(BB\) 来匹配,设个数为 \(c\),则答案 \(+[2c/3]\)

Description

给定一个长度为 \(n (n \le 5000)\) 的字符串,要求将其划分为若干段。每一段要么长度为 \(1\),要么是本段之前部分的子串。前者代价为 \(a\),后者代价为 \(b\),求最小总代价。

Solution

\(f[i]\) 表示划分完 \(s[1..i]\) 的最小总代价,则有

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

考虑到 \(f[]\) 具有单调性,因此在第二种转移中,\(j\) 一定要尽可能大,设 \(LCS(i,j)\) 表示 \(s[1..i]\)\(s[1..j]\) 的最长公共后缀,则有

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

\(LCS(i,j)\) 可以很轻易地用 SA 求出,事实上,由于

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

可以在 \(O(n^2)\) 时间内预处理出 \(LCS(i,j)\),故总时间复杂度为 \(O(n^2)\)

有两个正整数序列 \(a,b\),长度分别为 \(n,m\)。给出所有 \(a_i\)\(b_j\) \((1\le i\le n,1\le j\le m)\) 的大小关系(大于,小于或者等于),请构造出符合条件的 \(a\)\(b\)。如果无解,输出 NO。如果有多个解,输出 \(a,b\) 中最大元素最小的方案。

Solution

并查集将所有等于的数合并起来,然后建图拓扑排序,最后 check 一下拓扑排序的结果以检查是否有环

给你一个串 \(s\),每次可以花费 \(1\) 的代价删去一个子串,要求子串的每一位为同一个字符。求删去整个串的最小代价。\(1\le |s|\le 500\)

Solution

\(f[i][j]\) 表示删除子串 \([i,j]\) 的最小花费,则

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

现有 \(n\) 个人,每个人都有各自的能力值,要你把他们分成 \(k\) 组(每组人数不限),使得每组中任意两个人的能力值之差不超过 \(5\),问你最多可以把多少人分到组中。

Solution

\(f[i][j]\) 表示将前 \(i\) 个人分成 \(j\) 段,且第 \(i\) 个人一定被使用时的最大总人数

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

其中 \(l=lower\_bound(a[i]-5)-1\)

Description

给定一个长度为 $ n $ 的 $ 1-n $ 的全排列,第 $ i $ 个数表示站在第 $ i $ 位的学生的编号

给定 $ m $ 对 $ (u,v) $,如果编号 $ u $ 的学生在编号 $ v $ 的学生前面一位,则可以将他们的位置互换,问最后一个学生能向前移动多少位

Solution

从右往左扫描所有位置,将每个位置上的人尽可能地向右换即可

Description

给定一个长度为 \(n\) 的数组,其中有些位置未定(可在 \([1,k]\) 中任意取值),问有多少种填数的方案可以使得数组中不存在长度为奇数的回文子串。

Solution

即不存在长度为 \(3\) 的回文串
即对任意 \(i\)\(a_i \neq a_{i+2}\)
考虑分奇偶位处理,方案数相乘
于是转化为相邻两位不相同的方案数
考虑对于每一段连续的 \(-1\) 分别处理
\(f[i][0]\) 表示长度为 \(i\)\(-1\) 段的左边和右边的元素相同的方案数,\(f[i][1]\) 为不同,则有

\[f[i][0]=(k-1) \cdot f[i-1][1] \\ f[i][1]=(k-2)\cdot f[i-1][1] +f[i-1][0] \]

Description

有一个序列 \(a_1,a_2,a_3...a_n (n\le 1500)\),定义 \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\),找到最大的 \(k\) 使得 \((l_1,r_1)=...=(l_k,r_k)\) 且区间 \([l_1,r_1]...[l_k,r_k]\) 互不相交

Solution

很暴力的贪心问题
处理出每一个子串的和,记录为 \((l,r,sum)\) 的形式,将它们按照 \(sum\) 为第一关键字,\(r\) 为第二关键字排序
然后对于每一个 \(sum\) 相同的段内,经典贪心即可

Description

\(n\) 个城市和 \(n-1\) 条道路。政府决定向这些公司出售道路。每条路都属于一家公司。如果有一家公司拥有两条或两条以上的进入这个城市的道路,那么这个城市是不好的。希望这样不公平的城市数量不超过 \(k\),那么最少需要多少公司?

Solution

答案显然为度数从大到小排序后的第 \(k+1\) 个,构造方案时贪心即可

Description

给定长度为 \(n\) 的母串和三个子串 \(s_1,s_2,s_3\)。初始时子串均为空。
\(q\) 次询问。你需要支持两种操作:向某个子串末尾添加一个字母,或者删去某个子串末尾的字母。
在每次操作后,你需要回答,是否能从母串中分离出三个不相交的子序列,满足这三个子序列恰好是 \(s_1,s_2,s_3\)
在任意时刻,\(s_1,s_2,s_3\) 的长度均不会超过 \(250\)
\(1 \le n \le 10^5\) , \(1\le q \le 10^3\)

Solution

\(f[i][j][k]\) 表示三个子串分别匹配到了第 \(i,j,k\) 个字符,在母串中推进的最短距离
\(g[i][c]\) 表示 \(S[i..n]\) 内字符 \(c\) 第一次出现的位置

\[f[i][j][k]=\left\{ \begin{aligned} & g[f[i-1][j][k]+1][s_1[i]] \\ & g[f[i][j-1][k]+1][s_2[j]] \\ & g[f[i][j][k-1]+1][s_3[k]] \end{aligned} \right. \]

初始条件 \(f[0][0][0]=0\),其余初值设为 \(+\infty\)
对于插入操作,暴力计算即可,每次 \(O(l^2)\)
对于删除操作,减小串长即可
对于询问,比较 \(f[l_1][l_2][l_3]\) 是否 \(\le n\) 即可

Description

给定两个正整数 $ a,b $,找到非负整数 $ k $ 使 $ a+k $ 与 $ b+k $ 的最小公倍数最小,如有多解输出最小的 $ k $

Solution

两数的差始终为 \(b-a\),而两数的 \(gcd\) 必然是 \(b-a\) 的因数
因此枚举 \(b-a\) 的因数作为 \(g\),然后求出能使得 \(g|(b+k)\) 的最小的 \(k\),很显然此时一定满足 \(g|(a+k)\)

有一个由所有长为 \(2n\) 的合法括号序列组成的 trie,现在要求这棵树上最多的边数,符合边两两之间均没有共同节点。

Solution

首先设根的深度为 \(0\),我们可以只选 trie 上所有深度为偶数的点和父亲的连边,于是答案就是 trie 上深度为奇数的点的个数
然后就是一个很套路的 dp,设 \(f[i][j]\) 表示有了 \(i\) 个左括号,\(j\) 个右括号的方案数,则

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

于是答案为

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

为了方便起见可以把坐标整体 \(+1\)

Description

\(n\) 个节点以 \(1\) 为根的一棵树,每个非叶子节点都有一个操作 \(\max\)\(\min\),表示这个节点中的值应该分别等于其子节点中所有值的最大值或最小值。假设树上有 \(k\) 个叶节点,你可以将每个叶节点填上 \([1,k]\) 的数字,且每个数字只使用一次,求根节点的最大值。

Solution

\(f[p]\) 表示 \(p\) 在其子树叶子结点中的权值排名的最大值
对于叶子结点,\(f=1\)
对于 \(\min\) 结点,\(f[p]=\sum_{p\to q} f[q]\)
对于 \(\max\) 结点,\(f[p]=\min_{p \to q} f[q]\)

给你一个在数轴上的点集 \(x_1, x_2, \dots, x_n\)。 每两个点 \(i\)\(j\) 可以在满足以下情况的时候相连: 点 \(i\) 和点 \(j\) 均未与其他点相连;\(\left| x_i - x_j \right| \geq z\)。那么请你求出最多可以连接多少点对?

Solution

双指针一遍即可
不知道这个题怎么评的分

Description

给定一个长度为 \(n\) 的排列 \(p\),求有多少区间 \([l,r]\) 满足 \(p[l]+p[r]=max\{p[i]\}\),其中 \(l \le i \le r\)

Solution

单调栈预处理出每个元素的控制区间(以它为最大值的区间)
枚举最大值位置 \(i\),于是 \(l \in [l[i],i], r \in [i,r[i]]\)
考察两个区间的长度,在小的那个中枚举,则只需要检查差是否在大区间中出现
用排列的逆来检查,值 \(x\)\(p_l,...,p_r\) 中出现,即 \(l \le I_x \le r\),其中 \(I\)\(p\) 的逆
显然每个元素被枚举次数的上界为 \(O(\log n)\),于是时间复杂度为 \(O(n \log n)\)

Description

给出两个整数 $ n \(,\) k $ 你需要构造出一个有 \(k\) 项的数列 $ A $ 满足以下条件:

  • 对于任意的 $ i\in [1,k] $ 有 $ A_i>0 $
  • 对于任意的 $ i\in (1,k] $ 应当有 $ A_{i-1}<A_i\le2A_{i-1} $
  • $ \sum\limits_{i=1}^kA_i=n $

Solution

首先我们可以构造一个等差数列 \(a_i=i\),如果此时 \(s>n\) 则必然无解
考虑先对每个位置加上 \([\frac {n-s} k]\),剩下 \((n-s) \bmod k\) 要加
考虑到 \(k\) 很小,我们从右往左依次枚举位置,每次暴力加一个后缀,倒序循环 \(+1\) 即可

Description

输入 \(n\) 个数,构造一个最大的环,环上任意 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)\(a_i \le 2 \times 10^5\)

Solution

一定要找一段 \(l,l+1,l+2,...,r\),其中除了 \(l,r\) 可以只出现一次以外,其它的都至少要出现两次
考虑到 \(a_i \le 2\times 10^5\),用桶处理一下即可

Description

在一个平面直角坐标系中,给你 $ n(2≤n≤50) $ 个点的坐标。这 $ n $ 个点中,每两个点之间都有一条直线(注意不是线段) 相连。求:这些直线中,有多少对直线相交。
1.当多点共线时,不认为由这几个点产生的直线有交点;

2.多条直线交于一点时,并不代表这几条直线在这个点相交时只产生一个交点,而是每两条直线都要统计一次。

Solution

熟悉一下板子(这题为什么有1900?)

给定由 \(n\) 个整数组成的集合 \(A\)。现给定 \(m\) 组集合,每个集合 \(S_i\) 都是 \(A\) 的一个真子集(这里的集合描述为 \(A\) 中元素下标集合),求是否存在集合 \(A\) 使得对 \(\forall_{1 \leq i \leq m}\) 不等式 \(LCM(S_i) > LCM(A - S_i)\) 恒成立。

Solution

如果存在两个集合没有交集,设为 \(S,T\),则 \(LCM(S)> LCM(A-S) \ge LCM(T)\),破坏了对称性,则一定无解
否则我们给每个集合安排一个质数 \(p_i\),设用过的所有质数集合为 \(P\),设 \(\prod S\) 是整数集合 \(S\) 的广义积,那么对于集合 \(i\),其 \(LCM\)\(\prod P\),而其补集一定不大于 \(\prod P-\{ p_i \}\),于是一定存在解

给出 \(01\)\(s\),求数对 \([l,r]\) 个数,使得能找到至少一对 \(x,k\),使 \(1\le x,k \le |s|\)\(l\le x<x+2k \le r\)\(s[x]=s[x+k]=s[x+2k]\)

Solution

考虑一个暴力,对于所有的 \(l\),暴力找到最小的能满足条件的 \(r\)
容易证明 \(r\) 是关于 \(l\) 单调的,于是倒序扫描 \(l\) 即可

给定一圆,上均匀分布有 \(n\) 个节点(不重合,从 \(1\)\(n\) 编号)。它们按照输入连成一棵树。求合法树的方案总数,对 \(998244353\) 取模。一棵树是合法的,当且仅当这棵树中无交叉的边(两边共用一端点除外)。

Solution

思路上类似树形 dp 吧
对于点 \(p\) 的子树,它在排列中必定是一段连续的区间,否则就会和其它的子树相交
不妨设 \(p_1=1\),设点 \(i\) 的度数为 \(d_i\),从根 \(1\) 开始,我们可以任意决定各个子树之间的顺序,然后递归下去
于是答案为 \(n \prod_{i=1}^n d_i!\)

Description

给两个数 $ n $ 和 $ x $,构造一个满足以下条件的序列:

  • 对任何序列中的元素 $ a_i \(,\) 1\le a_i<2^n $
  • 序列中没有非空连续子序列异或和为 $ 0 $ 或 $ x $
  • 序列长度 $ l $ 应该最大

Solution

构造前缀和序列 \(s_i = \oplus_{j=1}^i a_i\),每次暴力找一个 \([1,2^n)\) 的数,使得 \(s_i\) 没有出现过即可

两数列 \(a , b\),如果 \(a_i\) 是素数,那么 \(b\) 数列里添加上第 \(a_i\) 个素数(\(2\) 为第一个),如果不是素数,那么 \(b\) 数列里添加上 \(a_i\) 的最大因子。现在给出添加完之后的 \(b\) 数列,求出 \(a\) 数列。

Solution

从大到小枚举合数,删去它的最大因子
从小到大枚举质数 \(p\),删去第 \(p\) 个质数

Description

序列 \(123456789101112131415161718192021222324252627282930313233343536...\) 是无穷无尽的,现在你要输出它的第 \(k\) 项。\(k \le 10^{12}\)

Solution

分步处理

  • 找到答案所在数的位数
  • 找到答案所在数在当前位数中排第几
  • 找到答案在答案所在数是第几位

Description

一面国旗可以抽象为一个 $ n\times m (n,m \le 1000)$ 的矩形,每一个位置有一个颜色。这个矩形由自上而下三条横向的颜色带组成,每一条颜色带宽度相等,而且相邻两个颜色带颜色不能相同。现在你有一个 $ n\times m $ 的矩形,你需要计算其中能够称为国旗的子矩形数量。

Solution

预处理 \(f[i][j]\) 表示以元素 \((i,j)\) 为顶端,在满足颜色相同的条件下,能向下延伸的最长距离
然后计算以每个点为右上角的 Flag 数量
对于单列的判断,只需要使用几个条件即可,判定位置 \(i+3d-1\) 合法,并且 \(i+d,i+2d\)\(f\) 值满足条件
考虑复列,如果第 \(j\) 列与第 \(j-1\) 列的颜色对应相同,并且延伸数符合条件,则将计数器 \(+1\),否则将计数器置 \(1\)
(用好题目条件来构造算法,简直太妙了)

Description

给定 \(m\) 个城市,每年会选择一个城市举办比赛,现在给出前 \(n\) 年举办比赛的情况。在接下来的年份中,每年的比赛会在举办比赛次数最小的城市举办,如果有多个最小值,则先在编号最小的城市举办。有 \(q\) 个询问,每个询问给定一个 \(k\),问第 \(k\) 年在哪个城市举办比赛。

Solution

考虑离线处理,将询问排序,维护一个集合表示当前轮可以举办的城市的编号集合,每次通过暴力 kth 来找答案,这样需要用平衡树维护,考虑是否有更简单的做法
\(n\) 场比赛每一场都会恰好使得后面的一场比赛被跳过,我们只需要求出被跳过的比赛的时刻即可
先不考虑被跳过的比赛之间的相互作用,设前 \(n\) 场中的第 \(i\) 场的举办地点是 \(x\),前 \(i\) 场中在 \(x\) 举办的场数是 \(c[x]\),则导致的被跳过的比赛的原有时刻为 \(m\cdot c[x]+x - 1\)
由于跳过的比赛之间会相互影响,我们不妨先记为 \(a[i]=m \cdot c[x] + x\),在对所有比赛进行排序后,令 \(a[i]=a[i]-i\),即得到了每次跳过的时间
最后求解答案时,只需要二分一下,减去 \(a[i] \le k-n\) 的个数即可

Description

你有一个长度为 $ n \le 100 $ 的字符串。对于一个长度为 $ m $ 的子序列,选出它的花费是 $ n-m $,也就是你需要删掉的字符数量。你的任务是选出 $ k $ 个本质不同的子序列,使得总花费最小。输出这个最小花费。如果选不出 $ k $ 个,输出 $ -1 $。

Solution

\(pre[i]\) 表示 \(i\) 的前驱位置,设 \(f[i][j]\) 表示前 \(i\) 个字符,长度为 \(j\) 的本质不同子串的数量,则

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

给出一个 \(n\times m\) 的矩阵,你可以每次按照字母顺序添加横向或纵向的一条链,这条链会是 a~z 这 \(26\) 个小写字母中的一个,并且会覆盖原来的链。现在给出一个操作后的矩阵,要求回答是否可能形成这种情况,且每条链是从哪个点到哪个点。

Solution

倒序处理,将字母一层一层剥开,同时记录前层中留下来的“无关”位置,即该位置由于先前被覆盖,现在可有可无
于是我们对于当前字母 c,找到 c 字母的四边界,检查这是否是一条直链,如果不是则退出
如果是,则检查这条直链范围内加上无关字母是否能填满,如果不能则退出

给定一棵 \(n\) 个点的树,初始全是白点,要求你做 \(n\) 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。

Solution

显然如果选定了开始点,那么答案就是固定的
设开始点为根,则答案为所有子树的大小和
设以 \(i\) 为根的答案为 \(f[i]\)
则显然有 \(f[v]-f[u] = n-2s[v]\)
两次 DFS 即可

[CF1188B] Count Pairs - 数学

Description

给定一个质数 \(p\) , 一个长度为 \(n\) 的序列 \(a_1,a_2,...,a_n\)和一个整数 \(k\),求所有数对 \((i, j) (1 \le i,j \le n)\) 中满足 \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 的个数。

Solution

因为 \(p\) 是质数,所以任意非零元素有逆元,因此乘法运算满足消去律
这样我们就可以在原式的两侧同时乘上一个 \(a_i-a_j\),化简得到 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)

[CF11D] A Simple Task - 状态压缩dp

Description

求简单无向图的环数。

Solution

钦定最小编号的点是每个环的起点,这样找环就变成了找环路
\(f[s][i]\) 表示遍历过的点集为 s,当前点为 i 的路径数
转移时判定一下状态的 Lowbit 和新点的关系即可

\(n\) 个单词,想把这个 \(n\) 个单词变成一个句子,具体来说就是从左到右依次把两个单词合并成一个单词,合并两个单词的时候,要找到最大的 \(i(i\ge 0)\),满足第一个单词的长度为 \(i\) 的后缀和第二个单词长度为 \(i\) 的前缀相等,然后把第二个单词第 \(i\) 位以后的部分接到第一个单词后面,输出最后那个单词。

Solution

前缀配后缀,想到 KMP
每次构造一个待匹配串在前,已匹配串在后的串,计算这个串最后一位的 \(next\) 值就是本次匹配的宽度
注意已匹配串的长度最多只需要截取到待匹配串的长度即可

有一个 \(n\times m\) 的网格,方格上有 \(k\) 个宝藏,一个人从 \((1,1)\) 出发,可以向左或者向右走,但不能向下走。给出 \(q\) 个列,在这些列上可以向上走,其他列不能向上走。可以重复经过同一个点。求从 \((1,1)\) 出发,经过所有宝藏的最短路径长度。\(n,m,k,q\leq 2\times 10^5\)

Solution

\(f[i][0/1]\) 表示从 \((0,0)\) 走到 \(i\) 行的左侧/右侧,并遍历了 \(1 \to i-1\) 行的所有宝物的最短路径长度
(挺怕这种题的)

Description

给你一个数 $ n $,求出一个有 $ n $ 个子序列为 $ 1337 $ 的序列,序列长度不能大于 $ 10^5 $。

Solution

考虑 1 + n个3 + m个7
则方案数为 \(\frac {mn(n-1)} 2\) 种,不一定能用
于是考虑 133 + k7 + (n-2)3 + m7
则方案数为 \(\frac {mn(n-1)} 2 +k\)
不妨取 \(n=300\),然后暴力尝试 \(m\) 并计算 \(k\),最后选择一个可行的即可

[CF1203F1] Complete the Projects - 临项交换排序

Description

打第 i 场比赛需要 ai 的 rating,打完第 i 场比赛后 rating change 是 bi,rating 必须非负。求是否存在顺序能完成所有项目。\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

临项交换排序
对于 bi > 0 的部分,显然按 ai 排序
否则,按 ai+bi 排序即可

假如 1,2,初态为 r,此时要求 r>=a1, r>=a2-b1,若交换,则 r>=a2, r>=a1-b2,于是我们希望 max(a1,a2-b1)<=max(a2,a1-b2)
于是 a2+b2>=a1+b1

[CF1204D2] Kirk and a Binary String - 思维

Description

给定一个 01 串,要你求出另一个长度相等串使得任意区间内最长不降子序列的长度与原串相等且 0 的总数尽量多。

Solution

我们要将一些 1 改成 0,将某一个 1 改成 0 的条件是它后面的 0 的个数不少于 1 的个数,这个条件保证了这次修改不会影响正确性
在这个条件下,我们贪心地修改,倒序扫描整个序列,能修改就修改

括号序列视角:0 看成左括号,1 看成右括号,那么最长不降子序列就是最长的可以匹配的子括号序列长度,这样理解起来会很清楚

\(n(n\leq 10^5)\) 个数 \(a_1,...,a_n\ (a\leq 10^{18})\) 。有一个图用这个方法生成,若 \(a_i\) 按位与 \(a_j\) 不为 \(0\),则在 \(a_i,a_j\) 间连一条无向边。求这个图的最小环,若无环输出 \(-1\)

Solution

\(a_i=0\) 的数字删掉
\(n \ge 128\) 时,至少有一个二进制位满足该位为 \(1\) 的数个数 \(\ge 3\),即形成三元环
\(n<128\) 时,暴力建图后用 Floyd 跑最小环即可

[CF1207F] Remainder Problem - 根号分治

Description

给你一个长度为 \(500000\) 的序列,初值为 \(0\) ,你要完成 \(q\) 次操作,操作有如下两种:

  • 1 x y : 将下标为 \(x\) 的位置的值加上 \(y\)
  • 2 x y : 询问所有下标模 \(x\) 的结果为 \(y\) 的位置的值之和

Solution

根号分治,设 \(b=\sqrt{500000}\),那么我们对所有 \(r \le b\) 维护 \(sum[r][i]\) 表示下标模 \(r\) 等于 \(i\) 的所有位置的答案和
每次修改时,假设这个位置的新值是 x,那么我们需要对所有 \(r \le b\),在 \(sum[r][x\%r]\) 的位置修改,同时修改旧位置
询问时,如果 \(x \le b\) 那么直接调出结果,否则暴力查询原始序列

Description

现在有一个从 $ 1 $ 到 $ n $ 的一个全排列,但是你不知道这个排列到底是什么,但是你有一个 $ sum[i] $,其中 $ sum[i] $ 表示 $ \sum_{j=1}^{i-1}(a_j<a_i)?a_j:0 $,现在给你 $ sum $ 数组,让你求出这个排列 $ a $

Solution

首先找到最靠后的 \(0\),将这个位置 \(s\) 赋值为 \(\infty\)\(a\) 赋值为 \(1\),同时将它后面所有的 \(s-1\),重复下去即可
用线段树维护

\(n\) 天时间来买一种物品,一共要买 \(k\) 件,第 \(i\) 天可以购买的范围是 \([a_i,b_i]\),单价 \(c_i\),求最小总花费

Solution

暴力贪心,从最便宜的开始买即可
写完才发现原题要求用 Kotlin,我当做没看见了
主要是借着这题试用了一下 lambda 表达式

给定两个长度为 \(2\) 的串,你需要构造一个长度为 \(3n\) 的串,使得 a,b,c 三种字母各出现 \(n\) 次,且它不包含这两个串,字符集中仅有 a,b,c

Solution

画出转移图,\(3\) 个点,\(7\) 条边,可能不连通
但是很容易证明以下构造模式集可以对所有有解的情况给出合法的构造
(以 \(n=2\) 为例)

aabbcc
aaccbb
bbaacc
bbccaa
ccaabb
ccbbaa
abcabc
acbacb
bcabca
bacbac
cabcab
cbacba

于是我们用每种模式构造一个串,检验是否合法即可

给你一个有 \(n\) 个点的带权树,有 \(m\) 个查询,每次查询最大权值不大于 \(x\) 的点对的数目

Solution

模拟 Kruskal 的过程,并将整个过程的答案记录下来
询问 \(x\) 的时候,二分找到最后一个 \(\le x\) 的位置,输出这个时刻的答案即可

给你 \(d_i (\le n)\),要求你构造一棵树满足点 \(2i\)\(2i-1\) 距离为 \(d_i\)

Solution

关键在于这个神奇的 \(d \leq n\)
按照 \(d_i\) 从大到小排序,并且将所有奇数点串成一条链
依次考虑每个偶数点挂在哪里
对于链上第 \(k\) 个点,它的偶数点应该被挂在 \(k+d_i-1\) 个点的下面
如果第 \(k+d_i-1\) 是链上最后一个点,就需要再挂一个点来进行扩充
可以证明被挂的点一定存在

### Description
t$,使得 \(s\)\(t\) 必须经过的边最多。
""
""

[CF1006F] Xor-Paths

Description

给出一个 n × m 的网格,每个格子上有权值 \(a[i][j]\),要从 (1,1) 走到 (n,m),每次只能向右或向下走,沿路计算异或和,求异或和等于 k 的路径数。

Solution

双向 BFS,由于要走的总步数为 \(steps=n+m-2\),正着走 \(steps/2\),反着走 \((steps+1)/2\),然后合起来用 map 算答案即可
### Description
u)=1$)。当两个顶点之间没有边时不需要考虑。顶点从 \(1\) 开始标号。
""
""
""
""
给你一个 \(n \times m\) 的矩形,一开始有 \(q\) 个格子上被标记。对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记。问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记。

Solution

行和列分别对应二分图的左部右部,格子对应边,那么我们只需要手动使得二分图连通,通过自动标记的操作就可以得到完全二分图
于是答案为连通块数量 \(-1\)

Description

已知一个 \(n×m\) 的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出"NO",否则输出"YES"和矩阵。

$ n,m \leq 100 $

Solution

将前 \((n-1)(m-1)\) 设为 \(0\),只通过最后一个 \(L\) 型来构造
### Description
n]$。现在给你一个数列,其中 \(0\) 代表这个位置可以是任何数,问你能否通过上述的 \(q\) 次操作得到这个数列。输出方案。
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""

[CF1025D] Recovering BST - 区间dp

Description

给定一棵二叉搜索\(n \le 700\) 的所有点权,构造二叉树满足任意两个直接相邻的点的权值的 GCD 不是 1

Solution

这种关于二叉搜索树中序遍历的 DP 问题,设状态时忽略根而考虑区间,因为这个区间作为一个子树,它的父亲一定是区间左端点的左边的点或者区间右端点的右边的点
\(f[i][j]\) 表示以 \([i,j-1]\) 作为 j 的左孩子是否合法
\(g[i][j]\) 表示以 \([i+1,j]\) 作为 i 的右孩子是否合法
转移时,考虑一个区间 \([l,r]\),枚举它的根 \(k\),需要满足 \(f[i][k]\) 并且 \(g[k][j]\)
如果此时 \(k\)\(l-1\) 相连是合法的,那么就可以转移到 \([l-1,r]\)
如果此时 \(k\)\(r+1\) 相连是合法的,那么就可以转移到 \([l,r+1]\)
总之,设状态时设的是“半棵子树”的合法性,转移时首先考虑一个区间可能有哪些根,然后分别考虑这些点为根时,向外的转移情况
### Description
B$,要求在任意时刻 \(A\) 中元素小于 \(B\) 中元素。每次操作可以添加一个元素 \(x\) 到任意一个集合(由程序来选择)或者删除一个元素 \(x\),保证添加的元素互不相同,删除的元素一定存在,并要求删除的元素必须是 \(A\) 的最大值或者 \(B\) 的最小值。求方案数。
""
""
""
""

Description

给出一个在二维平面直角坐标系第一象限内的,单位长度为 \(1\) 的无限大网格,每条直线都代表道路。又给你一条直线 \(ax+by+c=0\),也代表一条道路。

现在给你两个格点 \(A,B\) 坐标 \((x1,y1)\)\((x2,y2)\),让你求该两点间最短的道路距离。

Solution

求矩形交点后再求距离
(又把 fabs 写成 abs
(以及关错了流同步被迫害

Description

给你 \(n\) 个数,去掉尽量少的数使得剩下数的最大公约数比原来的大。无解输出 \(-1\)

Solution

首先将所有数除以最大公约数
\(M=\max a_i\),维护一个桶 \(b[]\),对每个 \(i\),在 \(b[a[i]]\)\(+1\)
枚举 \([1,M]\) 中的所有质数 \(p\),考虑让最大公约数乘以 \(p\),代价就是我们需要删去所有的 \(a_i\) 满足 \(p|a_i\),于是我们枚举所有 \(p\) 的整数倍 \(q\),统计所有 \(b[q]\) 的和,就是 \(p\) 的答案
最后对所有 \(p\) 的答案取最小值即可
复杂度是 \(\sum_{p \leq M} M/i\),由于收敛较快,可以接受
判断能否整除即可
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200217152137191-1534954009.png"" alt="""" loading=""lazy"">"
如果自己是回文串可以做中心
如果一个串和另一个串的转置相等则可以凑一对
优先配对
### Description
r] $,问有多少个 $ x $ 使得 $ l \le x \le r $,且 $ x $ 是好数。$ 1 \le l_i \le r_i \le 10^{18} $
""
""
### Description
给你一个长度为 \(n\) 的整数序列,你可以对其做两种操作:

  • \(i!=j\),将 \(a_j\) 替换为 \(a_i\cdot a_j\),删除 \(a_i\)
  • 选一个未被删除的 \(a_i\),将其删除。该操作在任意时刻均可执行,最多执行一次
    你需要操作 \(n-1\) 次,剩下一个数,使其最大。由于剩下的数可能会很大,你需要输出任意一种得到它的操作序列。

Solution

分类讨论

  • 如果负数的个数是偶数
  • 如果没有 \(0\),取绝对值处理即可
  • 如果有 \(0\),将所有 \(0\) 乘在一起,消去,剩下的取绝对值处理即可
  • 如果负数的个数是奇数
  • 如果没有 \(0\),消去一个绝对值最小的负数,剩下的取绝对值处理即可
  • 如果有 \(0\),先将所有 \(0\) 乘在一起,再将绝对值最小的负数乘到 \(0\) 上,消去这个 \(0\),剩下的取绝对值处理即可

Description

\(N\) 个点,求与 \(y=0\) 相切的,包含这 \(N\) 个点的最小圆的半径。

Solution

考虑二分半径,现在要检验 \(r\) 是否可行,显然对于每个 \((x_i,y_i)\) 我们可以计算出 \(d=\sqrt {r^2 - (y_i-r)^2}\),则区间 \([x_i-d, x_i+d]\) 是可行的,我们只需要验证所有区间是否有交即可。

Description

现在有 $ N $ 个人,每一个人都不想周围的人坐得离他很近,所以在他的左边要放 $ L_i $ 张椅子,右边要放 $ R_i $ 张椅子,现在他们要坐成若干个圈,请问最少要放多少张椅子。

Solution

左右手数目分别排序后,答案即为 \(n+\sum \max(l_i,r_i)\)
给定一个 \(n \times m\) 地图,每个格子为空地或墙,你从一个位置开始,四连通移动,向上向下次数不限,向左最多 \(x\) 次,向右最多 \(y\) 次,问能到达多少个格子

Solution

如果只有一个方向有代价,那么简单 BFS 即可
然而这里两个方向都有代价,但是点 \((r,c) \to (i,j)\) 的横坐标差是确定的,换言之,如果设向左走了 \(a\) 步,那么向右走的步数就是 \(i-r+a\)
于是我们只对向左的边设代价即可,最终在考虑 \((r,c) \to (i,j)\) 的过程时,同时要求 $a \leq x $ 和 $ j-c+a \leq y$ 即可
## CF1070A Find a Number

Description

给定两个数 \(d \le 500\)\(s \le 5000\),求最小的 \(n\) 使得 \(d|n\) 并且 \(n\) 的各位数字之和为 \(s\)

Solution

\(f[i][j]\) 表示生成一个和为 \(i\)\(\bmod d=j\) 的数字的最小 \(n\) 的末位数字
用 BFS 实现即可
### Description
y) $。其修改的花费为 $ maxID-minID+1 \(。\) maxID $ 是修改的操作的下标的最大值,$ minID $ 是修改的操作的下标的最小值。如果没有修改,则花费为 $ 0 $。
""
""
""
给定无向带权连通图,保留至多 \(k\) 条边,最大化到 \(1\) 号节点最短路长度不变的点的数量。

Solution

一个显然的做法是,构建原图的一棵最短路径树,任意选择一个大小为 \(k\) 的包含根的连通块就是答案
另一方面,我们回归到 Dijkstra 算法的原理,不难发现,我们只需要在算法加了 \(k\) 条边以后停止,当前选择的边集就是答案
### Description
a_n $,需要组织一些专题比赛,同时要满足以下条件:一场专题比赛中的所有题目的主题相同;组织的所有专题比赛中主题互异;从第二场比赛开始,比赛中的题目数必须是前一场比赛题目数量的 $ 2 $ 倍,第一场比赛的题目数量可以是任意的。求所有比赛使用的题目数量之和的最大值。
""
""
给定 \(n\) 个点 \(m\) 条边的无向图,图中 \(k\) 个特殊顶点,你选定一个边集,使得 \(k\) 个点通过这些边能够连通,求选定边集中最长边的最小值。

Solution

显然在求最小生成树的时候维护一下就行了,关键是如何判定当前 \(k\) 个点已经连通
维护一个 \(cnt\),如果本次合并涉及到的两个集合中都有特殊点,则 \(cnt+1\)

Description

点有正权,边有负权。在这样的无根树中找到一条权重最大的链并输出权重。

$ 1 \leq n \leq 3 \times 10^5,0 \leq w_i \leq 10^9,1 \leq c_i \leq 10^9 $

Solution

重要结论:如果一条路径正向反向不同时合法,则它一定存在一条子路径比它更优(想到了就很显然)
于是我们就可以当做无向链处理了
\(f[i]\) 表示到 \(i\) 结尾的一条直链的最大值
递推 \(f[]\) 时,选取最大儿子即可
更新答案时,选取最大儿子和次大儿子即可

[CF1092D1] Great Vova Wall - 栈,贪心

Description

给定一个序列 \(a=\{a_1,a_2,\dots,a_n\}\),有以下两种操作:若 \(a_i=a_{i+1}\),则可将 \(a_i\)\(a_{i+1}\) 同时加 \(1\);将 \(a_i\)\(2\)。求问是否可经过多此操作后使得所有 \(a_i\) 相等。

Solution

相当于按奇偶性做匹配,不难想到用栈维护,碰到奇偶性相同的就消去,如果最后栈内剩余元素数量不超过 1 则 YES
### Description
v)$ 最大
""
""
""
""
""
### Description
给定一个长度为 $ n $ 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列。即在任意一个位置前缀左括号的个数不少于前缀右括号的个数,同时整个序列左右括号个数相同 $ 1 \leq n \leq 10^6 $

Solution

将左括号记为 \(1\),右括号记为 \(-1\),这个数字序列记为 \(a[]\),它的前缀和记为 \(s[]\),同时记录每一个后缀 \(a[i..n]\) 的最小前缀 \(f[i]\)
计算 \(f[]\) 时,只需要倒序递推即可(类似最大子段和的处理)
如果一个位置 \(i\),满足所有 \(i\) 之前的前缀都合法,且 \(s[n]-2a[i]=0\),并且 \(s[i-1]-a[i]+f[i+1] \ge 0\),则这个位置是满足条件的
给定 \(n\) 个点,每个点有点权,连结两个点花费的代价为两点的点权和。另外有 \(m\) 条特殊边,参数为 \(x,y,z\)。意为如果你选择这条边,就可以花费 \(z\) 的代价将点 \(x\) 和点 \(y\) 连结起来,当然你也可以不选择这条边。求使整个图联通的最小代价

Solution,,

模拟 Kruskal 过程,同时维护每个集合的最小点权,每次比较当前最小特殊边的边权和最小点权的两个集合的和,走比较小的那一个,,
std::set 维护即可,,
### Description
有一颗树,每个点有一个点权,边权都是 \(1\),问路径上的所有点的 gcd 不是 \(1\) 的最长路径是多少?

Solution

分治到每个点时,考虑当前分治范围内经过该点的路径。
对于每个子树,记录一个映射,表示每个数能到达的最深的深度,边搜索边更新即可。
维护当前分治主树的映射,枚举完一个子树后,用子树映射和主树映射中的值更新答案,并将子树映射并入主树映射中。
### Description
给定一个回文字符串,\(n \le 5000\),如今想将这个字符串用 \(k\) 刀切成 \(k+1\) 个部分,然后对这 \(k+1\) 个子串重新排列(不能改变子串内部的字符顺序)使得得到的新串也为回文串且不与原串一样。求出这个最小的数 \(k\)。如果做不到,则输出 Impossible

Solution

无解的充要条件是原串对称轴一侧的所有字母均相同,如果有解则解不超过 \(2\)
\(O(n^2)\) 的时间检验答案是否可以为 \(1\)
如果答案为 \(2\),则一定是剪下两个长度为 \(len\) 的分别是前后缀的子串,相互交换,也可以花 \(O(n^2)\) 的时间检验
(结论也太神仙了……)

[CF1110D] Jongmah

Description

你手上有 \(n\) 个麻将,每个麻将上有一个在 \(1\)\(m\) 范围内的整数 \(a_i\)。为了赢得游戏,你需要将这些麻将排列成一些三元组,每个三元组中的元素是相同的或者连续的。请求出你最多可以形成多少个三元组。

Solution

连续三元组的数目在少于三个时才是必要的,大于等于三个时可以直接用相同三元组代替
因此设 \(f[i][j][k]\) 表示考虑完了 \([1,i]\) 的牌并且也可能使用过 \(i+1,i+2\) 的牌,\((i-1,i,i+1)\) 的组合有 \(j\) 个,\((i,i+1,i+2)\) 的组合有 \(k\) 个,此时的最大三元组数是多少
这一次做完以后,i 就彻底不能用了,因此我们要在这里判断 i 是否够用,如果不够用则这种状态直接非法,如果够用就转移
\(f[i-1][j][k] + \frac {a[i]-j-k-l} 3 + l -> f[i][k][l], \text{if}\ j+k+l \le a[i]\)

Description

给定两个数列 \(c,t\),每次操作可以选择一个 \(i\),令 \(c_i \leftarrow c_{i+1}+c_{i-1}-c_i\),问进行若干次操作后,是否能使得数列 \(c\)\(t\) 相等。

Solution

分析差分序列,将 \(c_{i-1},c_i,c_{i+1}\) 变为 \(c_{i-1},c_{i-1}+c_{i+1}-c_i,c_{i+1}\) 后,差分序列从 \(c_i-c_{i-1},c_{i+1}-c_i\) 变为 \(c_{i+1}-c_i,c_{i}-c_{i-1}\),即差分序列的相邻两项交换了。
因此每次操作的实质就是交换差分序列的相邻两项。
于是,若原序列满足 \(c_1=t_1,c_n=t_n\),我们只需要比较差分序列的元素多重集是否相等即可。
### Description
n] $ 变成一个颜色联通块。

""
""
""
""
### Description
y_2) $。每时刻都有风,会把船往对应的风向吹一个单位(比如北风会把船往南吹),风是循环的,吹完 $ s_1 \sim s_n $ 就又会从 $ s_1 $ 开始。船在每一时刻都可以向指定方向移动一个单位。求船到目的地的最少时间,如果不能到达输出 -1。
""
""
""

[CF1117D] Magic Gems - 矩阵乘法优化dp

Description

一颗魔法宝石可以分解为 m 颗普通宝石,魔法宝石和普通宝石都占据 1 体积的空间。现在有一大堆带编号的魔法宝石,可以选出一部分宝石,然后指定一种一部分魔法宝石分解,求有多少种选出体积为 n 的集合的方案。\(n \le 10^{18}, m \le 100\)

Solution

\(f[i]\) 表示用了 \(i\) 个单位空间时的方案数,考虑最后一个选出的魔法宝石是否分解,于是有 \(f[i]=f[i-1]+f[i-m]\),由于 \(m\) 很小,矩阵快速幂即可
### Description
给定 \(n\) 种木棍,第 \(i+1\) 种有 \(a_i\) 个,长度为 \(2^i\),求用这些木棍可以同时拼出多少个三角形(不可重复使用同一根)

Solution

容易发现三角形一定要满足 \(ABB(A\le B)\) 的结构,于是我们从大到小考虑所有依次打包成 \(BB\),如果有多余的就可以当做 \(A\) 与一个已有的 \(BB\) 匹配,答案 \(+1\);最后如果有没有匹配完的 \(BB\),则自己拆掉一些 \(BB\) 来匹配,设个数为 \(c\),则答案 \(+[2c/3]\)

Description

给定一个长度为 \(n (n \le 5000)\) 的字符串,要求将其划分为若干段。每一段要么长度为 \(1\),要么是本段之前部分的子串。前者代价为 \(a\),后者代价为 \(b\),求最小总代价。

Solution

\(f[i]\) 表示划分完 \(s[1..i]\) 的最小总代价,则有

\[f[i]=\min(f[i-1]+a, \ \ \min_{j<i, s[j+1..i] \subseteq s[1..j]} f[j]+b) \]

考虑到 \(f[]\) 具有单调性,因此在第二种转移中,\(j\) 一定要尽可能大,设 \(LCS(i,j)\) 表示 \(s[1..i]\)\(s[1..j]\) 的最长公共后缀,则有

\[f[i]=\min(f[i-1]+a, \min_{j<i} (f_{\max (j, i-LCS(i,j))})) \]

\(LCS(i,j)\) 可以很轻易地用 SA 求出,事实上,由于

\[\begin {aligned} & LCS(i,j) = 0, & s[i]\neq s[j] \\ & LCS(i,j)=LCS(i-1,j-1)+1, & s[i]=s[j] \end {aligned} \]

可以在 \(O(n^2)\) 时间内预处理出 \(LCS(i,j)\),故总时间复杂度为 \(O(n^2)\)
有两个正整数序列 \(a,b\),长度分别为 \(n,m\)。给出所有 \(a_i\)\(b_j\) \((1\le i\le n,1\le j\le m)\) 的大小关系(大于,小于或者等于),请构造出符合条件的 \(a\)\(b\)。如果无解,输出 NO。如果有多个解,输出 \(a,b\) 中最大元素最小的方案。

Solution,,,,

并查集将所有等于的数合并起来,然后建图拓扑排序,最后 check 一下拓扑排序的结果以检查是否有环,,,,
给你一个串 \(s\),每次可以花费 \(1\) 的代价删去一个子串,要求子串的每一位为同一个字符。求删去整个串的最小代价。\(1\le |s|\le 500\)

Solution

\(f[i][j]\) 表示删除子串 \([i,j]\) 的最小花费,则

\[f[i][j]=\min (f[i][j],f[i][k]+f[k+1][j]+1-[s[k]=s[j]]) \]

现有 \(n\) 个人,每个人都有各自的能力值,要你把他们分成 \(k\) 组(每组人数不限),使得每组中任意两个人的能力值之差不超过 \(5\),问你最多可以把多少人分到组中。

Solution

\(f[i][j]\) 表示将前 \(i\) 个人分成 \(j\) 段,且第 \(i\) 个人一定被使用时的最大总人数

\[f[i][j]=\max(f[i-1][j],f[l][j-1]+i-l) \]

其中 \(l=lower\_bound(a[i]-5)-1\)

Description

给定一个长度为 $ n $ 的 $ 1-n $ 的全排列,第 $ i $ 个数表示站在第 $ i $ 位的学生的编号

给定 $ m $ 对 $ (u,v) $,如果编号 $ u $ 的学生在编号 $ v $ 的学生前面一位,则可以将他们的位置互换,问最后一个学生能向前移动多少位

Solution

从右往左扫描所有位置,将每个位置上的人尽可能地向右换即可
### Description
k]$ 中任意取值),问有多少种填数的方案可以使得数组中不存在长度为奇数的回文子串。
""
""
""
""
""
""
""
""
""
""
""

Description

有一个序列 \(a_1,a_2,a_3...a_n (n\le 1500)\),定义 \((l_i,r_i)=a[l_i] + a[l_i +1] +...+a[r_i]\),找到最大的 \(k\) 使得 \((l_1,r_1)=...=(l_k,r_k)\) 且区间 \([l_1,r_1]...[l_k,r_k]\) 互不相交

Solution

很暴力的贪心问题
处理出每一个子串的和,记录为 \((l,r,sum)\) 的形式,将它们按照 \(sum\) 为第一关键字,\(r\) 为第二关键字排序
然后对于每一个 \(sum\) 相同的段内,经典贪心即可
### Description
\(n\) 个城市和 \(n-1\) 条道路。政府决定向这些公司出售道路。每条路都属于一家公司。如果有一家公司拥有两条或两条以上的进入这个城市的道路,那么这个城市是不好的。希望这样不公平的城市数量不超过 \(k\),那么最少需要多少公司?

Solution

答案显然为度数从大到小排序后的第 \(k+1\) 个,构造方案时贪心即可
### Description
s_3\(。初始时子串均为空。 "" s_3\)
s_3$ 的长度均不会超过 \(250\)
""
""
k$ 个字符,在母串中推进的最短距离
""
""
""
""
""
""
""
""
""
""
""
""
""
""
### Description
b $,找到非负整数 $ k $ 使 $ a+k $ 与 $ b+k $ 的最小公倍数最小,如有多解输出最小的 $ k $
""
""
""
有一个由所有长为 \(2n\) 的合法括号序列组成的 trie,现在要求这棵树上最多的边数,符合边两两之间均没有共同节点。

Solution

首先设根的深度为 \(0\),我们可以只选 trie 上所有深度为偶数的点和父亲的连边,于是答案就是 trie 上深度为奇数的点的个数
然后就是一个很套路的 dp,设 \(f[i][j]\) 表示有了 \(i\) 个左括号,\(j\) 个右括号的方案数,则

\[f[i][j]=f[i-1][j]+f[i][j-1] \]

于是答案为

\[\sum_{(i+j) \bmod 2=1} f[i][j] \]

为了方便起见可以把坐标整体 \(+1\)
### Description
k]$ 的数字,且每个数字只使用一次,求根节点的最大值。
""
""
""
""
""
给你一个在数轴上的点集 \(x_1, x_2, \dots, x_n\)。 每两个点 \(i\)\(j\) 可以在满足以下情况的时候相连: 点 \(i\) 和点 \(j\) 均未与其他点相连;\(\left| x_i - x_j \right| \geq z\)。那么请你求出最多可以连接多少点对?

Solution,,,

双指针一遍即可,,,
不知道这个题怎么评的分,,,

Description

给定一个长度为 \(n\) 的排列 \(p\),求有多少区间 \([l,r]\) 满足 \(p[l]+p[r]=max\{p[i]\}\),其中 \(l \le i \le r\)

Solution

单调栈预处理出每个元素的控制区间(以它为最大值的区间)
枚举最大值位置 \(i\),于是 \(l \in [l[i],i], r \in [i,r[i]]\)
考察两个区间的长度,在小的那个中枚举,则只需要检查差是否在大区间中出现
用排列的逆来检查,值 \(x\)\(p_l,...,p_r\) 中出现,即 \(l \le I_x \le r\),其中 \(I\)\(p\) 的逆
显然每个元素被枚举次数的上界为 \(O(\log n)\),于是时间复杂度为 \(O(n \log n)\)
### Description
$ k $ 你需要构造出一个有 \(k\) 项的数列 $ A $ 满足以下条件:
k] $ 有 $ A_i>0 $
k] $ 应当有 $ A_{i-1}<A_i\le2A_{i-1} $
""
""
""
""
""

Description

输入 \(n\) 个数,构造一个最大的环,环上任意 \(\textrm{abs}(a[(i+1)\%n]-a[i]) \le 1\)\(a_i \le 2 \times 10^5\)

Solution

一定要找一段 \(l,l+1,l+2,...,r\),其中除了 \(l,r\) 可以只出现一次以外,其它的都至少要出现两次
考虑到 \(a_i \le 2\times 10^5\),用桶处理一下即可
### Description
在一个平面直角坐标系中,给你 $ n(2≤n≤50) $ 个点的坐标。这 $ n $ 个点中,每两个点之间都有一条直线(注意不是线段) 相连。求:这些直线中,有多少对直线相交。
1.当多点共线时,不认为由这几个点产生的直线有交点;

2.多条直线交于一点时,并不代表这几条直线在这个点相交时只产生一个交点,而是每两条直线都要统计一次。

Solution

熟悉一下板子(这题为什么有1900?)
给定由 \(n\) 个整数组成的集合 \(A\)。现给定 \(m\) 组集合,每个集合 \(S_i\) 都是 \(A\) 的一个真子集(这里的集合描述为 \(A\) 中元素下标集合),求是否存在集合 \(A\) 使得对 \(\forall_{1 \leq i \leq m}\) 不等式 \(LCM(S_i) > LCM(A - S_i)\) 恒成立。

Solution

如果存在两个集合没有交集,设为 \(S,T\),则 \(LCM(S)> LCM(A-S) \ge LCM(T)\),破坏了对称性,则一定无解
否则我们给每个集合安排一个质数 \(p_i\),设用过的所有质数集合为 \(P\),设 \(\prod S\) 是整数集合 \(S\) 的广义积,那么对于集合 \(i\),其 \(LCM\)\(\prod P\),而其补集一定不大于 \(\prod P-\{ p_i \}\),于是一定存在解
给出 \(01\)\(s\),求数对 \([l,r]\) 个数,使得能找到至少一对 \(x,k\),使 \(1\le x,k \le |s|\)\(l\le x<x+2k \le r\)\(s[x]=s[x+k]=s[x+2k]\)

Solution,,,

考虑一个暴力,对于所有的 \(l\),暴力找到最小的能满足条件的 \(r\),,,
容易证明 \(r\) 是关于 \(l\) 单调的,于是倒序扫描 \(l\) 即可,,,
给定一圆,上均匀分布有 \(n\) 个节点(不重合,从 \(1\)\(n\) 编号)。它们按照输入连成一棵树。求合法树的方案总数,对 \(998244353\) 取模。一棵树是合法的,当且仅当这棵树中无交叉的边(两边共用一端点除外)。

Solution

思路上类似树形 dp 吧
对于点 \(p\) 的子树,它在排列中必定是一段连续的区间,否则就会和其它的子树相交
不妨设 \(p_1=1\),设点 \(i\) 的度数为 \(d_i\),从根 \(1\) 开始,我们可以任意决定各个子树之间的顺序,然后递归下去
于是答案为 \(n \prod_{i=1}^n d_i!\)

Description

给两个数 $ n $ 和 $ x $,构造一个满足以下条件的序列:

  • 对任何序列中的元素 $ a_i \(,\) 1\le a_i<2^n $
  • 序列中没有非空连续子序列异或和为 $ 0 $ 或 $ x $
  • 序列长度 $ l $ 应该最大

Solution

构造前缀和序列 \(s_i = \oplus_{j=1}^i a_i\),每次暴力找一个 \([1,2^n)\) 的数,使得 \(s_i\) 没有出现过即可
两数列 \(a , b\),如果 \(a_i\) 是素数,那么 \(b\) 数列里添加上第 \(a_i\) 个素数(\(2\) 为第一个),如果不是素数,那么 \(b\) 数列里添加上 \(a_i\) 的最大因子。现在给出添加完之后的 \(b\) 数列,求出 \(a\) 数列。

Solution,

从大到小枚举合数,删去它的最大因子,
从小到大枚举质数 \(p\),删去第 \(p\) 个质数,
### Description
现在你要输出它的第 \(k\) 项。\(k \le 10^{12}\)
""
""
""
""
""
### Description
m \le 1000)$ 的矩形,每一个位置有一个颜色。这个矩形由自上而下三条横向的颜色带组成,每一条颜色带宽度相等,而且相邻两个颜色带颜色不能相同。现在你有一个 $ n\times m $ 的矩形,你需要计算其中能够称为国旗的子矩形数量。
""
j)$ 为顶端,在满足颜色相同的条件下,能向下延伸的最长距离
""
i+2d$ 的 \(f\) 值满足条件
""
""
### Description
给定 \(m\) 个城市,每年会选择一个城市举办比赛,现在给出前 \(n\) 年举办比赛的情况。在接下来的年份中,每年的比赛会在举办比赛次数最小的城市举办,如果有多个最小值,则先在编号最小的城市举办。有 \(q\) 个询问,每个询问给定一个 \(k\),问第 \(k\) 年在哪个城市举办比赛。

Solution

考虑离线处理,将询问排序,维护一个集合表示当前轮可以举办的城市的编号集合,每次通过暴力 kth 来找答案,这样需要用平衡树维护,考虑是否有更简单的做法
\(n\) 场比赛每一场都会恰好使得后面的一场比赛被跳过,我们只需要求出被跳过的比赛的时刻即可
先不考虑被跳过的比赛之间的相互作用,设前 \(n\) 场中的第 \(i\) 场的举办地点是 \(x\),前 \(i\) 场中在 \(x\) 举办的场数是 \(c[x]\),则导致的被跳过的比赛的原有时刻为 \(m\cdot c[x]+x - 1\)
由于跳过的比赛之间会相互影响,我们不妨先记为 \(a[i]=m \cdot c[x] + x\),在对所有比赛进行排序后,令 \(a[i]=a[i]-i\),即得到了每次跳过的时间
最后求解答案时,只需要二分一下,减去 \(a[i] \le k-n\) 的个数即可
### Description
你有一个长度为 $ n \le 100 $ 的字符串。对于一个长度为 $ m $ 的子序列,选出它的花费是 $ n-m $,也就是你需要删掉的字符数量。你的任务是选出 $ k $ 个本质不同的子序列,使得总花费最小。输出这个最小花费。如果选不出 $ k $ 个,输出 $ -1 $。

Solution

\(pre[i]\) 表示 \(i\) 的前驱位置,设 \(f[i][j]\) 表示前 \(i\) 个字符,长度为 \(j\) 的本质不同子串的数量,则

\[f[i][j]=f[i-1][j]+f[i-1][j-1]-f[pre[i]-1][j-1] \]

给出一个 \(n\times m\) 的矩阵,你可以每次按照字母顺序添加横向或纵向的一条链,这条链会是 a~z 这 \(26\) 个小写字母中的一个,并且会覆盖原来的链。现在给出一个操作后的矩阵,要求回答是否可能形成这种情况,且每条链是从哪个点到哪个点。

Solution

倒序处理,将字母一层一层剥开,同时记录前层中留下来的“无关”位置,即该位置由于先前被覆盖,现在可有可无
于是我们对于当前字母 c,找到 c 字母的四边界,检查这是否是一条直链,如果不是则退出
如果是,则检查这条直链范围内加上无关字母是否能填满,如果不能则退出
给定一棵 \(n\) 个点的树,初始全是白点,要求你做 \(n\) 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。

Solution

显然如果选定了开始点,那么答案就是固定的
设开始点为根,则答案为所有子树的大小和
设以 \(i\) 为根的答案为 \(f[i]\)
则显然有 \(f[v]-f[u] = n-2s[v]\)
两次 DFS 即可

[CF1188B] Count Pairs - 数学

Description

给定一个质数 \(p\) , 一个长度为 \(n\) 的序列 \(a_1,a_2,...,a_n\)和一个整数 \(k\),求所有数对 \((i, j) (1 \le i,j \le n)\) 中满足 \((a_i + a_j) * (a_i^2 + a_j^2 ) \equiv k \bmod p\) 的个数。

Solution

因为 \(p\) 是质数,所以任意非零元素有逆元,因此乘法运算满足消去律
这样我们就可以在原式的两侧同时乘上一个 \(a_i-a_j\),化简得到 \(a_i^4 - ka_i = a_j^4 - ka_j \bmod p\)
## [CF11D] A Simple Task - 状态压缩dp

Description

求简单无向图的环数。

Solution

钦定最小编号的点是每个环的起点,这样找环就变成了找环路
\(f[s][i]\) 表示遍历过的点集为 s,当前点为 i 的路径数
转移时判定一下状态的 Lowbit 和新点的关系即可
有 \(n\) 个单词,想把这个 \(n\) 个单词变成一个句子,具体来说就是从左到右依次把两个单词合并成一个单词,合并两个单词的时候,要找到最大的 \(i(i\ge 0)\),满足第一个单词的长度为 \(i\) 的后缀和第二个单词长度为 \(i\) 的前缀相等,然后把第二个单词第 \(i\) 位以后的部分接到第一个单词后面,输出最后那个单词。

Solution

前缀配后缀,想到 KMP
每次构造一个待匹配串在前,已匹配串在后的串,计算这个串最后一位的 \(next\) 值就是本次匹配的宽度
注意已匹配串的长度最多只需要截取到待匹配串的长度即可
有一个 \(n\times m\) 的网格,方格上有 \(k\) 个宝藏,一个人从 \((1,1)\) 出发,可以向左或者向右走,但不能向下走。给出 \(q\) 个列,在这些列上可以向上走,其他列不能向上走。可以重复经过同一个点。求从 \((1,1)\) 出发,经过所有宝藏的最短路径长度。\(n,m,k,q\leq 2\times 10^5\)

Solution,,,,,

\(f[i][0/1]\) 表示从 \((0,0)\) 走到 \(i\) 行的左侧/右侧,并遍历了 \(1 \to i-1\) 行的所有宝物的最短路径长度,,,,
(挺怕这种题的),,,,,
### Description
给你一个数 $ n $,求出一个有 $ n $ 个子序列为 $ 1337 $ 的序列,序列长度不能大于 $ 10^5 $。

Solution

考虑 1 + n个3 + m个7
则方案数为 \(\frac {mn(n-1)} 2\) 种,不一定能用
于是考虑 133 + k7 + (n-2)3 + m7
则方案数为 \(\frac {mn(n-1)} 2 +k\)
不妨取 \(n=300\),然后暴力尝试 \(m\) 并计算 \(k\),最后选择一个可行的即可

[CF1203F1] Complete the Projects - 临项交换排序

Description

打第 i 场比赛需要 ai 的 rating,打完第 i 场比赛后 rating change 是 bi,rating 必须非负。求是否存在顺序能完成所有项目。\(n \le 100, r \le 30000, |b_i| \le 300\)

Solution

临项交换排序
对于 bi > 0 的部分,显然按 ai 排序
否则,按 ai+bi 排序即可

假如 1,2,初态为 r,此时要求 r>=a1, r>=a2-b1,若交换,则 r>=a2, r>=a1-b2,于是我们希望 max(a1,a2-b1)<=max(a2,a1-b2)
于是 a2+b2>=a1+b1
## [CF1204D2] Kirk and a Binary String - 思维 ### Description 给定一个 01 串,要你求出另一个长度相等串使得任意区间内最长不降子序列的长度与原串相等且 0 的总数尽量多。 ### Solution 我们要将一些 1 改成 0,将某一个 1 改成 0 的条件是它后面的 0 的个数不少于 1 的个数,这个条件保证了这次修改不会影响正确性 在这个条件下,我们贪心地修改,倒序扫描整个序列,能修改就修改
括号序列视角:0 看成左括号,1 看成右括号,那么最长不降子序列就是最长的可以匹配的子括号序列长度,这样理解起来会很清楚
有 $n(n\leq 10^5)$ 个数 $a_1,...,a_n\ (a\leq 10^{18})$ 。有一个图用这个方法生成,若 $a_i$ 按位与 $a_j$ 不为 $0$,则在 $a_i,a_j$ 间连一条无向边。求这个图的最小环,若无环输出 $-1$。 ### Solution,,, 把 $a_i=0$ 的数字删掉,,, 当 $n \ge 128$ 时,至少有一个二进制位满足该位为 $1$ 的数个数 $\ge 3$,即形成三元环,,, 当 $n<128$ 时,暴力建图后用 Floyd 跑最小环即可,,, ## [CF1207F] Remainder Problem - 根号分治 ### Description 给你一个长度为 $500000$ 的序列,初值为 $0$ ,你要完成 $q$ 次操作,操作有如下两种: - `1 x y` : 将下标为 $x$ 的位置的值加上 $y$ - `2 x y` : 询问所有下标模 $x$ 的结果为 $y$ 的位置的值之和 ### Solution 根号分治,设 $b=\sqrt{500000}$,那么我们对所有 $r \le b$ 维护 $sum[r][i]$ 表示下标模 $r$ 等于 $i$ 的所有位置的答案和 每次修改时,假设这个位置的新值是 x,那么我们需要对所有 $r \le b$,在 $sum[r][x\%r]$ 的位置修改,同时修改旧位置 询问时,如果 $x \le b$ 那么直接调出结果,否则暴力查询原始序列 ### Description 让你求出这个排列 $ a $ "" "" "" 有 $n$ 天时间来买一种物品,一共要买 $k$ 件,第 $i$ 天可以购买的范围是 $[a_i,b_i]$,单价 $c_i$,求最小总花费 ### Solution, 暴力贪心,从最便宜的开始买即可, 写完才发现原题要求用 Kotlin,我当做没看见了, 主要是借着这题试用了一下 lambda 表达式, 给定两个长度为 $2$ 的串,你需要构造一个长度为 $3n$ 的串,使得 `a,b,c` 三种字母各出现 $n$ 次,且它不包含这两个串,字符集中仅有 `a,b.1,c` ### Solution,,,, 画出转移图,$3$ 个点,$7$ 条边,可能不连通,,,, 但是很容易证明以下构造模式集可以对所有有解的情况给出合法的构造,,,, (以 $n=2$ 为例),,,, aabbcc,,,, aaccbb,,,, bbaacc,,,, bbccaa,,,, ccaabb,,,, ccbbaa,,,, abcabc,,,, acbacb,,,, bcabca,,,, bacbac,,,, cabcab,,,, cbacba,,,, 于是我们用每种模式构造一个串,检验是否合法即可,,,, 给你一个有 $n$ 个点的带权树,有 $m$ 个查询,每次查询最大权值不大于 $x$ 的点对的数目 ### Solution 模拟 Kruskal 的过程,并将整个过程的答案记录下来 询问 $x$ 的时候,二分找到最后一个 $\le x$ 的位置,输出这个时刻的答案即可 给你 $d_i (\le n)$,要求你构造一棵树满足点 $2i$ 与 $2i-1$ 距离为 $d_i$。 ### Solution 关键在于这个神奇的 $d \leq n$ 按照 $d_i$ 从大到小排序,并且将所有奇数点串成一条链 依次考虑每个偶数点挂在哪里 对于链上第 $k$ 个点,它的偶数点应该被挂在 $k+d_i-1$ 个点的下面 如果第 $k+d_i-1$ 是链上最后一个点,就需要再挂一个点来进行扩充 可以证明被挂的点一定存在 虽然分类讨论应该是比较推崇的解法,但是我就是喜欢暴力 给一个有向图着色,使得没有一个环只有一个颜色,需要最小化使用颜色的数量。 ### Solution 如果图中没有环,那么显然只需要一种颜色 如果图中有环,则将 DFS 树中所有横叉边和树边染成 $1$,返祖边染成 $2$ 即可,故只需要两种颜色 $n\times m$ 的网格中,在第 $i$ 行 $j$ 列有 $a[i][j]$ 个泡泡,每次可以收割一行或一列的泡泡,最多收割 $4$ 次,问最多可以收割到多少泡泡。$nm \leq 10^5$ ### Solution 讨论答案的各种情况
  • 四行,这种情况下直接求和取前 \(4\) 个最大值即可
  • 三行一列,枚举取哪一列,然后每次暴力提取前 \(3\) 个行最大值
  • 两行两列,显然 \(n,m\) 中必有一个 \(\leq \sqrt{10^5}\),设它是行,则暴力枚举选哪两行,然后仍然按照前述方法计算答案即可

其余情况可以由上面三种基本情况旋转得到
复杂度 \(\mathcal{O} (nm \min(n,m))\)

[CF1220C]

Description

给定一个字符串 \(S\) , 同时维护一个区间 \([l,r]\) 。轮流操作,每次可以扩展到一个新区间使得原区间是新区间的真子区间,并且字典序更小,不能操作的人输。初态区间为 \([k,k]\) ,你需要对 \(k=1,2,...,|S|\) 判断胜负性。

Solution

很容易发现游戏最多玩一轮,所以只需要判断每个字母之前有没有更小的字母就可以了。
有 \(n\) 个数的序列,每次操作可以选择一种数,将他们全部移到开头或结尾,问最少需要多少次操作,才能使序列变为非递减序列。

Solution

将每种数出现的最左最右位置记为这个数的出现位置区间
于是我们要找若干个值连续下降的区间,并且位置从左到右依次排布,互不相交
离散化后预处理出区间,然后扫一遍即可
给定一张图,判定它是否是完全三分图。

Solution

考虑到最终划分到同一集合中的点,它们的直接可达点都是相同的
于是我们记录每个点的直接可达点集合,排序,然后分段
如果不是三段,则不存在
同时要预先筛去有孤立点的情况
有两个字符串 \(S,T\)。每次操作可以将 \(S\) 中某个字符移到开头或结尾。若想要 \(S=T\) ,则需要的最少操作次数是多少。\(Q \leq 100, n\leq 100\)

Solution,,

考虑贪心,我们要找一个串,它是 \(S\) 的子序列,\(T\) 的子串,并且长度最大,,
于是我们暴力枚举这个串在 \(T\) 中的开头位置,然后扫一遍 \(S\) 即可,,

CF1234F Yet Another Substring Reverse

Description

给定一个字符串,可以任意翻转一个子串,求最终满足所有字符互不相同的子串的最大长度。
数据范围: \(n \le 10^6, \Sigma \le 20\)

Solution

由于被翻转子串的选择是任意的,我们可以将最终的子串看作两个原串的前缀的后缀的拼合。由于题目的各种性质,我们只需要考虑所有子串构成的字符集的所有可能状态,而与位置无关。
而字符集的状态依然要求不能有重复字符,因此对于每一个位置的字符,以它结尾的子串最多只有 \(\Sigma\) 个是合法的,因此我们状压并 \(O(n\Sigma)\) 扫一遍即可处理出字符集的所有状态。
原问题要求的是两个互斥的字符集 \(P,Q\) ,相当于把字符集划分为对立的两部分 \(A,B\), 并取任意 \(P \subset A, Q \subset B\) 。我们 \(O(\Sigma 2^\Sigma)\) 预处理出子集前缀和,暴力枚举这种对立的划分,即枚举子集,即可在 \(O(2^\Sigma)\) 时间计算出答案。

Code

[CF1236D] Alice and the Doll

Description

\(N \times M\)网格,有 \(K\) 个格子里有障碍物。每次经过一个格子的时候只能直走或者右转一次。初态在 \((1,1)\) 格子向上。求是否存在一条路径经过所有无障碍格子恰好一次。

Solution

最优的走法是遇到障碍或者边界就右转,否则直走。
走过一排格子相当于挪动边界线。
这两个结论仔细品味起来很挺有深度的。
然后暴力模拟就可以了,找障碍物的过程可以用 set 优化。
这题的坐标系好像有点奇怪,SB的我就这么搞反坐标WA了一发。然后忘记开longlong又WA了一发。

Code

给定一个 \(n \times m\) 的方格图,每个格子可以被染成黑色或白色,且与其相邻的格子(上,下,左,右)中至多只有一个与其颜色相同。求方案数。

Solution

依稀记得当年在热身赛上碰到这个题,大家都说是 CF 原题,然后我跪了……
对于 \((i,j)\),如果它左、左上、上的颜色确定,那么这个格子的颜色就确定了
于是我们枚举 \((1,1)\) 的颜色,然后将第一行第一列的颜色确定下来,这时候行列显然相互独立
对于行,答案相当于一个 \(1/2\) 排列划分,对于列同理,于是答案为

\[2(F_n+F_m-1) \]

有一张完全图,\(n\) 个节点,有 \(m\) 条边的边权为 \(1\),其余的都为 \(0\),这 \(m\) 条边会给你。问你这张图的最小生成树的权值。

Solution

\(1\) 边视为不存在,那么最后的答案就是 \(0\) 边形成的连通块数 \(-1\)
顺序扫描所有点,对于点 \(i\),枚举由 \([1,i-1]\) 已经形成的集合 \(j\),如果 \(i\)\(j\) 连的边数小于 \(j\) 的大小,那么就表明一定有 \(0\) 边,于是将 \(i\) 所在集合与集合 \(j\) 合并
### Description
z$ 或者判定无解。
""
""
""
""
""
""
有一个长度为 \(n\) 的序列,每次操作可以使其中的一个数 \(+1\)\(-1\)。操作次数不得大于 \(k\),问 \(MAX-MIN\) 的最小值是多少。

Solution

贪心,考虑到只有最大值和最小值对结果有影响,我们每次比较最大值和最小值的个数,动小的那一边
为了加速,每次动最小值时,看是否能将它修改为次小,如果不能则结束,最大值同理
给定 \(n\) 个点 \((n\leq2000)\),在第 \(i\) 个点上建立一个基站需要 \(c_i\) 的代价,连接两个点需要 \((|x_i-x_j|+|y_i-y_j|)(k_i+k_j)\) 的代价。对于一个点要么建立基站,要么连接建立基站的点。问最小代价是多少,同时输出建立基站的点和线路。

Solution

这个万年老题到底被出过多少遍了啊
给定 \(n\) 条线段,要求去掉最少的线段,使得任意一个整数点被覆盖的次数都不超过 \(k\)

Solution

先离散化,考虑贪心,按左端点排序,依次扫描,每遇到一个区间就加入堆,堆按右端点大顶,如果当前位置重数 \(>k\),就从堆中取出右端点最大的区间删除即可

Description

公司有 $ n $ 名员工和 $ k $ 个团队,每个员工仅属于 $ 1 $ 个团队,每个团队至少有 $ 1 $ 名员工。团队编号从 $ 1 $ 到 $ k $。
给出 $ n $ 个数字:$ t_1,t_2,\dots,t_n \(,\) t_i $ 表示第 $ i $ 个员工属于第 $ t_i $ 个团队。
该公司雇佣了一辆班车,这辆班车将会往返多次承载员工去参加宴会,每一次可以承载 $ 1 $ 个团队或者 $ 2 $ 个团队,且每一个团队不能分离,必须在同一次车上。
这辆车可以承载 $ s $ 个员工,$ s $ 可以为任意值。
假设通过 $ r $ 次运输,所有的员工都到达宴会目的地了,该公司需要支付 $ sr $ 元(只有 $ 1 $ 辆班车)。现在要你计算 $ rs $ 的最小值。

$ 1\le n \le 5\times 10^5,1 \le k \le 8000 $

Solution

题目只要求 \(O(k^2)\) 做法,于是我们枚举 \(s\),然后暴力贪心检验即可
注意枚举的 \(s\) 的取值,假设 \(a\) 有序,那么 \(s \in \{ a_1+a_k,a_2+a_{k-1},\dots \}\)
有三个序列 \(a.b.c\),每次操作可以把一个序列中的一个数移动到另一个序列中,问最少操作几次后,可以使得 \(a\) 序列里的所有数小于 \(b\) 里面的所有数,\(b\) 里面的小于 \(c\) 里面的。

Solution

从结果倒过来考虑,假设三个序列各自有序,那么可以保持不动的部分就是三个序列连在一起的最长上升子序列
设计一个只有一行的打字机,这一行的长度是无限大,一开始可以认为每个字符都是空。您的打字机有一个光标只指向一个字符,一开始指向最左侧的字符。使用者有三种操作:L 将光标向左移一格(当光标已经在最左侧时,忽略这次操作),R 将光标向右移一格,一个小写字符或者'(',')' 将当前字符替换为给定字符。您需要在每次操作后,判断这一行是否是合法括号序列,不是输出 -1,否则输出最多嵌套数。

Solution,

预先构造出完整长度的序列,所有位置设置为空状态,按时间顺序处理所有操作,
( 视为 \(1\)) 视为 \(-1\),其它视为 \(0\),线段树维护前缀和最大值、最小值与区间和,

Description

给你 \(a\)\(0\)\(b\)\(1\)\(c\)\(2\)\(d\)\(3\),要求排成一个长度为 \(a+b+c+d\) 的数列,相邻两个差的绝对值为 \(1\),并输出任一方案。

Solution

分别构造首位置为 \(0,1,2,3\) 的情况,对于每个位置,尽量先贪该位 \(-1\),不满足的话贪该位 \(+1\)
能绕开各种特判做这道题,还是挺优雅的 ????
现有 \(n\) 个人,有 \(m\) 对欠债关系:\(d(a,b)\) 表示 \(a\)\(b\ d(a,b)\) 元。现要给出一个最终的欠债关系,使得 \(\sum d\)最小。

Solution,,

只需要记录每个点输出和输入的总量,正负各成一部,然后正部向着负部做类似匹配的操作即可,,

Description

你的手机上有 $ n $ ($ 1 $ $\le n $ $\le 2 \times 10^6 $)个软件,其中第 $ i $ 个软件的类型为 $ c_i $,你需要在可以自由选择每页大小 \(s\) 的情况下,求出最小的页码数量 $ k $,使得每一页都装满或只空一个,并且每一页的所有软件类型都相等,求最小的页码 $ k $。

Solution

首先,对于确定的 \(s\) 和某种的个数 \(c\),如果满足 \(c \in [x(s-1),xs]\),则可以用 \(x\) 块屏幕装下它
对于

\[x(s-1) \le c \le xs \]

变形为

\[l=\frac c s \le x \le \frac c {s-1}=r \]

如果其中的确包含一个整数,即 \(x'=\lceil l \rceil \le r\),取 \(x=x'\) 即可
于是可以简化为 \(x=[\frac {c-1} s]+1\),再利用上方条件进行合法性检查
于是我们考虑暴力枚举每页大小,但是每页大小是不能超过种类数最小值 \(+1\)
设种类数为 \(p\),则复杂度为 \(O(p \min(c))=O(p \frac n p)=O(n)\)
给出一个不规则的网格。共 \(n \leq 300000\) 列,每列有 \(a_i\) 个格子。现在要将 \(1 \times 2\) 的骨牌不重叠的覆盖在网格上,求最多能放的骨牌数量。
"<img src=""https://img2020.cnblogs.com/blog/1318245/202003/1318245-20200316173216142-322653436.png"" alt="""" loading=""lazy"">"

Solution

由于只有一个联通块,答案就是黑白染色后,黑色点数和白色点数的较小值
起初你有 \(k\) 个兵,你需要按顺序攻占 \(n\) 座城堡。为了占领第 \(i\) 座城堡,你需要至少 \(a_i\) 个士兵,士兵不会死,攻占成功后你可以获得 \(b_i\) 个士兵。攻占完一座城堡你可以派出至少一个兵驻守来获得这座城堡的分数 \(c_i\),你可以在你攻占完城堡 \(i\) 后立即派兵下车,或者在有向图上通向这个点的点处派兵下车。你需要在保证能攻占所有城堡的前提下,最大化你的得分。\(n \leq 5000, m\leq 3\times 10^5\),队伍中的人数无论如何不会超过 \(5000\)

Solution,

对于城堡 \(i\),如果要对它派兵,那么一定会在最后一个能向他派兵的地方派兵,
于是我们只需要考察其中的 \(n\) 条边即可,
\(f[i][j]\) 表示在第 \(i\) 个城堡处,还剩 \(j\) 个士兵的最大收益,
类似 \(01\) 背包的暴力转移,
定义 \(f(x)=[x\bmod 2=1](x-1) + [x\bmod 2=0] (x/2)\)
对于任意 \(x\),不断令 \(x=f(x)\) 进行迭代,最终会得到 \(x=1\),定义 \(path_x\)\(x\) 在这个迭代过程中出现过的所有值的集合
给定 \(n,k\),求最大的 \(y\),使得有至少 \(k\)\(i \in [1,n]\) 使得 \(y \in path_i\)

Solution

难度:L5

以下对于数的讨论都是在二进制意义下进行的
\(f(i)\) 表示 \(i\) 出现在 \([1,n]\) 多少个数的 \(path\) 中,设 \(g(i)\) 表示 \(i\)\([1,n]\) 中多少个数二进制意义下的前缀

  • 对于奇数 \(i\)\(f(i)=g(i)\)
  • 对于偶数 \(i\)\(f(i)=g(i)+g(i+1)\)

由于 \(f\) 序列的奇数项和偶数项分别单调,于是我们分别二分,找到最后一个 \(f(i) \geq k\) 的奇数项和偶数项即可
考虑如何计算 \(g(i)\),首先我们找到一个最小的长度 \(len\),使得 \(i2^{len+1} >n\),然后二分找到 \(mid\) 使得 \(i 2^{len}+mid \leq n\),显然可以二分得到,那么 \(g(i)=mid+2^{len}\)
总体复杂度 \(O(\log^2 n)\)
给出一个长度为 \(n\) 的序列 \(a\),当你在第 \(i\) 号位置是,你可以一步调到 \(i-a_i\)\(i+a_i\),前提是 \(1 \le\) 跳到的位置 \(\le n\),对于每一个位置 \(i\),你想知道最少需要多少步可以到达一个位置 \(j\),使得 \(a_j\)\(a_i\) 的奇偶性不同

Solution

\(i-a_i\) 个点,第 \(i+a_i\) 个点向第 \(i\) 个点连边,费用为 \(1\),所有奇数点向 \(n+1\) 连边,费用为 \(0\),所有偶数点向 \(n+2\) 连边,费用为 \(0\)
分别以 \(n+1\)\(n+2\) 为起点跑最短路即可
给定 \(n\) 个点,\(m\) 条边,以及两个点 \(s,t\),求点对 \((a,b)\) 的个数,满足任意一条 \(a\to b\) 路径都经过 \(s,t\)

Solution,,,

\(s\) 开始 DFS,能不经过 \(t\) 到达的点的集合记为 \(S\),,,
\(t\) 开始 DFS,能不经过 \(s\) 到达的点的集合记为 \(T\),,,
答案即为 \(|S/T||T/S|\),,,
## [CF1278D] Segment Tree - 扫描线,并查集,set

Description,,

给定 n 条线段,每个线段包括起始坐标,如果两条线段严格相交(非相连),则两条线段间有一条边,问能否构成一颗树。,,

Solution,,

很容易想到按左端点排序,因为对于线段 a,b,如果 a.l < b.l,则 a,b 相交当且仅当 b.l < a.r < b.r
判断树的问题,很容易想到并查集,,
我们将所有线段按左端点排序后扫描一遍,维护一个 set,每次扫描到线段 i 时,先检查满足 r 在 i.l 和 i.r 之间的线段是否存在,如果能找到,就在并查集中合并,然后再将 i 加入 set 中,因此这个 set 是按线段的 r 排序的,,
成树的充要条件是:在合并过程中,没有出现重复合并的情况,并且整个流程执行完后,所有的元素都在同一个集合中,,
给定一棵带权树,一共有 \(2k\) 个点,求任意选择 \(k\) 对不重复点,每对点距离和的最小值与最大值

Solution

难度:L4
考虑最小:如果一条边的某一侧有奇数个点,那么很显然这条边一定会被选择。反之,这条边一定不会被选择,可从归纳角度考虑。因此,这个边集是完备的匹配边集合,每个边会被计算且只会被计算一次。于是,满足这个条件的边的总权值和就是最小答案。
考虑最大:延续上方的思路,我们发现,每条边被利用的最多次数是它所连接的两部分的点数的最小值,这个最大次数对于所有点来说可以同时达到。从另一种角度入手,我们希望每个点匹配到一个很远的点,以重心为根,那么每个点匹配的点一定不在原来的重心子树内,那么就很自然地将问题转化为了求重心为根时所有点的深度和。

Description

n个人住在一个可以用数轴表示的城市里,第i个人住在一个整数坐标xi的房子里。第i个人可以和坐标xi - 1,xi+1一起来家里庆祝新年,或者呆在xi,每个人只能移动一次。对于房子在1或n的人,他们可以来到坐标0或n+1的房子。

例如,初始位置为x=[1,2,4,4]。最后的位置可以是[1,3,3,4],[0,2,3,3],[2,2,5,5],[2,1,3,5]等等。被占用的房屋总数等于在最终房屋中不同位置的总数。

所有人可以随意选择三种操作之一,然后计算有人的房屋总数。有人的房屋可能达到的最小数量和最大数量各是多少?

Solution

考虑最小值,相当于用多少个长度为 \(3\) 的框可以框住所有人
考虑最大值,我们扫一遍所有的房子,对于一个非空房子,如果前一个房子为空,就往前送一个人;如果这时还有多余的人,就往后面的房子里送一个人
### Description
给定一棵树,编号为 i 的点权值为 2^i,定义一条边的权值为这条边链接的两个点中深度较大的点的子树的点权和。给出总点数 n,按照边权从大到小给出每条边的深度较浅的点的编号,要求构造原树。

Solution

边权即子树和,那么同一条直链上的边权单调,且根处最大,叶子处最小。因此排在整个序列末尾的一定是叶子结点相关的边。一个结点时叶子结点,当且仅当它不曾在原序列中出现。
考虑一个构造过程,每一步我们会定出一条边,我们一定希望我们要定出的这条边边权最小,因此对于所有叶子结点(挂着他们的子树),维护小顶堆,权值为子树点权和,但是这样太难维护了,所以点权和直接用点自身的编号替代(题目条件的使用)。
我们按原序列倒序遍历所有的点,对于每个点,弹出堆顶与其连边(相当于一个非叶子和叶子的配对过程),配对后的点其实就被“删除”了,这个时候如果产生了新的叶子,那么也需要将其加入堆中。
### Description
e_b])$,求是否存在一个子集,使得子集中所有区间对的 \(first\) 区间对中互不相交和 \(second\) 区间对中互不相交二者恰好有一个成立。
""
""
""
### Description
有一个由 $ 1 $ - $ n $ 构成的排列,其中部分被删除(删除的元素由 $ 0 $ 代替),请用被删除的元素补全这个数列,使这个数列中相邻元素奇偶性不同的对数最少。\(n \le 100\)

Solution

\(f[i][j][0/1]\) 表示用了 \(i\) 个奇数,\(j\) 个偶数,上一位是奇数或偶数时的最小值
给定一棵有根树,每个结点有权值 \(a_i\),记 \(c_i\)\(i\) 的子树中权值 \(<a_i\) 的点的个数。给定 \(c_i\),构造 \(a_i\)\(n\leq2000\)

Solution

某个子树内的合法性只和这个子树内权值的相对大小有关,于是一定存在一种合法方案,使得所有点的权值互不相同,不妨设为一个 \(n\) 的全排列
于是我们考虑维护一个集合 \(S\),初态下 \(S\) 中包含所有点,设 \(d_i\) 表示 \(i\) 的子树中权值 \(<a_i\) 的仍然在 \(S\) 中的点的个数,显然初态下 \(d_i=c_i\)
我们每次从 \(S\) 中取出所有 \(d_i=0\) 的点,给这些点赋权
这些点之间存在祖先关系,那么显然深度浅的点应该赋小权
于是我们每次取出所有 \(d_i=0\) 的点把它们扔进一个堆中,每次把堆顶取出来并且给它赋权,同时给它所有祖先的 \(d_i-1\),如果某个祖先的 \(d_i=0\) 就把这个祖先扔进堆中
如果堆空了,但是还有节点没有赋权,则输出 NO
给定一个数 \(n\) 和一个数 \(m\),让构建两个数组 \(a\)\(b\) 满足条件
n]$ 之间
""
""
""
""
n]$ 填一个长度为 \(2m\) 的序列,使其单调不降的方案数
""
""
""
""
""
""
""
""
""
给定一个 \(n\leq 3\times 10^5\)\(m \leq 8\) 列的数字矩阵 \(a\),找出两行 \(x,y\),使得 \(\min_{j=1}^m \max(a_{x,j},a_{y,j})\) 最大

Solution,,,,

二分答案,考虑检验 \(mid\),将每一行大于等于 \(mid\) 的数设为 \(1\),反之设为 \(0\),压位后扔进桶,往 \(1\) 方向做一下高维前缀和,然后扫一遍桶即可,,,,
定义两个长度相同的串 s,t 为一对“神奇串”当且仅当 s 重新排列后可以变成 t。对于一对“神奇串” s,t ,定义他们为一对“超级神奇串”当且仅当能对它们划分成 k(k≥2)段(设为 s1,s2...sk,t1,t2...tk),使得所有的 1≤i≤k 都满足 si,ti 为一对“神奇串”。现在给你一个串 s,每次询问一个子串,问是否至少存在一个串使得该串与子串是一对“神奇串”但不是“超级神奇串”。

Solution,,,,,,

神仙的构造,,,,,,
如果这个串长度为 \(1\),显然 Yes,,,,,,
如果头尾字符不同,我们可以将所有和尾字符相同的移到开头,头字符相同的移到结尾,显然 Yes,,,,,,
如果字符种类数不小于 \(3\),并且头尾字符相同,我们可以将除头尾字符外的任意两种字符分别全部移到头尾,显然 Yes,,,,,,
其它情况 No,,,,,,
给定一个 \(n\times m\) 矩阵,其中元素为 \(1 \to nm\) 的一个排列,每次操作可以任选一个元素将它变为任意整数,或者选择一列将其循环移位(向上)一格,求使得矩阵变为标准型的最少操作次数

Solution

\(a[i][j]\)\(i\)\(j\) 列的数,\(c[i][j]\) 表示第 \(j\) 列循环移位 \(i\) 次后有多少个数已经匹配,则答案为

\[\sum_{j=1}^m (\min_{i=0}^{n-1} (i+n-c[i][j])) \]

考虑如何计算 \(c\),由于每个元素只会对一个 \(c[?][?]\) 产生贡献,所以我们判断每个元素是否可能被填在当列,如果可能,计算应该被填在的位置,算出坐标差值,然后对对应的 \(c[?][?]\) 计算贡献就好了

Description

给定一个长度为 \(n\) 的排列,你可以将它切成两段 \(A,B\),分别作为两个集合,对于第 \(i\) 个元素,可以花费 \(a[i]\) 的代价把它移动到对面的集合中。求至少花费多少的代价,才能使得一个集合中的任意元素比另一个集合中的任意元素小。

Solution

枚举初态分界点 \(pos\) 和分界值 \(val\),设此时的答案为 \(f(pos,lim)\),暴力计算的话复杂度为 \(O(n^2)\)
考虑到 \(f(pos,lim)-f(pos-1,lim)=\sum_{lim < p_{pos}} a_{pos} - \sum_{lim \ge p_{pos}} a_{pos}\),我们用线段树来维护对于某个确定的 \(pos\) 的所有 \(f(pos,lim)\),每次修改 \(pos\) 时,只需要将 \(1 \le lim < p_{pos}\) 部分 \(+a_{pos}\),将 \(p_{pos} \le lim \le n\) 部分 \(-a_{pos}\)。区间修改,区间询问最小值。
特别注意,lim 是可以 =0 的。
### Description
q$ 上的最小值,构造权值方案或者判定无解。
""
""

Description

给定一个由 $ n $ 个点组成的严格(不存在三点共线)凸多边形。
你要将这个图形平移 $ n $ 次,每次将一个顶点与原点 $ (0,0) $ 重合。
请判断这 $ n $ 个平移后的多边形除了与原点重合的点之外的点组成的多边形是否与原图形相似。
在读入中,保证输入的点按逆时针顺序排列,形成严格凸多边形。
$ 3\le n\le 10^5 $

Solution

最终的这个图形就是 \(S\)\(-S\) 的闵可夫斯基和
结论:新图形与原图形相似,当且仅当原图形是中心对称图形
### Description
给定一个序列,可以进行无限次操作,每次选定一个区间,将该区间内的所有数变成区间的平均数,求操作后字典序最小的序列。

Solution

考虑单调栈,每次如果栈顶比带入栈元素高就暴力弹栈,将被弹出的元素和带入栈的元素合并。

Description

\(f(s)\) 表示 \(01\)\(S\) 中多有少个子串中至少有一个 \(1\)。对于长度为 \(n\) 且恰好有 \(m\)\(1\)\(01\) 串,求 \(f\) 的最大值为多少。

Solution

要最大化 \(f\),对于给定的 \(n,m\) 就是要最小化 \(\sum x_i\),其中 \(x_i\) 代表第 \(i\) 段连续 \(0\) 的长度。
即将 \(n-m\)\(0\) 分成 \(m+1\) 份,每份的数量可以是任意非负整数,最小化 \(\sum x_i\),显然尽可能均匀分配是最优的,即保证 \(\max - \min \le 1\)
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200222161329936-1579682186.png"" alt="""" loading=""lazy"">"

Solution

找到边界然后循环扫一遍数个数即可
CF 题解汇总

Solution

  • \(2a>n\),一次性结束,直接输出 \(n\)
  • \(a \geq b\),那么一直修即可,直接输出 \(n\)
  • 否则,\(a\) 占弱势,我们考虑用 \(a\) 修一半需要的完整轮次数为 \([(n-1)/2a]\) ,那么这些轮中, \(a\) 修掉的个数为 \([n/2a]a\),而 \(b\) 修掉的个数则是 \([n/2], [n/2a]b\) 中的较小值。计算剩余量然后暴力修即可。

"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200222161604794-1518020709.png"" alt="""" loading=""lazy"">"

Solution

根据原字符串建图,每个字符是一个点,相邻则连边
然后从每一个度数为 \(1\) 的点开始爆搜连通块,合法情况下应该是一条链
CF 题解汇总

Solution

考虑从低位往高位贪心,设当前在处理第 \(i\) 位,更低位剩余的部分一共可以拼出 \(cnt\)\(2^i\)
如果 \(n\) 的这一位是 \(1\) ,那么这一位就需要处理

  • 如果 \(cnt>0\),那么直接从 \(cnt\) 里拿一个,答案不变
  • 否则,暴力向更高位找到最小的那一个,比如它在 \(j\) 位,那么将 \(a_j\)\(1\),同时将 \(a_{j-1},...,a_{i}\) 都加上 \(1\),并且答案增加 \(j-i\)

做完每一位后,维护一下 \(cnt\) 即可
(过晚了一分钟)
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200222161905519-1241913444.png"" alt="""" loading=""lazy"">"

Solution

不由分说地枚举分割点
\(f[i][j]\) 表示原串处理到 \(i\)\(s_1\) 处理到 \(j\)\(s_2\) 最多能处理到哪里

采用主动转移

任意情况, \(f[i][j] \to f[i+1][j]\)

如果 \(s[i+1]=s_1[j+1]\) ,那么 \(f[i][j] \to f[i+1][j+1]\)

如果 \(s[i+1]=s_2[f[i][j]+1]\) ,那么 \(f[i][j]+1 \to f[i+1][j]\)

时间复杂度 \(O(n^3)\)
有一个 \(n \times m\) 矩阵,初态下全是 \(0\)
如果两个相邻元素(四连通)相等,我们就说它们是连通的,且这种关系可以传递。
\(q\) 次操作,每次指定一个位置 \((x_i,y_i)\) 把它替换为 \(c_i\)
每次操作后求这个矩阵有多少个连通块。
\(q \leq 2\times 10^6\), \(n,m \leq 300\)

Solution

带删除的并查集问题可以离线,所以正着倒着各做一次,然后将答案做差就可以了
考虑正着做的过程,刚开始就是一块 \(0\) 的板板
每次我们创建一个新节点,然后试图将它与周围的节点合并,设合并的次数为 \(t\),那么这一次对答案的贡献(即这次操作新增了多少个连通块)就是 \(1-t\)
反向操作时同理,贡献带个负号就可以了
最后输出答案的时候,把贡献数组求个前缀和即可
给定一棵 \(n\) 个点的带点权的树,求树上的路径 \(x_1,...,x_k\) ,最大化 \(\sum_{i=1}^k ia_{x_i}\)

Solution

树上路径问题可用点分治。
考虑如何合并两条路径对每条路径,记 \(l\) 为长度(点数),\(v\)\(\sum_{i=1}^l ia_{x_i}\)\(s\)\(\sum a_i\) ,那么对于两条路径 \((l_1,v_1,s_1),(l_2,v_2,s_2)\),它们的并为 \((l_1+l_2-1,v_1+s_1l_2+v_2,s_1+s_2)\)
于是答案为 \(v_1 + v_2 + s_1l_2\),其中 \(_1\) 是和之前扫描过的有关的信息,\(_2\) 是和当前正在扫描的位置有关的信息
(之所以这样取的原因是,之后李超线段树中我们需要控制下标的区间,而 \(l\) 的范围是较小的)
对于某一次查询来说,\(v_2\) 是定值,于是查询只有一个参数 \(l_2\) ,所以现在我们要最大化 \(l_2s_1 + v_1\),不妨转化为

  • 插入一条直线 \(y=ax+b\),其中 \(a=s_1,b=v_1\)
  • 询问 \(x=l_2\) 与所有直线交点中最上面的那一个

标准的李超线段树模板
我又把点分敲错,数组开小

一杯茶一包烟,一个破题调一天CF 题解汇总
维护一区间 \([l,r]\)
人按照时间升序
考虑 \((l_i, h_i, t_i)\),当前的所有区间与这个区间取交
推到 \(t_{i+1}\) 时,所有区间的端点向两边扩张即可
注意把空掉的区间删掉
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200217152436837-1875568915.png"" alt="""" loading=""lazy"">"
看样例,>><>><,要构造 LIS 最短的,我们需要找最小链划分的方案,即包含最少的下降列
很容易想到把连续 < 的看成一段,比如样例就是

.|.|. .|.|. .

每一段内必须上升,考虑让它连续,然后让段末取当前没取过的最大值即可
要构造 LIS 最长的,同理,我们把连续 > 的堪称一段,比如样例就是

. . .|. . .|.

每段内必须下降,考虑让它连续,然后让段膜取当前没去过的最小值即可
CF 题解汇总
由于可以走重边,所以任意一条路径长 + 2 仍然对应至少一条合法路径
很显然我们有 \(3\) 种基本路径

不经过 \((x,y)\)

经过 \(x \to y\)

经过 \(y \to x\)

假设某个基本路径的答案是 \(d\),询问是 \(k\),如果同时满足以下条件,则该基本路径可以作为答案

\(d \leq k\)

\(d = k \ (mod \ 2)\)

于是暴力做即可
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200219125122889-844758489.png"" alt="""" loading=""lazy"">"
\(f[i][j]\) 为第 \(i\) 天在第 \(j\) 个位置放置的最大值,设 \(s[i][j]\) 是第 \(i\) 行的前缀和,则

\[\begin{align} f[i][j] & =s[i+1][j+k-1]-s[i+1][j-1]+ \\ \max_l & \begin{cases} f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (1 \leq l \leq j-k) \\ f[i-1][l]+s[i][j+k-1]-s[i][l+k-1] & (j-k+1 \leq l \leq j) \\ f[i-1][l]+s[i][l-1]-s[i][j-1] & (j+1 \leq l \leq j+k-1) \\ f[i-1][l]+s[i][j+k-1]-s[i][j-1] & (j+k \leq l \leq m-k+1) \end{cases} \end{align} \]

如果暴力转移,则复杂度 \(O(nm^2 )\)
如果 \(k\) 很小,那么对中间两种情况暴力转移,旁边两种由于只有 \(f[i-1][l]\)\(l\) 有关,可以预处理前后缀 \(\max\) 来解决,复杂度 \(O(nmk)\)
\(k\) 变大时,两侧的情况仍然暴力转移,中间的情况可以暴力用以 \(l\) 为下标的单调队列维护 \(f[i-1][l]-s[i][l+k-1]\)\(f[i-1][l]+s[i][l-1]\)
(如果想偷懒也可以敲个线段树维护一下)
(发现单调队列优化DP不太熟练,准备要复习下)

[CF1305E] Kuroni and the Score Distribution - 构造

Description

构造一个长度为 n 的,数字不超过 1e9 的,单调递增的,恰好有 m 个满足 \(i<j<k\)\(a_i +a_j=a_k\) 的三元组 \((i,j,k)\) 的序列。

Solution

要想让三元组个数最多,显然我们会按照 1,2,3,... 这样的方式构造。
注意在这个过程中,第 k 个元素(新加入)产生的贡献为 \((k-1)/2\)
如果我们想要添加的贡献不到 \((k-1)/2\),假设为 \((k-1)/2-x\),那么我们可以添加一个 \(k+2x\) 的元素。
按照以上的方法构造出的序列显然是最短的。
考虑如何补齐 n 个元素,我们可以从 1e9 向下抓若干个元素填在最后。
给一张联通无向图,边权全 1,其中有 k 个关键点,求选取一对关键点增加一条边之后 1~n 的最短路的最大值

Solution

\(1,n\) 为起点 BFS 出最短路数组,分别记为 \(a[],b[]\)
对特殊点的编号按照 \(x_i\) 升序排序,那么容易证明对于每个 \(x_i\),只需要考虑 \(y_{i+1}\) 即可
CF 题解汇总

Solution

a<b, delta=odd, ans=1
a<b, delta=even, ans=2
a=b ans=0
a>b, delta=odd, ans=2
a>b, delta=even, ans=1
CF 题解汇总

Solution

按照 \(p[i]\) 进行分段,如果某个 \(k\) 不存在 \(p[i]=k\),那么就把 \(i,i+1\) 分割开
处理出每一段的左端点和右端点
进而处理出每段的最小值和最大值
如果存在第 \(i\) 段的最大值大于第 \(i+1\) 段的最小值,就输出 NO
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200227163943707-1006572189.png"" alt="""" loading=""lazy"">"

Solution

前缀和搞一下即可
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200227164709495-875204331.png"" alt="""" loading=""lazy"">"

Solution

枚举 \(a\),枚举 \(b\ s.t. a|b\),则 \(c\) 一定是 \([c/b]b\)\(([c/b]+1)b\)
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200227171959945-535972828.png"" alt="""" loading=""lazy"">"

Solution

预处理出 \(i\) 个点组成的二叉树的最大答案和最小答案
递归做,由于只需要构造一种方案,我们让左子树大小能小就小,因此每次从小到大枚举左子树的点数并检验,如果检验通过就选定之
现在还需要确定左右子树各分配多少答案上去,一种构造性的想法是,要么让左子树选最小,要么让右子树选最大。对于任意一种其它方案,我们可以通过把左子树上的答案不断移到右子树上,直到某一边达到界限,故等价。
打错变量名查半天……
"<img src=""https://img2018.cnblogs.com/blog/1318245/202002/1318245-20200227173646033-1957811310.png"" alt="""" loading=""lazy"">"

Solution

\(x\) 关键字升序排序,依次枚举每个点
考虑对任意 \(x_j < x_i\),那么当 \(v_j \leq v_i\) 时,它们不会相交,且 \(dis\) 就是它们初态的距离 \(x_i-x_j\)
开两个树状数组,以离散化后的 \(v\) 为下标,一个维护个数和,一个维护坐标和
那么每次询问的答案就是 个数和 $\cdot x_i - $ 坐标和
然后把这个点插进去即可
有一个集合,三种元素,每种分别有 \(a_i\) 个,求最多能分出的不同的不可重非空子集的个数

Solution

贪心,先取 \(1\) 个的,再取 \(2\) 个的,最后取 \(3\) 个的
给定一个人两场比赛的排名和比赛人数,总排名按照两场比赛的排名和进行,问这个人的排名(即小于等于它的包括他自己的人数)

Solution

大力猜结论(见代码)
有 \(n\) 个位置,分别在上面盖楼,第 \(i\) 个不能超过 \(m_i\) 层,对任意一栋楼,它的左边所有楼中和右边所有楼中,不能都有比它高的楼,求最大化楼层总数和的方案

Solution

Easy:暴力枚举峰在哪,然后向两侧递推过去即可
Hard:既然都单调了,用单调栈维护一下单向的前缀/后缀答案,然后枚举峰位置拼起来即可
序列长度为 \(m\),初态为 \(0\),你可以从 \(n\) 个操作中选择若干个执行,第 \(i\) 个操作对区间 \([l_i,r_i]\) 中每个位置加上 \(1\),最大化最后是奇数的元素个数。保证如果施加了所有操作,一个元素的最大值不会超过 \(k \leq 8\)

Solution

首先将所有区间离散化成左闭右开区间,考虑状压 dp,为每个区间分配编号,编号的分配范围是 \(0\to k-1\),保证没有重叠即可,这样即可设状态为 \(f[i][j]\) 表示考虑到了第 \(i\) 个位置,在 \([pos_{i-1},pos_i)\) 这段区间内的有效状态是 \(j\),在 \([1,pos_i)\) 这段区间内收获的最大值
转移时,如果这个位置是结束也是开始,那么就可以选择保持或者改变;如果这个位置是结束,那么这个位就归零;如果这个位置是开始,那么决策是否打开。为了方便,我们在第 \(i\) 个位置上做区间 \([pos_{i-1},pos_i)\) 的决策,这样如果 \(popcount(j)\) 是奇数,就算上这一段的贡献,否则不算
没想到一个状压 DP 把我卡死了
每个学生的分数最少为 \(0\),所以我们只要把除了第 \(1\) 名学生之外的所有学生的分数全部给第 \(1\) 个学生就能使他的分数最大。
"<img src=""https://img2020.cnblogs.com/blog/1318245/202003/1318245-20200311072109764-2035492951.png"" alt="""" loading=""lazy"">"

Solution

实质上就是整个字符串左移若干位,多出来的部分挪到右边,并根据奇偶翻转
给定两个序列 \(a,b\),保证每个序列中所有数字的 GCD 为 \(1\),设 \(a*b=c\),给定质数 \(p\),求 \(t\) 使得 \(c_t\) 不能被 \(p\) 整除
\(n,m \leq 10^6, x \leq 10^9\)

Solution

要使 \(c_i \bmod p \neq 0\),则 \(a_0b_i, a_1b_{i-1}, \dots, a_ib_0\) 中至少有一项满足 \(a_xb_y \neq 0 \bmod p\),这要求 \(a_x,b_y \neq 0 \bmod p\),于是我们只需要按下标从小到大找到第一个 \(a_i \neq 0, b_j \neq 0 \bmod p\),那么 \(i+j\) 就是答案
考虑充分性,设第一个不能被 \(p\) 整除的是 \(a_i,b_j\),那么对于 \(c_{i+j}\),它的其它项中一定都含有 \(p\) 因子
对一个 \(n\times n\) 的棋盘,每个格子上有一个字母,表示遇到这个格子就向着某个方向走或者停止。现在给定从每个位置开始会走到的位置,或者死循环,试构造一个合法的棋盘,或者输出 INVALID。

Solution

除去死循环的部分,终点相同的点会形成独立的联通块,我们从终点开始反向 DFS 即可
如果死循环是单独的一个点,则 INVALID
否则,我们强行构造出一个二元环,然后当做第一种情况做即可
需要在 \(n\) 个人中选出 \(p\) 个人站着队伍中的各个位置上,再从剩下的 \(n-p\) 个人中选出 \(k\) 个人作为观众。第 \(i\) 个人作为观众可以有 \(a_i\) 的得分,作为队伍中第 \(j\) 个位置上的人可以有 \(s_{i,j}\) 的得分,求得分的最大值。\(n\leq 10^5, p\leq 7\)

Solution,,

将人按照 \(a\) 从大到小排序,这样如果敲定了哪些人是队伍,那么剩下的靠前的 \(k\) 个一定是观众,,
考虑状压 DP,设 \(f[i][j]\) 表示考虑了前 \(i\) 个人,队伍中各个位置的状态为 \(j\) 的得分最大值,决策下一个人放在队伍的哪一个位置,或者不入队,如果不入队则判定如果 \(i-popcount(j) \leq k\) 则去当观众,,
定义一个 \(n\) 元序列 \(p_i\),如果 \(n=1\),则序列权值为 \(0\),否则序列权值就是原序列排序后相邻两项乘积的和。现在等概率地选出一个子序列,问它的权值的期望是多少。支持动态单点修改。

Solution

对于静态情况,答案为

\[\sum_{i=1}^n \sum_{j=i+1}^n \frac{p_i p_j}{2^{j-i+1}} \]

考虑用线段树维护,对于区间 \([l,r]\),我们设 \(val\) 为当前区间权值,\(lv=\sum_{i=l}^r p_i2^{i-l}\)\(rv=\sum_{i=l}^r p_i/2^{i-l+1}\)\(sz\) 是当前区间内数的个数,则

\[val=val_L+val_R+\frac{1}{2} vl_Lvr_R/2^{sz_L} \\ sz=sz_L+sz_R \\ vl=vl_L+vl_R2^{sz_L} \\ vr=vr_L+vr_R/2^{sz_L} \]

对于单点 \(a\),它的 \(val=0, sz=1, vl=a, vr=a/2\)
考虑到序列中有重复元素,我们先将所有元素(包括修改的)一起读进来排序,然后将原始的先激活,修改后的先不激活(\(val=0,sz=0,vl=0,vr=0\)),一起挂在线段树上
将 \(i\)\(p[i]\) 连边,则在每个长度为 \(l\) 的环里,我们可以花费 \(\mathcal{O}(l^2)\) 的时间去暴力枚举答案
l)$ 合法
""
给定一棵有根树,每次询问给定一个点集,问是否存在根到某点的链,使得点集中所有点到链的距离不大于 \(1\)

Solution

将每次询问的结点按深度排序好,相邻的两个结点 \(p,q\) 一定满足 \(d[p]-d[lca] \le 1 \or d[q]-d[lca] \le 1\),其中 \(lca=lca(p,q)\)
必要性显然,充分性考虑让毛毛虫的茎一直往差值大的那边走即可

Solution

枚举选择一个中间点,计算把边上压到中间这条线上的答案
压的时候要考虑两边压和单边压的情况
(以下代码中的二分显得很累赘,纯粹为了偷懒而出现)

using namespace std;

define int long long

const int N = 200005;

int n,k,a[N],pre[N],suf[N],ans=1e18;
map<int,int> mp;

signed main() {
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++) {
pre[i]=pre[i-1]+a[i];
}
for(int i=n;i>=1;--i) {
suf[i]=suf[i+1]+a[i];
}
for(int i=1;i<=n;i++) mp[a[i]]++;
for(auto i:mp) if(i.second>=k) {
cout<<0<<endl;
return 0;
}
for(int i=1;i<=n;i++) {
int x=a[i];
int e=upper_bound(a+1,a+n+1,x)-lower_bound(a+1,a+n+1,x);
int g=n-(upper_bound(a+1,a+n+1,x)-a)+1;
int l=lower_bound(a+1,a+n+1,x)-a-1;
int sg=suf[n-g+1];
int sl=pre[l];
int tmp=sg-gx+lx-sl-(n-k);
ans=min(ans,tmp);
if(n-l>=k) {
int tx=sg-gx-(n-l-k);
ans=min(ans,tx);
}
if(n-g>=k) {
int tx=l
x-sl-(n-g-k);
ans=min(ans,tx);
}
//cout<<l<<" "<<e<<" "<<g<<endl;
}
cout<<max(0ll,ans);
}

对一个 \(n\times m\) 的矩阵,每个位置有权值 \(a_{ij}\),每次操作你可以将一个位置 \(+2\),或将四相邻的两个位置各 \(+1\)。如果一个矩阵经过若干次操作,可以使得所有位置权值相同,我们称它为好矩阵。问有多少个好矩阵满足大小为 \(n\times m\),且每个位置的权值都在 \([L,R]\) 内。

Solution

首先观察到,如果 \(nm\) 是奇数,一定合法;如果 \(nm\) 是偶数,则当且仅当 \(\sum_{(i,j)} a_{i,j}\) 是偶数时合法
\(nm\) 是奇数的方案数位 \((r-l+1)^{nm}\)
\(nm\) 是偶数时,若 \(r-l+1\) 是偶数,则所有方案中总和奇偶各占据一半,故 \((r-l+1)^{nm}/2\);若 \(r-l+1\) 是奇数,则显然总和为偶数的比总和为奇数的方案数多 \(1\),于是答案为 \(((r-l+1)^{nm}+1)/2\)

[CF1333D] Challenges in school №41 - 逆序对,冒泡排序

Description

给定一个含 L,R 的序列,一次操作可以将若干个相邻 R,L 对翻转,问能否通过恰好 \(k\) 轮操作完成整个翻转过程。

Solution

题目给出的交换方法很容易想到冒泡排序。
最大答案等于逆序对数,这个可以 \(O(n)\) 求出,最小答案不太好求。
每次先统计出逆序对数 x,然后暴力去做一轮冒泡,但是冒泡的次数上限是 x-k。
### Description
n$,求满足 \(|M|=k\) 的所有 \(M\) 中不完美值的最小值。
""
""
""
""
""
### Description
v$ 的最短路径的条数。
""
""
q) \to q$ 两段,最短路长度相加,最短路数量相乘。
""
""
### Description
给定 \(n \times m\) 的棋盘,每个格子有一个颜色和方向。如果一个机器人此时在某个格子中,那么下一时刻他会移动的这个格子的方向所指向的相邻的格子中。若干个机器人在棋盘上无限地走下去,请找出一种放置机器人的方案,需要保证任意时刻不会有两个机器人同时出现在同一个格子中,在最大化机器人总数的前提下,最大化初态下位于黑色格子上的机器人总数。

Solution

很显然我们需要对每一个“连通块”分别考虑,这个连通块一定包含一个环以及若干个内向链。
暴力找环用并查集维护当然可以,但是有点麻烦。
考虑到在足够长的时间后,所有机器人一定都会走到环上去,因此我们只需要给出一个足够大的 \(M\),求出 \(M\) 时间后,每个初态位置可以到达的位置,这些位置的并集的大小就是答案。
考虑倍增,令 \(f[i][j]\) 表示点 \(i\) 走了 \(2^j\) 步后的位置,常规处理即可。
### Description
给定一个字符串 \(S\) 和一个字符串 \(T\),每次操作可以从 \(S\) 的开头删去一个字符,把它加到一个初始为空的串的开头或结尾,不必删完,求有多少种不同的方法使得 \(T\)\(A\) 的前缀。

Solution

所谓要求 \(T\)\(A\) 的前缀,即要求 \(A\) 的前 \(T\) 个字符是 \(A\)
考虑 dp,设 \(f[i][j]\) 表示用 \(S\) 的前 \(j-i+1\) 个字符构造出 \(T[i..j]\) 的方案数。
考虑转移,每次若 \(T[i]=S[j-i+1]\),那么 \(f[i][j] \leftarrow f[i+1][j]\),反过来也同理。
初态条件可以直接令所有 \(f[i][i-1]=1\)
最终的答案即为 \(\sum_{i=|T|}^{|S|} f[1][i]\)

Description

给定一棵 $ n $ 个点的无根树,要求给每条边分配一个正整数权值,使得任意两个叶子节点之间路径上的边权异或值为 $ 0 \(。求最少要多少种不同权值,以及最多可以使用多少种不同权值。<br> 这里,填入的边权值可以为任意大。<br> \) 3 \le n\le 10^5 $

Solution

考虑最小值,如果存在两个叶子之间的距离为奇数,则答案为 \(3\)(没有连接叶节点的边上交替填 \(1,2\),部分叶子边可能填 \(3\)),否则答案为 \(1\)
考虑最大值,将每个结点的叶子结点合并为一个结点后,计算树边的总数
### Description
c$ 依次加入到序列 \(S\) 末尾。给定 \(n\) 求数列的第 \(n\) 项。
""
""
""
""
""
""

Description

给定无向图和一个权值多重集,用它给无向图分配边权,要求是全排列,求路径 \(a \to b \to c\) 最短长度。

Solution

考虑到 \(a \to b\)\(b \to c\) 可能有一段重复的 \(b - d\),枚举 \(d\),这样只需求出 \(a \to d, d \to b, b \to d, d \to c\) 的最小值
设对某个 \(d\)\(a-d,b-d,c-d\) 长度分别为 \(x,y,z\),则我们会将最小的 \(y\) 个边权分配给 \(b-d\),剩余中最小的 \(x+z\) 个分配给 \(a-d,c-d\),因此可以在 \(O(1)\) 中计算出长度,故时间复杂度为 \(O(n)\)
### Description
有一个 \(n \times m\) 的方格图,格子被染成了黑色或者白色。要在里面放一些单极磁铁,一个格子内可以放置多个磁铁。
定义磁铁的吸引:如果 N 与 S 处在同一行/列中,那么 N 会向着 S 的方向移动一格。
每行每列至少有一个 S。
对于每个黑色格子,至少存在一个 N 使得经过一系列吸引操作可以经过它。
对于每个白色格子,不存在任何一个 N 使得经过系列吸引操作可以经过它。
求至少需要几个 N 磁铁。

Solution

对于每个黑色连通块,暴力把每个格子放上 S,那么这个连通块中只要放一个 N,这个连通块就 OK 了。
一行/列中,不能存在两个不相邻的黑色块(因为每行每列至少有一个 S)。
一个格子可以放 S,当且仅当它是黑,或者它所在行列均没有黑。同时我们要求每行每列都至少有一个 S,因此还需要根据这个条件检验一下。
综上所述,我们首先判断每行/列中是否存在两个不相邻的黑块,然后判断对于每行每列是否都至少存在一个位置满足它是黑,或者它所在行列均没有黑。如果成立,那么我们输出黑色连通块的个数即可。
### Description
有一个质量为 \(1\) 的细菌。接下来的每一天,会有若干个细菌分裂成两个(0 $ \le $ 分裂的细菌的数量 $ \le $ 当前的细菌数),两个细菌的质量皆为原来细菌的一半。所有细菌分裂完之后每个细菌的质量增长1。

给出你一个整数 $ n $,构造方案能够在若干天后使得细菌质量的和等于 $ n $

Solution

分裂不会影响总质量,只会影响此后质量增加的速度,若当前数量为 \(x\),则 \(x \le \Delta m \le 2x\)
于是贪心地取,当不够的时候就将不够的一次取走即可
### Description
p,表示问第i行第j列格子在第p次迭代后是什么颜色。
""
""
""
""
""
""
### Description
m)$,每次只能从权值为 \(x\) 的位置走到权值为 \(x+1\) 的位置,初态下可以对若干个格子进行一些操作,每次使得一个格子的权值减小 \(1\)。求最少要操作多少次使得存在合法的路径。
""
""
""
""
""
j-1)$ 转移过来。
### Description
给定一个边长为 \(1\) 的正 \(2n\) 边形,求能容纳它的最小的正方形的边长。

Solution

根据对称性得,在转动 \(\pi / 4n\) 的时候取得极值,容易验证其为最小值。
考虑边长为 \(1\) 时,弦心距为 \(\frac {1} {2 \sin(\pi / 2n)}\),于是正方形边长为 \(2 \frac {cos(\pi / 4n)} {2 \sin(\pi / 2n)}\) = $ \frac {cos(\pi / 4n)} {\sin(\pi / 2n)}$。

[CF1354D] Multiset

Description

维护一个可重集。初始时里面有 \(n\) 个正整数 \(\{A_1,A_2,\cdots A_n\}\),它们的值域为 \([1,n]\)。现在有 \(q\) 个操作,共有两类:删除排名为 \(|k|\) 的数字,若不存在排名为 \(|k|\) 的数字,则忽略这次操作;加入数字 \(k\),满足 \(k\in[1,n]\)。输出任意一个数列中存在的数字或判定集合为空。

Solution

由于只需要输出一个数,我们可以考虑钦定输出最小的那个数。
二分答案,即此时我们确定了最后剩下的最小的数是多少,设为 \(mid\),那么小于等于 \(mid\) 的数我们都当做 \(0\),大于 \(mid\) 的数我们都当做 \(1\)
### Description
给定 \(n\) 个点的无向图和一个整数 \(k \le n\),要求解决一下问题中的任何一个:求一个大小恰好为 \(\lceil \frac n 2 \rceil\) 的独立集;求一个大小不超过 \(k\) 的环。已经可以证明对于任意给定的整数 \(k\) 一定可以解决这两个问题中的一个。

Solution

由于已经保证了对于任意给定的整数 \(k\) 一定可以解决这两个问题中的一个,我们不妨取 \(k=n\),此时如果原图是一棵树,那么我们直接二分图染色即可;否则,必然有一个长度不超过 \(n\) 的环。
考虑原问题,我们只需要找一个结点数为 \(k\) 的连通子图(由于原图是连通的所以我们一定能找到),对这个子图进行上面的求解即可。

Description

你要修理一堵墙,这堵墙由 \(N\) 个宽度为一的砖块构成,其中第 \(i\) 块砖的高度为 \(h_i\) 。你需要执行下列操作让这 \(N\) 块砖的高度变得全部相等。
1、使一块砖的高度加一,这需要花费 \(A\) 的代价。
2、使一块高度为正的砖的高度减一,这需要花费 \(R\) 的代价。
3、使一块高度为正的砖的高度减一,另一块砖的高度加一,这需要花费 \(M\) 的代价。
给定 \(N,A,R,M\) ,你需要求出使所有砖的高度变得相同的最小代价。

Solution

首先将 \(M\)\(A+R\)\(\min\),然后三分目标高度,能用 3 操作就先用 3 操作,剩下的用 2 操作。
## [CF1358D] The Best Vacation - 双指针

Description

一年有 \(n\) 个月,第 \(i\) 个月有 \(a_i\) 天,在每个月的第 \(j\) 天你将得到 \(j\) 个拥抱。你想要和某人待在一起 \(x\) 天(连续),求最多能得到多少个拥抱。

Solution

当我们选择的结尾是一个月的最后一天时,显然不会使得答案更劣,因此我们枚举选择的结尾是哪一天,这样可能的情况只有 n 种,预处理前缀和后用双指针维护即可。

Description

\(l,r\) 使得 \(\sum_{l \le i \le r} a_i - \max_{l \le i \le r} a_i\) 最大化。\(|a_i| \le 30\)

Solution

考虑枚举删除的数的大小 \(val\),那么现在只有 \(a_i \le val\) 的数才是可用的,这样原序列就被分割成了若干段,选择不能跨段。
假如相邻的两个不可用位置是 \(p,q\),那么可用区间就是 \([p+1,q-1]\),在前缀和序列上的选择位置就是 \([p,q-1]\)
我们考虑扫描固定一个左端点,右端点不断向右平移,如果累积和小于零则置为 \(0\),同时不断更新答案,遇到不可用点时,将累积和置为 \(0\) 并跳过。
### Description
a_n$,对于任意一个 \(x\) 都满足,对于任意一种排列 \(p\),都有 \(x \mod a_{p_1} \mod a_{p_2} \mod ... \mod a_{p_n} = Const\) 成立。
""
""
""
""
""
### Description
b$,构造满足条件的 \(n \times m\) 矩阵:矩阵每行包含 \(a\)\(1\),矩阵每列包含 \(b\)\(1\),矩阵剩下的位置全为 \(0\)
""
""
### Description
m \le 60$
""
""
""

[CF1363D] Guess The Maximums

Description

给定序列 \(a\) 的长度 \(n\)\(k\) 个互不相交的子集 \(S_i\),每次查询可以输出一些下标 \(q_1,q_2,...,q_c\) 并得到序列中这些位置的数的最大值。对每个子集 \(S_i\),求出序列 a 中不在该子集下标范围内的最大值。

Solution

通过不超过 11 次询问找出序列中最大值的下标 m,含有 m 的子集显然只有一个 \(S_x\),则对任意 \(S_i, i \neq x\) 其答案显然为 m,对于 \(S_x\),我们手动求一次不在该子集内的最大值即可。
### Description
给定一棵树,每个点有一个代价 \(a_i\),一个初始值 \(b_i\) 和一个目标值 \(c_i\),每次可以选择以 \(u\) 为根的子树,选择一个 \(k\) 并选择子树中 \(k\) 个结点交换其值,代价 \(k \cdot a_u\)。求最小代价。

Solution

树上前缀 \(\min\) 后,显然对于任意两个需要交换的点我们用且只会用它的 LCA 处来作为交换操作的根。
因此我们只需要把整棵树 DFS 一遍,在每个点处贪心交换所有能交换的,剩余的上传即可。
### Description
给定 \(n\) 个点的无向图和一个整数 \(k \le n\),要求解决一下问题中的任何一个:求一个大小恰好为 \(\lceil \frac n 2 \rceil\) 的独立集;求一个大小不超过 \(k\) 的环。已经可以证明对于任意给定的整数 \(k\) 一定可以解决这两个问题中的一个。

Solution

由于已经保证了对于任意给定的整数 \(k\) 一定可以解决这两个问题中的一个,我们不妨取 \(k=n\),此时如果原图是一棵树,那么我们直接二分图染色即可;否则,必然有一个长度不超过 \(n\) 的环。
考虑原问题,我们只需要找一个结点数为 \(k\) 的连通子图(由于原图是连通的所以我们一定能找到),对这个子图进行上面的求解即可。

[CF1365E] Maximum Subsequence Value - 贪心

Description

给出一个长度为 \(n\) 的数列 \(a\),你需要选出一个子序列,使其价值最大,输出最大的价值。对于一个长度为 \(k\) 的子序列,若在这个子序列中有不少于 \(\max(1,k-2)\) 个数的二进制位 \(i\) 上是 \(1\),则其价值增加 \(2^i\)

Solution

考虑当 \(k \le 3\) 时,选择所有的数一定最优。
\(k > 3\) 时,由于选择的数每增加一个,每一位要产生贡献要求的数的个数也会增加一个,这样无论如何都不会变得更优,因此我们只需要枚举选择三个数即可。
换言之,简单地说,当且仅当 \(k \le 3\) 时我们是在做或运算。

Description

给定两个长度为 \(n\) 的数组 \(a,b\),每次操作可以选择一个 \(k\),交换 \(a\) 中的长度为 \(k\) 的后缀与长度为 \(k\) 的前缀。求是否能通过若干次操作使得 \(a,b\) 完全相同。

Solution

观察到任意操作中,所有无序对 \((a_i,a_{n-i+1})\) 构成的集合是不变的。并且我们可以通过多次操作来实现对任意一对 \(a_i,a_{n-i+1}\) 的对调,或是对无序对 \((a_i,a_{n-i+1})\),\((a_j,a_{n-j+1})\) 的位置互换。
因此,只需要判断所有无序对 \((a_i,a_{n-i+1})\) 构成的集合是否相等即可。
### Description
a)=1\(。 "" x)=1\)
""
### Description
给定一个长为 \(n\) 的序列 \(a_i\) 和一个长为 \(m \le n\) 的严格上升序列 \(b_i\),要求将 \(a_i\) 划分为 \(m\) 段,第 \(i\) 段的最小值恰好为 \(b_i\),求划分方案数。

Solution

关键在于如何利用 \(b_i\) 严格上升这个条件。
考虑求出 \(a_i\) 序列的后缀最小值 \(f_i\),那么对于任意位置 \(i\),如果我们要让它作为第 \(j\) 段的首元素,那么必须要满足 \(f_i=b_j\),因为 \(b_j\) 必须要在后面这些数中至少出现一次,并且必须是后面这些数中最小的数。
### Description
给定一个序列,可以进行若干次操作,每次将一个数调到开头或者调到最后。求将序列排序的最小次数。保证序列中数字互不相同。

Solution

先离散化成排列,然后发现,不动的数就是原排列中的最长连续上升子序列。
充分性是显然的。
考虑必要性,对于任意一种操作方案,那些没有被操作的数必然会构成原排列中的最长连续上升子序列,因为这些数没被移动他们最后必然是连在一起的。

Description

一个级别为 \(1\)RDB 是一个单独的节点。

接着,对于所有 \(i > 1\),级别为 \(i\)RDB 的构成方法如下。

先求出级别为 \(i-1\)RDB,然后对于该 RDB 中的每个节点 \(x\)

  • 如果 \(x\) 没有孩子,那么给他加上一个孩子。
  • 如果 \(x\) 只有一个孩子,那么给他加上两个孩子。
  • 如果 \(x\) 已经有了超过一个孩子,那么我们跳过节点 \(x\)

接下来,我们定义一个 claw (见下图),它也是一棵具有特殊性质的树,并且将节点 \(1\) 称为这个 claw 的中心,其他的称为底部节点。
现在,给出一个级别为 \(n\)RDB,初始时他上面的所有节点都为绿色,你可以进行一些操作。

对于每次操作,你需要在给出的 RDB 中找到一个 claw,满足所有底部节点在 RDB 中都是中心节点的儿子,且这四个节点在 RDB 中都是绿色。然后将这四个节点染为黄色。

问最多可以将多少个节点染成黄色。

Solution

容易找到一个递推关系,\(n\) 阶树的根结点的三个子节点对应的子树,其分别为 \(n-1,n-2,n-2\) 阶的树,并且,当 \(3|n\) 时,根结点时被选择的,其它情况下根结点是不被选择的。
因此我们很容易得到递推关系 \(f_n = f_{n-1} + 2f_{n-2} + 4[3|n]\)
### Description
给定长度为 \(n\) 的数列,在其所有长度为 \(k\) 的子序列中,求最小的权值是多少。一个子序列的权值定义为其奇数位置最大值和偶数位置最大值之间的最小值。

Solution

考虑二分答案,现在如果我们要求这个最小值 \(\le mid\),也就是要求两个最大值中至少有一个 \(\le mid\)
因此检验时,我们只需要分别检查一遍奇数和偶数的情况即可。
### Description
T$,每次操作你可以选择 \(S\) 的一个子序列,将其循环移位一格,求最少操作多少次能将 \(S\) 变成 \(T\)
""
""

Description

给定一个长度为奇数 \(n\) 的环形序列,进行若干次操作:选择 \(i\),将其替换为 \(a_{i-1}+a_{i+1}\),并删除 \(a_{i-1},a_{i+1}\)。最后剩下一个数。求最后剩下的数的最大值。

Solution

找规律发现,会对答案产生贡献的,一定是第 \(...,i-4,i-2,i,i+1,i+3,i+5,...\) 个数的和。
暴力枚举 \(i\),前面只取奇偶性与 \(i\) 相同的,后面只取奇偶性与 \(i\) 不同的,最后取最大值即可。

Description

\(n \le 150, k \le 9\),求最小的非负整数 \(x\) 满足 \(f(x)+f(x+1)+...+f(x+k)=n\),其中 \(f(x)\) 表示 \(x\) 的各个数位的和。

Solution

每增加一位数,数字大小的增长是指数的,而 \(f\) 值的增长是线性的。

比如 $k=1$ 时,$f(8)+f(9)=17$,而 $f(80)+f(81)=17$,$f(98)+f(99)=35$,而 $f(980+981)=35$
猜想我们可以将所有合法的 $n$ 表示成 $f(x)+...+f(x+k)$ 的形式,且一定有 $a99..99bc$ 这样形式的 $x$ 满足条件,本质上我们相当于暴力枚举了 $x$ 的长度,最高位,最低二位的值,将它表示为 $i \times 10^j - l$,枚举 $i,j,l$(边界不大会证明) ### Description 给定一个长度为 $n$ 的数列,可以进行不超过 $2n$ 次操作,每次可以选择一个位置,将它的值设为当前整个数列的 mex。构造一种操作方案,使得整个数列的值单调不降。 ### Solution 我们考虑将整个数列做成 $0,1,2,...,n-1$ 的形式。我们给出一种构造方案使得能在不超过 $2n$ 步内将任何一个序列做成这种形式。 当整个数列的 mex 小于 n 时,执行 A 类操作,即将 $a[mex+1]$ 赋值为 $mex$;否则,执行 B 类操作,任意找一个不满足 $a[i]=i-1$ 的位置,将 $a[i]$ 赋值为 $mex=n$。 显然每一个 B 类操作后一定紧跟着一个 A 类操作,而一个 A 类操作会搞定一个位置,并且这个位置以后再也不会被操作到。 ### Description m \le 10^5$ "" "" "" "" "" pos]$ 中包含了 $i$,则若 $posb[i]$ 需要将 $pos$ 额外 $+1$ ### Description ...$)。如果 $h_i+p_t>l$ 则失败。问是否能走到 $n+1$。 "" "" "" "" ### Description 给定一棵树,树上每个结点刚开始有一个人,现在每个人需要走到一个不同于原来的结点,并且必须保证每个结点上仍然有且仅有一个人,在树上走一条边的代价为 $1$,求最小代价。 ### Solution 考虑这样一个过程,我们递归处理掉这棵树上的所有叶子结点,如果它们还没有移动的话,将它和它的父亲换,此时代价增加 $2$,然后删除这个结点。重复下去,直到树为空。注意当只剩下根结点的时候,它如果没有被换过,那我们只需要挑它的任意一个孩子跟它换即可。 ### Description 有长度为 $n$ 的两个数组 $a$ 和 $b$ 。一开始,答案 $ans$ 等于 $0$ 。现在我们定义如下操作:选择一个位置 $i$ $(1\leq i \leq n)$;让 $ans$ 增大 $a_i$;如果 $b_i \neq -1 $ 就将 $a_{b_i}$ 增大 $a_i$。如果每一个 $i$ $(1\leq i \leq n)$ 只能选一次,请问 $ans$ 最大是多少? 并给出 $ans$ 最大时选择 $i$ 的顺序。 ### Solution 对每个顶点算一个累积值 $f[i]$,如果 $f[i]>0$ 就向上更新。 最后扫一遍,对于一个点的所有孩子,先走那些 $f[i]>0$ 的,再走根,最后走那些 $f[i]<0$ 的。 ### Description 有 $n$ 对线段,初态下每对的第一条都是 $[l_1,r_1]$,第二条都是 $[l_2,r_2]$。定义总交集长度为每对线段的交集长度之和。可以花费代价 $1$ 来延长一条线段,往左或往右延伸 $1$ 个单位。求使得总交集长度到达 $k \le 10^9$ 的最小代价。 ### Solution 对于一对线段 $[l_1,r_1],[l_2,r_2]$,称 $[\min(l_1,r_1), \max(l_2,r_2)]$ 为这个线段对的边界线段。若 $[l_1,r_1] \bigcup [l_2,r_2] = [\min(l_1,r_1), \max(l_2,r_2)]$,则称这个线段对是连续的。 考虑一个线段对与它的边界线段之间的关系,显然线段对的实际长度和与它的边界线段的长度之间存在一个差值,如果相交则这个差值为正,相离则这个差值为负。 将一个线段对通过最小的步数操作,使得它的并集等于它的边界线段,这个过程称为填满一个线段。 我们暴力枚举要填满 $i$ 个线段对,这时若我们只在这些被选择填满的线段对上操作就可以完成目标,花费的代价是 $k-id$,其中 $d$ 是上述的差值;否则,在 $k-id$ 之外,我们还需要额外花费 $k-is$ 的代价,其中 $s$ 的边界线段的长度。判定是否需要后者的条件就是 $k-is$ 是否为正。 ### Description 现在有一些山发生了山体滑坡,这些山从左到右依次排布,第 $i$ 座山的高度为 $h_i$,且 $\forall i\in [1,n),h_i Proof. 考虑这样一种方法,每次取第 $i$ 个元素开始向左推进,若 $i=1$ 或者 $h_i - h_{i-1}<2$ 则结束,否则修改 $h_i,h_{i-1}$ 并继续向左推进。
在这样一轮推进中,若 $i$ 左侧的数字各不相同,则会一直推进到 $1$,这样可能会使得相等的对数增加 $1$;否则,推进操作会在 $i+1$ 的右边结束,可能会使得相等对数减少 $1$。 于是 $S=\sum h_i$ 和 $n$ 两个参数即确定了一个唯一的答案序列。
暴力构造这个答案序列的方法是:从序列 $0,1,2,...,n-1$ 开始,每次暴力对序列的一个尽可能长的前缀增加 $1$。
结论为

\[a_i = (i-1)+[\frac {s-\frac {n(n-1)}{2}} n] + [i<({(s-\frac {n(n-1)}{2})} \mod n)] \]

Description

给定一个 \(n \times m\) 的网格,每个格子有一个颜色,问有多少个同色菱形。\(n,m \le 2000\)

Solution

类似“最大正方形”的套路,设 \(f[i][j]\) 表示以 \((i,j)\) 点为下顶点的菱形的最大边长,转移时考虑 \((i,j),(i-1,j),(i-2,j),(i-1,j-1),(i-1,j+1)\) 这五个点是否相等,如果相等则从 \(f[i-1][j],f[i-2][j],f[i-1][j-1],f[i-1][j+1]\) 中取最小值转移过来即可。
### Description
给定有向图,在图上走的时候,出度为 \(i\) 的边,只能走到边权大小为第 \(c_i\) 小的边上面,问 \(c\) 数组有多少种,要每个点都满足:从这个点开始走都可以回到这个点。每个点的入度都小于等于 \(9\)

Solution

最终每个点一定只会有一个出点,将 \(p\) 的出度为 \(f[p]\),则显然 \(f[]\) 一定是 \(1..n\) 的一个全排列
考虑到 \(f[]\) 的关于 \(c[]\) 的各个位是独立的,因此可以分别枚举 \(c\) 的每一位,生成 \(f[]\) 的某些校验值(组合),与全排列比较即可,校验可以 hash,这里为了省事,对每一位预先生成一个随机数 \(w[]\),然后求和即可
### Description
动态维护一个技能集合,技能分为两种,普通技能和超级技能。所有技能会被按照一个排列执行,如果技能 \(i\) 被执行时它的前一个技能是普通技能,那么会产生 \(w_i\) 的贡献;如果是超级技能则会产生 \(2w_i\) 的贡献。每次添加或删除技能后,求当前技能集合的最大贡献。

Solution

考虑维护三个技能集合:setNormal 表示普通技能集合,setHigh 表示当前所有技能中,贡献较高的技能的集合,setLowsetHigh 的补集。
在任意时刻,我们控制 setHigh 的大小为当前超级技能的总个数,那么 sum(*)+sum(setHigh) 基本就是答案,但需要做一点修正。
考虑如果我们希望将所有的超级技能翻倍,但这时一定有一个超级技能是不能被翻倍的(显然我们会选择最小的那一个)。
考虑如果我们希望翻倍的技能中有一个不是超级技能,那么这时这些技能被同时翻倍是可以满足的。
因此,我们从上面的近似答案中,减去当前 setHigh 集合的最小值,再加上当前 setNormal 集合的最大值,就是答案。

Description

给定一棵有根树,每条边有一个 w 和一个 c,设这棵树的权值为所有叶子结点到根结点的路径上的 w 的和的总和。每次操作可以选择一条边,将其 w 变为 w/2(向下取整),花费 c 的代价。

Solution

先预处理出每条边的次数 \(d\)
如果只有一种代价,我们只需要将所有边作为 \((w,d)\) 扔进大根堆中,以 \((w-[\frac w 2])d\) 作为关键字排序。
有两种代价时,考虑维护两个优先队列,一个存 \(c=1\) 的,另一个存 \(c=2\) 的。比较行动哪个队列更优。
## [CF13E] Holes - 分块

Description

\(N\) 个洞,每个洞有相应的弹力,能把这个球弹到 \(i+power[i]\) 位置。共有两种操作:把 \(a\) 位置的弹力改成 \(b\);在 \(a\) 处放一个球,输出最后一次落在哪个洞,球被弹出前共被弹了多少次。

Solution

分块,记录每个块内每个位置弹出该块的时间 tim[i] 和弹出到的位置 pos[i]

[CF1400D] Zigzags - 二分

Description

给定一个长度为 \(n \le 3000\) 的数列,求有多少个四元组 \((i,j,k,l)\) 满足 \(1 \le i < j < k < l \le n\)\(a_i = a_k, a_j = a_l\)

Solution

枚举 \(j,k\),用前缀和统计 \(i\),用后缀和统计 \(l\)

Description

给定一个长度为 \(n\) 的序列,每次可以选择一个区间 \([l,r]\) 将区间中的每个数 \(-1\),或者选择一个位置 \(pos\) 和一个值 \(x\),将第 \(pos\) 个位置的数减去 \(x\)。需要保持所有的数非负。求操作直到所有数变成 \(0\) 的最小代价。

Solution

分治贪心,递归求解。对于区间 \([l,r]\),如果不用第一种操作那么答案就是区间长,如果用第一种操作,那么显然我们可以找到一个最小的位置 \(k\),将区间中所有的数减去 \(a[k]\),然后递归求解区间 \([l,k-1],[k+1,r]\)

Description

给定一个序列,每次可以从 \(i\) 跳到 \(j (>i)\) 当且仅当满足以下三个条件之一:

\(i+1=j\)

\(\max(h[i+1,j-1])<\min(h_i,h_j)\)

\(\min(h[i+1,j-1])>\max(h_i,h_j)\)

求从下标为 \(1\) 的位置跳到下标为 \(n\) 的位置花费的最小步数。

Solution

考虑 dp,设 \(f_i\) 表示跳到第 \(i\) 个格子的最小步数,那么很显然 \(f_i\) 序列一定是单调的,这是由第一个转移条件保证的。
先考虑第二个条件,分析 \(i\) 状态可以从哪些状态转移过来。
维护一个单调递减的栈,那么有且仅有加入 \(i\) 的弹栈过程中经历的所有栈顶是合法的 \(j\)
所以我们只需要在加入 \(i\) 的过程中,对每次弹栈后的栈顶 \(j\),做一次 \(j \to i\) 的转移即可。
对第三个条件也是同理的。
### Description
d_i)$ 的灯。
""
""
""
""
y+b[i] > d[i]$
""
""
### Description
给定一个长度为 \(n \le 200\) 的字符串 \(S\),和一个长度为 \(2\) 的字符串 \(T\),可以在 \(S\) 中任意修改不超过 \(m\) 个字符得到 \(S'\),求 \(S'\) 中与 \(T\) 相等的子序列的最大数量。

Solution

\(T\) 串为 ab,则定义 \(f[i][j][k]\) 表示对 \(S'\) 中的前 \(i\) 位,其中有 \(j\)a,且修改了 k 次的情况下,子序列的最大数量。转移时只需要枚举是否修改当前字符即可。

Description

游戏参数描述为 \(a,b,c,d\),表示有一个技能,单次攻击的伤害为 \(a\),随后的 \(c\) 秒中每秒恢复 \(b\),每次攻击后 \(d\) 秒后才能进行下一次攻击。求能造成的瞬时最大伤害为多少,无解输出 \(-1\)

Solution

无解的充要条件是 \(a>bc\)
对于一次攻击,在它执行后的每一秒,其影响分别为 \(a, a-b, a-2b, ...\),设 \(t(a,b)\) 为最大的满足 \(a-tb \ge 0\) 的整数 \(t\),显然 \(t=[\frac a b]\),则一个技能的存在时间如超过 \(t\) 秒则不如不用。
很显然我们需要使得第一个技能存在不超过 \(t\) 秒,因此我们可以容纳 \(n=[\frac t d]\) 组技能的间隔时间。因此我们执行 \(n\) 组完整的技能,外加一个技能的开头,因此造成的总贡献为 \((n+1)a - \frac {n(n+1)} 2 bd\)
### Description
数轴上有 \(n\) 个点,每次操作你可以将所有位于 \(x\) 的点移动到 \(x+1\) 或者 \(x-1\)。求将所有点移动到不超过两个整点的最小操作次数。现在对点集做出 \(q\) 次修改,每次添加一个点,或者删除一个点,你需要动态维护答案。

Solution

假设任意时刻的点的坐标升序排序后的序列为 \(\{a_i\}\)
考虑到答案一定等于 \(\max a_i - \min a_i - \max |a_i - a_{i-1}|\),我们只需要动态维护最大的相邻点距离就可以了。
可以维护一个对于所有 \(|a_i - a_{i-1}|\)multiset,每次暴力插入删除即可
### Description
给定一个正整数 n,将它的所有大于一的因数按照任意顺序排列在一个环上,你每次可以选择圈上相邻的两个数,在它们中间插入他们的最小公倍数,使得最后的环上不存在两个相邻且互质的数。你需要找到一个需要进行操作次数最少的排列。

Solution

一种确定的思路是,枚举最小质因子,用掉所有它的倍数,并注意把下一个质因子留一个数用来作为从这个最小质因子到下一个最小质因子的过渡。这种方法是容易证明的。
另一种思路是,从最小数开始,每次选择一个与上一个输出的数不互质的未被使用的最小的数输出。(非常优美但是不会证明)

Description

给定一个长度为 n 的序列 a,有 q 次操作,每次操作交换 a[l],a[r],在操作前和每次操作后求出 a 中所有子序列的交替和(\(s_1-s_2+s_3-s_4+...\))的最大值。

Solution

很容易想到线段树维护区间信息,可是这样太暴力了。
发现所谓子序列的交替和,实际上就是在原数列的差分数列中选出一些段,使得他们的和最小/最大。
基于上面这个感性的结论,我们可以将原问题转化为,选取若干个位置 \(i\),使得 \(\sum_i \max(0,a[i]-a[i-1])\) 最大。
显然我们只需要选择那些 \(>0\) 的部分即可。
\(f(i)=\max(0,a[i]-a[i-1])\),则每次修改 \(l,r\) 最多只会影响到 \(l,l+1,r,r+1\) 四个位置,我们先减去它们的贡献,修改完毕后,再把他们加回去即可。
### Description
给定一本字典的若干页,每页上会有若干个单词,这本字典的字母顺序是标准顺序的一个排列。求出任意一种排列或者判定非法。

Solution

首先考虑去掉页的限制,对每个单词,定义一个标号 \(iM+j\)\(i\) 是它的页码,\(j\) 是它是这一页中的第几个,则我们按这个标号对所有单词排序即可
对于相邻的单词,我们找到它们第一个不同的字符(如果有的话),在一张图上对这两个字母之间连边,表示谁在谁的前面
对这张图求拓扑序,拓扑序就是 DFS 的退栈序
可以边求边判,也可以求完以后扫一遍所有边看一下是否非法
### Description
?,其中 ? 代表通配符,即这个位置可以是任意一个字符。求所有能与这个串匹配的确定串中,子序列 abc 的数量之和。
""
""
""
""
""
### Description
给定一个字符串 \(s\),求至少对 \(s\) 进行多少次相邻字符交换操作才能使得 \(s\) 变成 \(s\) 的翻转串。

Solution

如果将整个交换过程看做一个置换,显然最少的相邻交换次数等于置换的逆序对个数。
那么我们将同一种字符在正序和倒序串中的出现位置都记录下来,然后顺序匹配即可。
这样就可以算出一个排列,我们只需要计算这个排列的逆序对数即可。求逆序对数直接树状数组即可,倒序扫描整个置换,把这个数后面比它小的数的数目加入答案即可。
### Description
k \le 70$。
""
""
""

Description

给定一张图 \((n \le 1000, m \le 1000)\),图上有 \(k\) 对点 \((a_i,b_i)\) 表示有一个运输项目从 \(a_i\) 运输到 \(b_i\)。现在你可以选择一条边将它的权值变为零,要求最小化所有运输项目的最短距离的和。

Solution

考虑将每条边 \(e(u,v)\) 的权值变为 \(0\) 对结果的影响,对于运输计划 \((a,b)\),其若不经过 \((u,v)\) 则为其原答案,要么经过 \((u,v)\) 则答案为 \(\min(d_{a,u}+d_{v,b}, d_{a,v}+d_{u,b})\),二者取最小值即可。
于是我们只需要预处理出所有点对之间的最短路,然后模拟上述过程即可。求所有点对最短路的过程可以用 Dijkstra 做到 \(O(nm \log n)\)

Description

给定以 \(1\) 为根的 \(n\) 个结点的一棵树,每个结点上有 \(a_i\) 个人,每个人可以选择任意的子节点走,直到走到叶子结点为止,问最后人最多的叶子结点最少有多少人。

Solution

考虑一个递推关系,对于 \(p\) 的所有孩子 \(q_i\),首先 \(p\) 的答案一定不小于 \(q_i\) 的答案,也不小于子树权值和除以叶子结点总数,同时,\(q_i\) 中最大答案若不小于平均分配的结果,则这个最大答案一定可以被 \(p\) 取到
因此设 \(f[p]\)\(p\) 的答案,\(sum[p]\)\(p\) 的子树权值和,\(cnt[p]\)\(p\) 子树中的叶子个数,则 \(f[p]=\max(q_1,...,q_k,sum[p]/cnt[p])\)

Description

有 n 道菜品被放入了一个烤炉中,每到菜品都有一个最佳取出的时间 \(t_i\)。现在按照一定顺序把菜品从烤炉中取出,每到菜品都有可能因为不在最佳时间被取出而造成不美味,定义这个不美味度为 \(|T-t_i|\),其中 T 是取出的时刻。求把所有菜品都取出来的最小不美味度。\(n \le 200\)

Solution

考虑到取出所有菜品的顺序一定与他们完成的时间先后顺序相同,设 \(f[i][j]\) 表示到了时刻 \(i\) 取出了前 \(j\) 个菜品,那么很显然有转移 \(f[i][j]=\min (f[i-1][j],f[i-1][j-1]+|i-t[j]|)\),可以压掉一维倒序转移。
### Description
给定一个数列,其中一些元素固定,另一些元素可以修改。要求修改最少的元素使得这个序列变成严格单增的序列。

Solution

首先通过 \(a_i \leftarrow a_i-i\) 将原序列变为非严格单增的序列。
固定元素将原序列分割成了若干段,每段内求一下 LCS,剩下的就是需要移动的。注意,如果超出了左右两侧的固定元素限制的值域,那么这个元素也必须被移动。

Description

给定一个长度为 \(n\) 的序列 \(a\),每次可以选择 \(3\) 个不相同的下标 \(i,j,k\),计算 \(a_i \oplus a_j \oplus a_k\),赋值给 \(a_i,a_j,a_k\)。问是否能通过不超过 \(n\) 次操作,使得所有数相同,构造方案。

Solution

构造的核心思路是我们发现,如果有 \(x,x,y\) 这样的情况,那么操作一次就可以变成 \(y,y,y\)
对于奇数长度的情况,比如 \(a,b,c,d,e \to x,x,x,d,e \to x,x,y,y,y \to y,y,y,y,y\)
对于偶数长度的情况,我们可以按照类似的方法进行构造,但是无论如何都会剩下一个数。
考虑到这样的操作是不会影响整个序列的异或和的,因此我们只需要对前面 \(n-1\) 个数构成的序列进行操作,最后判定最后一个数与他们是否相等即可。
### Description
给定一个 \(n\times m\)\(01\) 矩阵,每次操作可以将某个 \(2\times2\) 的矩阵内的 \(3\) 个数取反,请在 \(n\times m\) 步内将矩阵变为全 \(0\)

Solution

我们的基本思路是,任何一个 \(2 \times 2\) 的矩阵都可以经过不超过 \(4\) 次操作消去得到目标状态,因此对于任何一个边长为偶数的矩阵,我们只需要对于每个 \(2 \times 2\) 的小方块执行一次操作即可;对于一个边长为奇数的矩阵,我们先把它的最后一行(列)暴力消去,然后转化为偶数的情况进行处理。
对于一个 \(2 \times 2\) 的方块的不超过四步操作,并且显然操作最多只会有 \(4\) 种,每种要么进行 \(0\) 次,要么进行 \(1\) 次,因此总共只有 \(16\) 种可能,暴力枚举这些可能即可。

Description

给定长度为 \(n\) 的非递增序列。在一段路上依次有 \(n\) 个商店,第 \(i\) 个商店有一种商品,价格为 \(a_i\)。有 \(q\) 次操作,每次操作有两种。
1 x y 表示对于任意 \(i \in [1,x]\),令 \(a_i = \max(a_i, y)\)
2 x y 表示从拿着 \(y\) 元钱从第 \(x\) 个商店开始,如果能购买就购买一份,并往右走,求购买了多少件商品。

Solution

由于序列是单调的,每个人的购买序列一定构成不超过 \(\log n\) 个连续段,同时每次修改操作相当于区间覆盖。
因此考虑线段树上二分。
对于操作 \(1\),我们需要找到第一个不大于 \(y\) 的元素,设这个元素的位置为 \(pos\),则我们将 \([pos,x]\) 区间覆盖为 \(y\) 即可,因此线段树需要一个表示区间覆盖的标记。
对于操作 \(2\),我们从二分出下一个可以购买的元素在哪里(即二分找到第一个不大于 \(key\) 的元素的位置),再找到能从这个位置连续购买到哪个位置为止(即找到最后一个保持这段的和不超过 \(key\) 的位置),购买这一段,然后继续进行上述过程,直到到达序列末尾。
因此,线段树需要支持区间求和,二分答案找第一个不大于 \(key\) 的元素(在单调序列上),二分答案找最后一个前缀和不大于 \(key\) 的元素,区间覆盖,因此需要对于每个结点维护一个结点对应区间中的最大值最小值、区间和 \(sum\)、区间覆盖标记 \(tag\),当标记为 \(0\) 时表示无标记,否则表示区间覆盖为多少。
首先我们实现一个支持以上功能的线段树,然后遍历所有操作,对于操作 \(2\) 循环处理,其它操作直接调用即可。
### Description
给定一个长度为 \(n\) 的序列,每次可以对一个前缀或后缀 \(-1\),求能否使得整个数列为 \(0\)

Solution

将序列拆分为一个不上升序列和一个不下降序列的和,可以让不下降序列从 \(0\) 开始,每次遇到一个 \(a_i-a_{i-1} > 0\) 的位置,就将这个差值加进去,最后判定原序列减去这个不下降序列是否为一个不上升序列。

Description

给定两个数组 \(a,b\),长度分别为 \(n,m( m \le n)\)\(a\)\(1..n\) 的全排列,\(b\) 是一个 \(1..n\)\(m\) 排列。\(b\) 是目标序列,即我们需要通过以下的操作来构造一个答案序列使其等于 \(b\)。每次操作选择一个 \(t\),将 \(a_{t-1}\)\(a_{t+1}\) 插入答案序列末尾并将 \(a_t\) 删除。问有多少种不同的构造方案。

Solution

考虑对于出现在 \(b\) 中的每一个 \(a_i\),我们必然要删除 \(a_{i-1}\)\(a_{i+1}\) 中的至少一个。
\(f(a_i)\) 表示 \(a_i\)\(b\) 中的出现位置。
如果 \(a_{i-1}\) 存在,并且 \(f(a_{i-1}) \le f(a_{i})\),那么我们称这个 \(a_{i-1}\) 对于 \(a_i\) 是合法的。\(a_{i+1}\) 同理。
对于 \(a_i\),有如下三种情况:

如果 \(a_{i-1},a_{i+1}\) 均合法,那么我们可以删除任意一个,方案数乘 \(2\)。之所以现在可以删除任意,是因为 \(a_{i-1},a_i,a_{i+1}\) 的出现位置必然都在 \(b\) 中后面所有数之前,因此他们并没有区别。

如果 \(a_{i-1},a_{i+1}\) 中恰好有一个合法,那么我们把它删除即可。

如果 \(a_{i-1},a_{i+1}\) 均不合法,则无解。

### Description
给定一个长度为 \(2n\) 的序列,你需要把它分成两个长度都是 \(n\) 的子序列,两部分分别以降序和升序排列,定义一种方案的权值为 \(\sum_i |x_i - y_i|\),求所有方案的权值的和。

Solution

将绝对值视为差的形式,那么无论如何划分,权值都是较大的 \(n\) 个数的和减去较小的 \(n\) 个数的和。
### Description
q)-|p|-|q|$ 的最大值。LCS 指最长公共子序列。
""
""
f[i-1][j])-1;`

Description

给定 \(n\) 个自然数,每个数会与自己异或最小的数,向它连一条边。求至少删去多少个数,才能使这个自然数集合经过这样的操作构成的图是一棵树。边都是无向的,重边自动合并。

Solution

考虑在 0-1 Trie 中,如果结点 \(p\) 的子树中有 \(1\) 个有效叶子结点,那么这个结点一定会与子树外的结点连边,因此我们可以说 \(p\) 的子树是安全的。
相反地,如果 \(p\) 的子树内有 \(\ge 2\) 个有效叶子结点,那么这些结点之间一定会相互匹配连边,因此 \(p\) 子树内的这些节点就会与剩余的部分断开。
因此,对于一个结点 \(p\),它的左子树和右子树分别为 \(x,y\),如果两边的叶子结点数目都大于 \(1\),那么我们需要将一边的有效叶子结点数目删减到不超过 \(1\),才能使得整个过程是有效的。至于删除哪一边,需要递归做下去。
具体地,我们定义 \(f(p)\) 表示结点 \(p\) 的子树内的有效叶子结点最多可以保留多少个。
如果 \(p\) 的左子树中的有效叶子结点个数为零,那么 \(f(p) = f(p.rightChild)\)
如果 \(p\) 的右子树中的有效叶子结点个数为零,那么 \(f(p) = f(p.leftChild)\)
如果 \(p\) 的左右子树中的有效叶子结点个数都非零,那么 \(f(p) = \max(f(p.leftChild), p.(rightChild)) + 1\),即我们将一边删除到只剩下一个。
作为递归的边界,当子树内只有一个结点(或者层数达到叶子)的时候,返回一个值即可。
## [CF1450C1] Errich-Tac-Toe (Easy Version) - 构造

Description

给定一个网格,有的格子填了 X,要求不能有三个横着或者竖着的 X 或 O 相连,你可以把 X 改成 O。构造一种方案。

Solution

模仿黑白染色的思路,考虑对所有的格子按 \((i+j) \bmod 3\) 染色,那么无论横竖,相邻的三个格子一定横跨了三种颜色。
我们只看所有某一种颜色(一定存在一种颜色的数量满足要求)的格子,如果其中是 X 就改成 O,这样构造出来的一定是合法的。
## [CF1450C2] Errich-Tac-Toe - 构造

Description

给定一个网格,有的格子填了 X 或 O,要求不能有三个横着或者竖着的 X 或 O 相连,你可以把 X 改成 O,把 O 改成 X。构造一种方案,操作次数不超过 \(k/3\)

Solution

沿用 easy 版本的思想,但需要考虑一些性质
我们只需要让 3 个相邻的有 2 个不同就可以了
一定存在某一类,其中的个数不少于总个数的 1/3,我们钦定这一类不变,修改其它两类
在其他两类中,由于钦定一类为 X 一类为 O,正反两种方案中,一定有一种的修改量不会超过总数的一半
为了省事,我们在实现时,对于每一个类,用 3 种模式符描述:0 表示不修改,O 表示强行修改成 O,X 表示强行修改成 X,然后枚举即可
### Description
0)$ 处有一颗棋子,两人轮流将棋子向上或向右移动 \(k\) 个单位,棋子不能移出圆,谁无法移动谁输。
""
""
""
n)$ 在圆内。
### Description
交互题,用不超过 \(n+2\) 次操作猜出一个长度为 \(n\) 的数组,每次可以指定两个不同的下标,询问这两个位置的数的 AND 或 OR 或 XOR。

Solution

一个直观的思路是先猜出一小部分数,进而通过异或操作得出剩下的。
猜一个是不行的,猜两个似乎也是不行的。
考虑猜三个,我们可以用五个“方程”去求解前三个数,至于选取怎样的组合有很多种方案,可以写个暴力程序尝试几次或者手玩一下。

Description

\(n\) 个问题,有 \(m\) 个选手,每个选手有一个喜欢的问题区间 \([l_i,r_i]\),现在有两个讲题人可以选择两个区间长度为 \(k\) 的区间来讲题,每个选手只能听一个讲题人的讲题,并产生他听到的喜欢的问题数量的分数。通过选择讲题人讲题的区间,最大化分数和。\(n,m \le 2000\)

Solution

将选手按照峰值点 \(l_i + r_i\) 排序。暴力枚举将选手划分成两份的分界线,前半部分听第一个讲题人,后半部分听第二个讲题人。
假设现在已经划分好了 \([1,p], [p+1,m]\),对于前半部分的选手,计算出每个题目被记入的次数(利用差分前缀和),然后扫一遍算出讲题人该放在哪。对于后半部分也同理。

[CF1454F] Array Partition - ST表,二分

Description

给定序列 \(a\),要求将其划分为三个非空子串(设三个子串长分别为 \(x,y,z\)),使得 \(\max\limits_{i=1}^x a_i = \min\limits_{i=x+1}^{x+y} a_i = \max\limits_{i=x+y+1}^n a_i\)

Solution

枚举 x,那么 y 会受到两个区间的限制
min 的限制区间用 ST 表 + 二分解出
max 的限制区间用后缀 max + 二分解出
### Description
A_m}$ 使得这个子集中的最大值和最小值的差值不超过 \(k\),其中 \(m\)\(k\) 是给出的。现在问你这种子集有几个。
""
""
""

[CF1466F] Euclid's nightmare - 并查集

Description

给定 n 个二进制 m 位串 ai,求他们的线性基的大小,保证每个元素只有不超过两个 1 其它都是 0(以及按照顺序将元素选入线性基得到的序列)

Solution

如果所有串都恰好有 2 个 1,那么我们可以对每个位建立一个结点,任何一个串就转化成了一条边,环意味着线性相关,因此求这个图的生成树即可
考虑那些有一个 1 的串怎么办,我们添加一个虚点,所有只有一个 1 的串向虚点连边即可,这样如果出现了 01,11,10 的情况,就会成环
## [CF1467C] Three Bags - 思维

Description

给定 3 个集合,每个集合里有若干个数,每次可以从一个集合选择一个数 a,从另一个集合选择一个数 b,令 a=a-b,并且删除 b。操作到只剩下一个数为止。求剩下的这个数的最大值。

Solution

首先很容易想象出一个树形结构,奇数层为正,偶数层为负
有一种不错的情况是,第一层填一个数,第二层是两个来自不同集合的数,这样第三层就可以填剩下的所有数
考虑例外,如果我们只希望减去一个集合中的数,这样是可以做到的,即在第二层填上这个集合的所有数(如果不填所有,那么会掉到第四层,结果是一样的,总之不可能填在奇数层中),第三层填剩下的所有数,这样贡献为负的恰好是某一个集合内的所有数
## [CF1467D] Sum of Paths - dp

Description

给定一个长度为 \(n\) 个序列,第 i 个位置权值为 \(a_i\),有 \(k\) 次移动,每次移动往左或者往右移动一格,不能出边界,对于这样一个连续移动 k 次后得到的长度为 k+1 的位置序列,我们称为好序列,它的权值是经过的每一个位置的 \(a_i\) 的和,多次经过需要累加。现在对所有起始位置,求所有好序列的权值和,有 q 次对序列权值的修改。答案对 \(10^9+7\) 取模。

Solution

\(f[i][j]\) 为到达点 j 走了 i 步的方案数,也是从 j 出发走了 i 步的合法序列数
转移为 \(f[i][j]=f[i-1][j-1]+f[i-1][j+1]\)
那么第 i 步经过 j 的方案数就是 \(f[i][j] \cdot f[k-i][j]\)
\(g[j]=\sum_i f[i][j]\),即每个点被经过的总次数,这个值是不会变的
然后动态维护一个答案即可

[CF1470A] Strange Birthday Party - 带撤销贪心

Description

你有 \(n\) 个朋友,\(m\) 种礼物,第 \(i\) 种礼物的花费为 \(c_i\),对于每个人,都要选 \([1,k_i]\) 中的一个礼物给他,或者给他 \(c_k_i\) 的钱,每种礼物只能被送一次,问最小花费。

Solution

一个很费用流的模型,所以应该是带撤销贪心做了
基本贪心:所有 \(k_i\) 排序,将所有小于当前 \(k_i\) 的礼物放在一个堆中,如果当前的最小元素比 \(c_k_i\) 大,就给钱,否则把礼物给他
撤销:假设将 \(c_i\) 的礼物送给 a,如果送给 b,那么就要给 \(c_k_a\) 的钱给 a,相当于给 b 送了一个价值为 \(c_k_a\) 的礼物,因此对每个人 \(i\),给他发了礼物后,都在堆中加入一个 \(c_k_i\) 的元素表示撤销对这个人的操作并且给他钱

[CF1470B] Strange Definition - 数论

Description

称两个整数 \(x,y\) 相关当且仅当其 LCM/GCD 为完全平方数。给定一个长度为 \(n\) 的序列 \(a\),每一秒所有 \(a_i\) 都会变成序列中所有与它相关的数(包括自己)的乘积。令 \(d_i\) 表示序列中与 \(a_i\) 相关的数的个数,有 \(q\) 次询问,每次给定一个 \(w\),问 \(w\) 秒后最大的 \(d_i\) 是多少。

Solution

如果 \(x,y\) 相关,那么质因子分解出来每个因子的指数的奇偶性相同
因此质因数分解以后构成的指数序列模 2 可以看做一个 01 串,所有 01 串相等的构成一个集合,以下称其为一个集合的特征串
如果一个集合的特征串中全是 0,那么这个集合是不会变的
如果一个集合的大小为奇数,那么这个集合是不会变的
因此,只有第一秒时,那些特征串种含有 1 且大小为偶数的集合,会将它们的特征串变为 0,后面将永远保持下去
### Description
当一个人 A 的身高比另外一个人 B 的身高矮,且宽度比他小时,A 可以站在 B 的前面,或者当 A 身高比 B 宽度小时,且宽度比 B 身高小时,A 可以躺在 B 前面。想知道每个人是否有对应的人可以站或躺在他的前面,如果有,则输出那个人的编号,若有多个,则输出任意一个,如果没有则输出 -1。

Solution

将所有的数对调整成 \(w \le h\) 不会影响结果,这样就变成了一个简单的二维偏序,扫描一遍即可。
(太久没做题了卡半天。
## [CF1472G] Moving to the Capital - 最短路

Description

有 n 个结点的有向图,边长为 1,已知 di 表示 1 到 i 的最短路长,现在在第 s 个结点上,有两种操作:沿着某条边,走到一个 d 更大的点;沿着某条边,走到一个 d 小于等于当前的点(只能走一次)。求每个点出发,能走到的点中,di 最小的是多少。

Solution

一个显然的性质是,特殊操作一定会留在最后用
由于那种可以使用多次的转移边构成的一定是一个 DAG,所以可以考虑用记忆化搜索来处理最后的问题
我们先求出每个点能直接到达的 d 最小的点的 d,然后以这个为权值,跑一次搜索即可
## [CF1473D] Program - 线段树

Description

有一个变量 x 初始为 0,我们按字符串顺序进行“+1”或“-1”操作。有 m 个询问,每次询问我们删去字符串的 l 到 r 的符号后,x 在完成所有操作中出现的不同数值的总数。

Solution

线段树每个结点维护 sum 表示这一段的操作和,maxsum 表示执行这一段操作过程中到达的最大值,minsum 表示执行这一段操作过程中到达的最小值。
## [CF1473E] Minimum Path - 分层图最短路

Description

给定一个无向图,定义路径的权值为路径上所有边权的和减去边权的极差。求 1 到其它所有点的最短路。

Solution

很妙的转化:一条边权值变成 0,一条边权值加倍,求最短路
转化后的条件加上最短的条件,就得到了转化前的条件
于是分层图最短路即可

[CF1475F] Unusual Matrix

Description

\(n \times n\) 的 01 矩阵,每次操作可以反转一行或者一列。给定 \(a,b\) 两个矩阵,问 \(a\) 是否可以经过有限次操作变为 \(b\)

Solution

只要我们确定了某一行(列)的操作情况,所有的操作情况都会被确定,因此只需枚举第一行是否操作,后面的递推计算即可,如果算下来还有剩余,那么就无解。

[CF1475G] Strange Beauty - 数论

Description

\(n\) 个数,从中挑选一个子集,使得集合中任意两个不同的数 \(x,y\),有 \(x|y\)\(y|x\)

Solution

子集中最小的数必须要能整除所有的数,所有的数必须要能被最大的数整除
把整除关系画成有向边,则是一个有向无环完全图,我们取其中的最长路考虑
假定 \(a[]\) 升序
\(f[x]\) 为最大数选为 \(x\) 时的方案数,那么 \(f[y]=\max_{x \in S \and x | y} f[x]\)
暴力枚举因子转移即可

Description

给定一个长度为 \(n\) 的主串 \(S\),有 \(m \le 100\) 个询问,每次给定一个询问串 \(p_i\),长度不超过 \(10^3\)。输出有多少个询问串,满足存在 \(S\) 的两个不相交的子串拼起来与 \(p_i\) 相等。

Solution

一个询问串可行,当且仅当存在 \(k\) 使得 \(p[1..k]\) 在主串中的最小结束位置 \(pre[k]\) 小于 \(p[k+1,l]\) 在主串中的最大开始位置 \(suf[k+1]\),下面考虑如何求解 \(pre[],suf[]\)
\(S\) 的正串反串分别建立后缀自动机,预处理出正串自动机中每个结点对应的 \(endpos\) 集合的最小值,反串自动机中每个结点对应的 \(endpos\) 集合的最小值
具体地,在增量构造时记录一个 \(firstpos[p]\) 起初就等于 \(p\) 的结尾位置(新建结点的时候设置一下,当结点被建立时是唯一的),在构造完毕后按照拓扑序沿着后缀树上传取 \(\min\)\(lastpos\) 同理
现在,将 \(p\) 的正串扔到 \(S\) 的正串自动机上跑,只走转移边不走后缀链接,假设跑到了 \(p[1..i]\) 那么我们就得到了 \(pre[i]\),同理得到 \(suf[i]\)
### Description
给定数列 \(a[]\),对每个 \(a[i]\) 找到任意一个 \(a[j]\) 使得 \(a[i] \& a[j]=0\),无解则 \(-1\)

Solution

考虑将数装入桶 \(b[]\) 中并计算高维前缀和,那么求 \(a[i]\) 对应的 \(a[j]\) 只需要查询 \(b[j \oplus mask]\) 即可,其中 \(mask=2^{22}-1\)
### Description
B$,询问 \(B\) 是否严格在 \(A\) 内。
""
B$ 的所有点构造非严格凸包,如果这个凸包等于 \(B\),则符合条件。
""

Description

有一颗 \(n\) 个节点的树,\(k\) 次旅行,问每一条边被走过的次数。

Solution

模板题,复习一下 LCA 与树上差分的基本用法。
首先,对于每条边被走过的次数,我们把它转化为深度较大的那个点被经过的次数。
对于每一次旅行 \(begin,end\),计算 \(lca=LCA(begin,end)\),则每次操作转化为对 \(lca \sim begin\) 修改一次,对 \(lca \sim end\) 修改一次,对 \(lca\) 自身反向修改两次。
LCA 的求法很多,这里复习一下 ST 表求 LCA。
首先我们需要预处理出每个点在它的 Euler 遍历序上第一次出现的位置 \(first_occur[p]\) 和最后一次出现的位置 \(last_occur[p]\),那么对于一 \((p,q)\),其 LCA 即为 \(last_occur[p] \sim first_occfur[q]\) 这一的 Euler 遍历序列中出现过的深度最小的点。
所谓 Euler 遍历序列是这样一种 DFS 序列,每次我们访问一个点(包括回溯到到它)都将其扔进队列的尾部,因此这样我们得到的序列长度是总的度数 \(+1\)
ST 表就被用来支持 Euler 遍历序列的 RMQ 问题,相当于我们构造了一种 Sequence,其支持对其任意一段以对应关键字的 RMQ,其 key 即为树上的深度 depth,显然我们需要维护的是深度最小的点。
在 Sequence 的实现中,我们预处理出 \(f[i][j]\) 表示在 \([i,i+2^j)\) 这个区间中的 \(key\) 最小的点是哪一个。
整个实现的结构是这样,Sequence 提供一个支持区间最小关键字位置询问的操作接口,Tree 类用于树的存储,自己进行 DFS,并构建一个 Euler 遍历序列以 Sequence 形式存储,预处理的时候调用 Sequence 类的预处理,在遇到 LCA 询问的时候去调用 Sequence 提供的 RMQ 接口。对答案的计算放在主程序中进行。

[CF1C] Ancient Berland Circus

Description

一个规则 (等角) 多边形,得到了这三根柱子的坐标,输出古代竞技场的可能的最小区域面积。

Solution

始终围绕着该多边形的外接圆来做,假设三个顶点 A,B,C 对应的圆周角为 A,B,C,对应的对边长度为 a,b,c。
用海伦公式求出三角形面积 S,用正弦定理求出外接圆半径 R,用余弦定理求出各边对应的圆周角 oa,ob,oc(其实只需要求其中两个),然后求最大公约数得到正多边形每边对应的圆心角 theta,进而得到整个图形的面积 ans。
精度很玄学……
## [CF208E] Blood Cousins - dsu on tree, LCA

Description,

给你一片森林,每次询问一个点与多少个点拥有共同的 K 级祖先。,

Solution,

dsu on tree,
首先,求出一个点的 k 级祖先,并且把询问挂在他身上,问的就是这个点 p 子树内有多少个深度为 d 的点,
在 dfs 过程中,对每个点,递归处理各个孩子,同时保留其重孩子的贡献,再加上轻孩子的贡献,得到自身的贡献,
总结一下我们需要支持哪些事情:求 k 级祖先(倍增处理),将询问挂在祖先上,树上启发式合并处理所有询问,
找到3个不超过n的正整数(可以相同),使得它们的lcm(最小公倍数)最大。

Solution

可以做得很优雅吧,但我喜欢(只会)暴力一点
根据质数密度分布性质,最后所取的这三个数一定不会比 \(n\) 小太多(实在不行就取三个质数呀),所以我们钦定一个界,然后暴力枚举取最优即可
给出 N 个植物,每个植物都属于一个品种,共计 m 个品种,分落在不同的位置上(在一个数轴上,而且数轴是无限长度的),保证读入的位置是按照升序读入的。
现在我们可以进行一个操作:取任意一个位置上的植物,移动到任意一个没有植物的位子上去。
问我们最少进行多少次操作,能够使得从左到右,是按照品种升序排列的(1 ~ m)(单调不降),而且每种植物都相邻。

Solution

求一下最长非严格上升子序列即可
## [CF276B]

Description

给定字符串 \(S\) ,两人轮流,每次从字符串中任意取出一个字符并从原串中删去。如果某人某次操作前,串种剩余的字符集合经过排列可以得到回文串,那么这个人就胜利。求胜负。

Solution

显然这个字符串可以看成一个字母多重集合。那么我们统计出每种字符出现的次数。考虑有多少种字母出现次数为奇数次,记为 \(m\) 。如果 \(m \le 1\) ,那么先手胜利。
\(k=2\) 时,先手可以将将一个奇数次转化为偶数次,那么后手胜利;先手也可以将一个偶数次转化为奇数次,假如可以进行这样的操作,那么后手将这个新转化的奇数次转化为偶数次,局面回归到与开局等价的状态,直到某个时刻先手不能再制造出新的奇数次,此时必然后手胜。
\(k=3\) 时,先手先将一个奇数次转为偶数次,这样就转化到了 \(k=2\) 的状态,先后手状态偏移,于是先手胜利。
\(k=4\) 时,先手可以先将一个奇数次转化为偶数次,那么这时候转化为 \(k=3\) 故后手胜利;先手也可以先将一个奇数次转化为偶数次,然后仿照 \(k=2\) 情况进行后续,到某个时刻先手不能再制造出新的奇数次,此时必然后手胜。
同理可得后续情况。

Description

有一只载重为 \(k \le 5\times10^3\) 的船在两岸之间往返,有 \(n \le 50\) 个人要过河,每个人的体重只能使 \(50\)\(100\),问最少的来回次数以及对应的方案数。

Solution

\(f[i][j][0/1]\) 表示对岸已经有 \(i\)\(50\)\(j\)\(100\) 时最少的航行次数,\(g[i][j][0/1]\) 为对应的方案数
枚举本次走的 \(k,l\) 个数,利用组合数进行转移即可
最多转移 \(2n\) 轮一定能完事,复杂度 \(O(n^5)\)
给定由非负整数组成的n×n 的正方形矩阵,你需要寻找一条路径:
以左上角为起点
每次只能向右或向下走
以右下角为终点 并且,如果我们把沿路遇到的数进行相乘,积应当是最小“round”,换句话说,应当以最小数目的0的结尾.

Solution

考虑到最终答案只取决于 \(2,5\) 因子数中最小的那一个,所以可以拆开考虑,然后就是一个朴素的最小和路径dp了
注意如果原矩阵中包含零,答案要和 \(1\)min 一下
### Description
r]\(,问其中有多少对数间存在倍数关系。 "" "" "" "" "" "" ### Description a_1 = 1\) 。要以最低成本完全锯掉所有的树,计算这个最小代价。
""
""
""
""
""
""
""
""
""
""
""

[CF321A] Ciel and Robot

Description

你现在在一个迷宫的 \((0,0)\) 处,给定一个包含 \(\texttt{U,D,L,R}\) 的操作序列 \(s\),其中 \(\texttt{U}\) 表示向上走一格,\(\texttt{D}\) 表示向下走一格,\(\texttt{L}\) 表示向左走一格,\(\texttt{R}\) 表示向右走一格。你将会按照 \(s\) 从左往右的操作移动,并且重复若干次。问你是否能够到达 \((a,b)\) 处。

Solution

将一轮中能到达的所有位置即为 \(p_1,p_2,...,p_i\),目标位置记为 \(target\),每做完一轮的偏移量为 \(offset\)。若存在 \(i\),使得 \(offset | (target-p_i)\),则输出 Yes。

[CF321C] Ciel the Commander - 点分治

Description

给定一棵树,给每个点分配一个等级用英文字母表示,满足任意两个等级相同的点 x,y 的路径上必然有一个等级更高的点 z。

Solution

考虑选择点 p 并分配给它最大的权重,此时若删除点 p,留下的若干棵子树 t1,t2,...,tm 他们之间的问题已经解决了,只需要解决他们之内的问题。
这构成了一个天然的分治结构,我们希望使得分治结构的树高最小,采用点分治的策略,每次选择重心作为分治点即可。
回忆一下我们是怎样实现点分治的。每个点设置一个访问标记,代表这个点是否已经被作为分治点处理过,那么我们当前要处理的就是由未标记点构成的一个连通块。我们首先计算出每个点的子树大小以及最大子树大小(通过一次 DFS + 一次遍历实现),并找到具有最小的最大子树大小的点,标记这个点,给它分配级别,然后处理其所有未标记过的邻居所引导的连通块。

[CF321E] Ciel and Gondolas - 决策单调性dp

Description

有 n 个人在队列里,有 k 条船,第 i 条船到时,前若干个人可以上船。最后一条船将载走所有的人。第 i 个人和第 j 个人处在同一条船上会产生 uij 的沮丧值,求出最小的沮丧值和。\(n \le 4000, k \le 800\)

Solution

O(nnk) 的 dp 是显然的,由于满足四边形不等式,具有决策单调性
## [CF342E] Xenia and Tree - 分块,ST表,LCA

Description,,

给定一颗 \(n\) 个结点的树,初始时 \(1\) 号结点为红色,其余为蓝色。要求支持将一个结点变为红色,或者询问一个点到最近的红色点的距离。,,

Solution,,

对整个操作序列分块,则所有的影响分为块间的和块内的。块内的用 ST 表 LCA 来处理,块间的预处理好,即每处理完一个块,我们就用 BFS 计算好这个块的后续影响。复杂度 \(O(n \sqrt n)\),,

Description

给定一棵树,提供 \(3\) 种操作,每次指定一个点,将它的所有孩子染色为 \(1\),或它到根的路径染色为 \(0\),或询问它是否被染色。

Solution

复习一下树链剖分。主要是关于询问的部分。
我们按照这样的方式去处理一个询问:如果 top[p] 和 top[q] 不相等,那么我们就从 top 深度较大的那个(设为 \(p\))向上染一段 \([top[p],p]\),然后将 \(p\) 修改为 \(fa[top[p]]\)。最后对于剩下的,深度较大的 \(x\) 和深度较小的 \(y\),我们还需要染一段 \([y,x]\)。所有操作依据 DFS 序进行。
线段树需要支持区间覆盖和单点询问,当然也可以转化为差分的单点修改区间求和。
## [CF354C] Vasya and Beautiful Arrays

Description

定义一个数组的美丽度为这个数组所有元素的最大公约数,对于每个元素可以减一个 \(0 \sim k\) 的数,减完以后该元素必须非负,求出这个数组的最大美丽度。

Solution

显然 ans 不会大于最小数,设 ans 等于最小数,循环遍历每个数,如果不符合条件就将 ans 减一继续循环遍历
### Description
r_i]$,有 \(m\) 个询问,每次给定若干个点,问多少线段能至少覆盖这些点中的一个。
""
""
""
""
""

[CF375D] Tree and Queries - dsu on tree

Description

给定一棵树,根为 \(1\),每个点上有颜色 \(c_i\),有 \(m\) 次询问,每次指定 \(u,k\),问 \(u\) 为根的子树中,出现次数 \(\ge k\) 的颜色有多少种。

Solution

dsu on tree,每次找到先处理所有轻儿子,最后处理重儿子,处理完重儿子后不清空,暴力加上所有轻儿子的贡献,得到该子树内所有点的贡献。
由于要维护的是有多少颜色数 \(\ge k\),我们很容易想到用 BIT 的做法,但其实并不需要。
\(cnt[i]\) 表示颜色 \(i\) 出现了多少次,设 \(sum[i]\) 表示出现次数大于等于 \(i\) 的颜色数量有多少,那么在每次假设现在 \(cnt[i]\)\(x\) 变为 \(x+1\),我们只需要在 \(sum[x+1]\) 上加一即可,反之亦然。
### Description
给定一个括号序列,每次询问一个区间,求这个区间的所有子序列中,合法括号序列的最大长度。

Solution

考虑线段树,对于一个区间,其内部相互匹配后,一定会剩下若干的左括号堆积在右侧,若干的右括号堆积在左侧。
合并区间时,左边剩余的左括号和右边剩余的右括号会相互消去一部分。
### Description
给定一棵有根树,每次操作一个结点(将它加上 \(v\),孩子减去 \(v\),孩子的孩子加上 \(v\),以此类推),或者查询一个结点的值。

Solution

考虑维护两个序列,一个序列中所有深度为奇数的点是有效的,另一个序列中所有深度为偶数的点是有效的。如果操作的一个点是奇数深度的,那么就在前者中加,后者中减,若是偶数深度则恰好相反。当我们取出一个点的权值的时候,根据它是奇数深度的点还是偶数深度的点到对应的序列中取即可。
通过 DFS 序转化为区间操作单点询问,再通过差分转化为单点修改区间询问,于是用树状数组处理即可。
有一辆载重量为 v 的货车, 准备运送两种物品。 物品 A 的重量为 1, 物体 B 的重量为 2, 每个物品都有一个价值。 求货车可以运送的物品的最大价值。

Solution

考虑把物品分为两类,枚举 B 类选多少个,考虑到每一类中一定会优先选择价值最高的那些,排序即可

Description

求在两个给定字符串中各只出现一次的最短的公共子串。

Solution

对两个给定串建立广义 SAM,对每个结点,分别记录源于各个串的 \(endpos\) 集合的大小 \(cnt[i][0], cnt[i][1]\)
遍历所有节点 \(p\),若 \(cnt[p][0] = 1 \and cnt[p][1] = 1\) 则该点合法,用它的 \(minlen\) 更新答案
### Description
求满足 \(n+1\sim 2n\) 之间恰有 \(m\) 个数二进制表示中有 \(k\)\(1\)\(n\),输出任意一个解即可。

Solution

容易证明 \(n+1 \sim 2n\) 中有 \(k\)\(1\) 的个数随着 \(n\) 增大而单调不降
于是二分 \(n\),问题转化为求 \(n+1 \sim 2n\) 中有 \(k\)\(1\) 的数的个数,对于每一次求 \(sum(i)\)\(1 \sim i\) 中有 \(k\)\(1\) 的数的个数
\(f[i][j][0/1]\) 表示考虑到底 \(i\) 位,\(1\) 的数量为 \(j\) 的数,前 \(i\) 位是否已经达到最大时的个数,则
如果 \(a[i]=1\)

\[f[i][j][0]=f[i-1][j][0]+f[i-1][j-1][0]+f[i-1][j][1] \\ f[i][j][1]=f[i-1][j-1][1] \]

如果 \(a[i]=0\)

\[f[i][j][0]=f[i-1][j][0] + f[i-1][j-1][0] \\ f[i][j][1]=f[i-1][j][1] \]

### Description
给你一个长度为 \(n\) 的长字符串,完美子串既是它的前缀也是它的后缀,求完美子串的个数且统计这些子串的在长字符串中出现的次数。

Solution

KMP 求出 next 数组,则 next 数组从最后一位开始跳几次到 1 就是个数
对于出现次数,设为 f[],则 f[next[i]]+=f[i] 转移即可,初始值 f[i]=1
## [CF438D] The Child and Sequence - 线段树

Description

给定数列,查询区间和,区间取模,单点修改。

Solution

线段树,记录区间最大值,如果大于要取模的数就把修改暴力递归下去。
### Description
m]$ 的二叉树的个数。
""
""
""
""
""
""
""
""
""
### Description
\(n\) 个点 \(m\) 条边的无向图,另有 \(k\) 条特殊边连接 \(1-i\),问最多删除多少条特殊边,使得每个点到 \(1\) 的最短距离不变。

Solution

考虑先计算到每个点的最短路条数,然后判断。
如果 \(1 \to i\) 有特殊边,若特殊边长度 \(>\) 距离,那么显然这条特殊边没有贡献,直接删除。若等于距离,并且最短路条数 \(>1\),则删除这条特殊边,并将最短路条数 \(-1\)
注意这里 \(-1\) 以后我们并不需要去考虑它对其它的点的影响。

Description

给定 \(n\) 个点,\(m\) 条边组成的森林,有 \(q\) 次操作,每次操作要么询问某点所在连通块的直径,要么将两个不同的连通块连接,连接方式要使得连接后的直径最短。

Solution

设两个连通块的直径长度分别为 \(l_1,l_2\),则连通后的直径长度为 \(\max(l_1,l_2,\lceil l_1/2 \rceil + \lceil l_2/2 \rceil + 1)\)
并查集维护即可
特别注意初态的直径是需要建图求解的
(据说一条链的 Test 121 可以卡常?)
## [CF463C] Gargari and Bishops - 结论

Description

给定一个 \(n \times n\) 的国际象棋棋盘,每个格子有一个得分,你需要在棋盘上放置两个象(可以沿着对角线行走),要求不能有位置同时被两个象攻击到,而恰好能被一个象攻击到的位置可以获得格子对应的得分。求得分的最大值,以及放置象的方案。

Solution

首先,容易证明,若我们对格子黑白染色,则两个象一定放在异色的格子中。
于是我们可以处理出每条对角线的和,这样我们就可以 \(O(1)\) 询问将象放在一个格子中所能获得的得分。同时我们注意到,在满足上述条件的情况下,这两种方案所能获得的答案其实是独立的,因此我们只需要分别求出最大值即可。
找到同时存在于 \(k \leq 5\) 个排列中的 LCS

Solution

记录每行中每个元素的出现位置,那么本质上是一个 \(k\) 维偏序问题
对于 \(j<i\),我们暴力检查 \(pos[a[j]] < pos[a[i]]\) 是否对其它 \(k-1\) 个维度也成立,如果是就转移
### Description
a[n]$。现在你要找到把它分成三份的方法,使得每一份之内所有数的和相等。
""
""

Description

公司中有 \(n\) 名员工,开始时员工之间没有任何联系,接下来会依次发生 \(m\) 条事件,类型有三种。

  • \(y\) 成了 \(x\) 的上司
  • \(x\) 得到了一份文件,\(x\) 把文件传给了他的上司,他的上司又会传给上司的上司,直到某人没有上司,此时文件被销毁
  • 询问 \(x\) 是否看过第 \(i\) 份文件

Solution

考虑离线处理,时序扫描,第一轮处理 1,2 操作,第二轮处理询问
对于操作 1,在并查集中合并 \(x,y\)(顺序!),在森林中加边
对于操作 2,我们将这份文件记录下来,其信息为 \(x\) 和它在并查集中的根
时序扫描过程中,设第 \(i\) 份文件涉及的两个点是 \(p_i,q_i\),我们只需要检查 \(x\) 是否在 \(p,q\) 构成的链上即可
简单dp + 前缀和

你谷这乱标难度的风气真是……

Description

给定一个长度为 \(n\) 的序列,有 \(q\) 组询问,每次询问给定一个下标区间 \([l,r]\),问这个区间中,有多少数可以整除区间中的所有数。

Solution

对于区间 \([l,r]\)\(a_i\) 整除所有数即 \(a_i | \textrm{gcd}(a_l,a_{l+1},...,a_r)\)
\(g=\textrm{gcd}(a_l,a_{l+1},...,a_r)\),可以用线段树在 \(O(\log n)\) 时间内求出
\(a_i | g \and a_i \le g \Rightarrow a_i = g\),于是只需要统计区间中等于 \(g\) 的个数即可
对所有数字离散化后,对每种数用 vector 存储其出现位置,查询时在 vector 上二分即可
### Description
g$ 块,要用他们搭建高度最大的金字塔(第 \(i\) 层恰好有 \(i\) 块砖),每一层的砖的颜色必须相同,求有多少种方案。
""
""
""
### Description
j$,使得 \(a_i \ge a_j\) 并且 \(a_i \bmod a_j\) 的值最大,求 \(a_i \bmod a_j\) 的最大值。
""
""
b$,可以通过二分找到最大的 \(a\),显然此时余数也最大
""
有一组数,你要把他分成若干连续段。每一段的值,定义为这一段 数中最大值与最小值的差。 求一种分法,使得这若干段的值的和最大。 N < 1e6, a[i] < 1e9。

\(O(n^2)\) dp

\(f[i]\)表示分前\(i\)个数可以得到的最大和,则

\[f_i = Max_{0 \leq j < i}(f[j]+Query(j+1,i)) \]

其中\(Query(l,r)\)表示的是\([l,r]\)段的值域大小,可以通过\(O(n^2)\)预处理得到,然后\(O(n^2)\)暴力转移,总体复杂度\(O(n^2)\)

贪心

引理 每一段内一定是单调的
于是,显然将每个上升/下降区间划为一段一定最优。注意边界的决策。

Description

给定一棵带点权的树,求满足点权极差不超过 \(d\) 的连通子图的个数。\(n,d \le 2000\)

Solution

枚举每个点作为最大值 \(M\),那么此时只有点权 \(\ge M-d\) 的点是可以被考虑的。
树形 dp,设 \(f[p]\) 表示以当前选择的最大值点为根的情况下,\(p\) 的子树内,选取一个包含 \(p\) 的非空连通子图的方案数。
转移时,对于 \(p\) 的孩子 \(q_1,q_2,...,q_k\),依次枚举并更新 \(f[p]\),即 \(f[p] \leftarrow f[p] + f[p] f[q_i]\)
注意点权是可以重复的,这样统计会造成重复计算,我们必须要构造点之间的严格全序关系,因此当点权相等时,比较编号大小即可。

Description

给定一个数列,对于每个元素,问它属于以下哪一类:必须在最长上升子序列中;可能在最长上升子序列中,不可能在最长上升子序列中。

Solution

求每个元素开头和结尾的最长上升子序列长度 \(f[i]\)\(g[i]\)
如果 \(f[i]+g[i]-1<ans\),其中 \(ans\) 是整个序列的最长上升子序列,则 \(i\) 不可能在最长上升子序列中
如果存在 \(j\),使得 \(f[i]=f[j], g[i]=g[j]\),则 \(i\) 不在所有的最长上升子序列中
否则,\(i\) 一定在所有的最长上升子序列中
### Description
d_i]$,且他最多可以出演 \(k_i\) 次。问是否存在合法方案能使所有乐曲都被演奏一次。
""
""
""
""
""
""

[CF498C] Array and Operations - 数论,最大流

Description

有一个长度为 n 的数组 a 和 m 对数 \((i_1,j_1),(i_2,j_2)...,(i_m,j_m)\),对于每对数都满足 \(i_k + j_k\) 是一个奇数,且每个数都在 1 到 n 之间。你每次操作可需要挑一对数(给定的 m 对里面)\(i_k,j_k\),然后使 \(a[i_k]=\frac{a[i_k]}{v},a[j_k]=\frac{a[j_k]}{v}\),v 是一个不等于 1 的正整数,且 \(v\)\(a[i]\)\(a[j]\) 的公约数。问最多可以进行多少次操作。

Solution

每次消去一个质因子一定是最优解
奇数的性质显然保证了每次操作发生在两个不同的部分之间,这是一个显然的二分图
对于每个数的每个质因数建点,到源/汇(这取决于它位置的奇偶性)的容量为质因子的指数
对于一个操作 \((i_k,j_k)\) 我们在这两个数的所有相同的质因子之间连边,容量可以设为无穷
### Description
r_i]$ 之间。
""
""
""
### Description
c}`。
""
""
""

[CF519E] A and B and Lecture Rooms - LCA

Description

给定一棵树,有 \(m\) 组询问,每次给定两个点 \(u,v\),问到 \(u,v\) 距离相等的点有多少个。

Solution

一定是连接 \(u,v\) 的路径的中点以及它所发出的其它子树。
以下设 \(LCA(u,v)=l, MID(u,v)=c\)
如果 \(l=c\),那么砍掉与 \(u,v\) 有关的两棵子树即可。
如果 \(l \neq c\),假设 \(DEP(u)>DEP(v)\),则中点的子树砍掉与 \(u\) 有关可的一棵子树即可。
问题 1:到底怎么求中点?

中点存在的充要条件为 $2|(DEP(u)+DEP(v))$,如果中点存在,那么它的深度,是可以求出的:直链的情况为 $\frac {DEP(u)+DEP(v)} 2$,曲链的情况下,设 $len = DEP(u)+DEP(v)-2DEP(l)$,假设 $DEP(u) \ge DEP(v)$,则 $MID$ 的深度为 $DEP(u)-\frac {len} 2$。求出深度后,我们从较深点倍增向上跳即可。
问题 2:怎样砍掉点 $p$ 与点 $q$ 相关的一棵子树?
我们将 $q$ 倍增向上跳,使它成为 $p$ 的孩子,那么此时的深度显然是 $DEP(p)+1$。
### Description 给定一个长度为 $n$ 的字符串 $S$,求它的所有前缀中,哪些可以被划分为 $ABAB...ABA$ 的形式,其中 $A,B$ 是可以为空的串,且一共包含了 $k$ 组 $AB$。 ### Solution 考虑令 $S=AB$,枚举 $S$ 的长度 $i$,我们只需要检查 $LCP(ji+1,1) \ge i, j=1..k-1$,如果都满足,则可以将答案序列中往后的一段覆盖为 $1$ 用扩展 KMP 可以在 $O(n)$ 时间内完成对 $LCP(i,1), i=1..n$ 的计算 所有被枚举的长度共有 $O(n/k)$ 个,每次需要检查 $O(k)$ 个位置,故总复杂度 $O(n)$ 数轴上有n 个点,第i 个点的坐标为xi,权值为wi。两个点i,j之间存在一条边当且仅当 abs(xi-xj)>=wi+wj。 你需要求出这张图的最大团的点数。 ### Solution, 把每个点看作以 $(x_i,0)$ 为圆心,半径为 $r_i$ 的圆 那么如果不相交就有边相连, 干脆看作线段吧,所以就是求最大不相交线段数, 这就是一个很基础的贪心,以右端点为第一关键字,左端点为第二关键字 `sort`, 然后“能取就取”即可, ### Description 给定一个环状序列,每次操作选择一个区间,整体加上一个数,或者询问最小值。 ### Solution 对于一个区间,如果 $l \le r$ 则映射到 $[l+1,r+1]$;否则,映射到两个区间 $[l+1,n],[1,r+1]$. 线段树维护即可。 ### Description 给定一棵有根树,甲乙轮流操作,每次每人选择一条边走,从根走到一个叶子,甲希望最后得到的叶子结点的权值尽可能大,乙希望最后得到的叶子结点的权值尽可能小,两人都采取最优策略。现在需要给每个叶子节点分配权值,权值是 $1 \sim m$ 的全排列。问让甲分配权值则最后取得的最大权值是多少,让乙分配权值则最后取得的最小权值是多少。 ### Solution 树形 dp,设 $f[i]$ 表示 $i$ 点子树内能达到的最小排名,$h[i]$ 表示最大排名,则有

\[f[i]=\min_{i \to j} h[j], \ \ h[i]=\sum_{i \to j} f[j] \]

### Description
有一个小根堆,这个堆变成了一个 \(k\) 叉堆(形式转化,逐层排布),但这样不一定是合法的(即有若干个节点小于它的父亲)。问现在这个堆有多少不合法的元素。对所有 \(k\) 输出结果。

Solution

\(x\) 号点在 \(k\) 叉树上的父亲是 \([\frac {x-2} {k}]+1\)
枚举儿子来计算答案,显然可以整除分块,用差分计算答案,复杂度为 \(O(n \sqrt n)\)

Description

给定一张 \(n \times m\) 的网格图,每个格子可能是好的也可能是坏的,坏的走了就会结束,好的走了就会变成坏的。现在要求从起点出发,走到终点并在终点结束(意味着如果终点是好的那么需要经过一次后再到达)。求能否完成。

Solution

如果终点是坏的,那么可以完成当且仅当存在一条到达终点的路径。
如果终点是好的,那么可以完成当且仅当终点的四相邻格子中至少有两个 \(p,q\) 满足存在一条从起点分别到达 \(p,q\) 的路径。
### Description
b$,交换位置 \(a\)\(b\) 处的元素。在所有操作结束后,输出最终序列的逆序对个数。
""
r)$ 作为单个结点
""

[CF543B] Destroying Roads - 最短路

Description

给定无向无权图,求在保证 \(s_1,t_1\) 间距离不超过 \(t_1\)\(s_2,t_2\) 间距离不超过 \(t_2\) 的情况下,最多能破坏的公路数量。

Solution

如果只有一个约束,显然最短路
考虑有两个约束,那么最短路可能有交,也可能无交
无交的情况,答案就是 m-两条最短路长度和
有交的情况,枚举最短路端点 i,j,然后考虑两种可能的情况
两个人玩牌,首先两个人都拿出自己手牌的最上面的进行拼点,两张拼点牌将都给拼点赢得人,这两张牌放入手牌的顺序是:先放对方的牌再放自己的。若最后有一个人没有手牌了,那么他就输了,求输出拼点的次数和赢得人的编号,如果一直无法结束比赛,则输出-1.
用队列模拟即可。
## [CF546E] Soldier and Traveling - 最大流

Description

\(n \le 100\) 个城市,\(m \le 200\) 条边。然后人只能从走相邻边相连的城市。现在给你初始城市的每一个人数,再给一组每个城市人数。询问是否可以从当前人数变换到给定人数。

Solution

直接对城市拆点为入点、出点后跑最大流
## [CF551C] GukiZ hates Boxes - 二分,贪心

Description,

有 n 个位置编号 1 到 n,第 i 个位置上有 ai 个箱子,有 m 个人,开始在 0 位置,每秒钟每个人可以选择搬走自己当前位置上的一个箱子或者向前走一步,问至少需要多少时间能把所有箱子搬完。,

Solution,

二分答案加验证,假设有 mid 秒,一个人一个人的处理,每个人尽可能拿最远的那个箱子(反正一定会有人拿那个,先拿不会更劣),
比如现在我们安排一个人,我们找了最远的箱子给他(假设距离为 dist),那么他已经花费了 dist 时间走路并花费 1 时间搬箱子,剩下的时间可以由远到近处理掉若干个箱子,
### Description
给定一个只有 +* 和一位整数构成的表达式,你可以添加一对括号,使得这个表达式的值最大。* 的个数不超过 \(15\)

Solution

显然 ( 一定出现在式子最左边或者某个 * 的右边
显然 ) 一定出现在式子最右边或者某个 * 的左边
于是我们可以暴力枚举要将哪一段套括号,然后生成一个新的表达式,暴力计算即可
手写表达式计算器太烦了,于是直接 Python

[CF558E] A Simple Task - 线段树

Description

给定一个长度不超过 \(10^5\) 的字符串(小写英文字母),和不超过 50000 个操作。每个操作 L R K 表示给区间 [L,R] 的字符串排序,K=1 为升序,K=0 为降序。

Solution

线段树,每个结点维护区间内 26 个字母的出现次数,对每次排序操作暴力重新覆盖。

Description

给定一个 \(H \times W\) 的棋盘,有 \(N\) 个障碍格子,棋子每次可以向右或者向下移动一步,求从左上角到右下角有多少种不同的路线。\(N \le 2000\)

Solution

由于 \(N\) 较小,考虑 dp,设 \(f[i]\) 表示走到第 \(i\) 个障碍点(且之前不经过其它任何障碍点)的方案数,则

\[f[i]=g(x_i,y_i) - \sum_{j \to i} g(x_i-x_j+1,y_i-y_j+1 )\cdot f[j] \]

其中 \(j \to i \Leftrightarrow x_j \le x_i \and y_j \le y_i\)\(g(x,y)\) 表示无障碍情况下 \((1,1) \to (x,y)\) 的方案数,有

\[g(x,y)=\binom {x+y-2}{x-1} \]

Description

给定 \([l,r]\),求 \([l,r]\) 之间有多少个数满足它的任意数位都可以整除它本身。

Solution

\(f(i,j,k,full)\) 表示从高到低考虑到第 \(i\) 位数,前面构成的数模 \(2520=j\),前面这些数位的 \(LCM\)\(k\),当前是否贴合上界的方案数。把 \(k\) 离散化一下节约空间。
注意只需要记录 full=0 的情况即可,并且这些情况可以在各组数据间复用,因此就要求 \(i\) 要倒着记录。
### Description
b$,查询以 \(a\) 为根的子树内深度为 \(b\) 的结点上的字母重新排列之后能否构成回文串。
""
""
""
""
""
""
### Description
给定 \(n\) 个数,问能否选出一个非空子集使得和能被 \(m \le 10^3\) 整除。

Solution

正经解法应该是先容斥原理再背包。
可是写了一发 bitset 背包就冲过去了。
## [CF587C] Duff in the Army - 树上倍增,STL

Description,

有 n 个城市,由 n-1 条边连接。两个城市之间的道路是唯一的。有 m 个人,住在这 n 个城市中,现在给出 m 个人生活的城市编号。你需要回答,从一个城市 u 到另一个城市 v 的路径中,编号前 a 小的人的编号是哪些。,

Solution,

树上倍增处理路径问题,重载结点加法,

[CF598C] Nearest vectors - 计算几何

Description

有 n 个点,每个点表示原点到该点的向量,让你求出两个向量最小的夹角,输出向量的序号。

Solution

考虑暴力算出极角然后排序,用 atan2(y,x)
## [CF5C] Longest Regular Bracket Sequence - 贪心,dp

Description,

给出一个括号序列,求出最长合法子串和它的数量。,

Solution,

考虑贪心地预处理出每个括号匹配的最近位置,利用栈扫一遍即可。,
在处理出第 \(i\) 个字符的匹配位置 \(j\) 后,我们就可以用这一段的值去更新答案,设 \(f[i]\) 表示以 \(i\) 结尾的后缀的最大匹配长度是多少,那么很容易利用上面的信息来转移。,
### Description
给定一棵有 \(n\) 个结点的数,以 \(1\) 为根,树上的点的颜色为 \(c[i]\),对每个点,求以其为根的子树内的所有众数的和。

Solution

dsu on tree,首先预处理出每个点的重儿子 \(wson[p]\)。然后 dfs 整棵树,处理 p 的所有孩子时,先跳过重孩子,最后处理重孩子时,保留其贡献,并暴力加上轻孩子们的贡献,最后得到总贡献。

Description

\(n\) 堆石子,每次可以对一堆石子进行操作,如果当前石子是偶数,那么可以选择将这 \(2x\) 个石子分成 \(k\) 堆石子数为 \(x\) 的石子堆,还有一种没有前提的操作是取走当前堆的一个石子,问先手赢还是后手赢。

Solution

\(x\) 为偶数,则 \(SG(x)=\text{mex}(\{ SG(\frac x 2)^k, SG(x-1) \})\)
\(x\) 为奇数,则 \(SG(x)=\text{mex} ( \{ SG(x-1) \} )\)
先暴力计算出 \(x \le 4\) 的情况,其余满足
\(x\) 为奇数时,\(SG(x)=0\)
\(x\) 为偶数时,若 \(k\) 也为偶数,则 \(SG(x)=1\),若 \(k\) 是奇数,则 \(SG(x)=\text{mex} (0,SG(\frac x 2))\)
## [CF603R]

Description

给定 \(N \times N\) 的棋盘,两人轮流放棋子。棋子的上下左右四个格子不能再放棋子。不能操作的人负。判断胜负。

Solution

用的是很常见的思想。
如果 \(N\) 是偶数,那么后手永远在和先手对称的位置下棋就一定能赢。
如果 \(N\) 是奇数,先手在中心位置下棋并将自己变为上一种情况中的后手,先手胜。
从一个序列中每次取出一个回文串,求最少取几次(取出后两端外的数会相接)
f[i][i+1]=1+[a[i] \neq a[i+1]]$
""
""
""
### Description
对无向图求其中每条边必须被选中时的最小生成树。

Solution

现任意求出一棵最小生成树,建树,树上倍增支持询问 LCA 和链最大值。
如果选择的边是树枝则直接输出。如果是弦,则用这条弦换掉对应基本回路上的次大值,即对应树上路径上的最大值。
(就当复习一下写树上倍增了)
### Description
m \le 10^{13}\( "" r]\),则
""
""
""
""
""
### Description
给定一个长度为 \(n\) 的子序列 \(a\),再给定一个数字 \(k\),给出 \(m\) 组询问,每组询问给出一个区间,问有多少区间的异或和为 \(k\)

Solution

求一个区间的异或和,本质上就是求前缀和序列中两个数的异或,当然这两个点不能重合
于是考虑莫队,下面只讨论前缀和序列,用桶维护区间中的所有数,添加或删除时顺便记录一下答案即可
注意我们在维护答案时,要保证选择的是无序对

Description

完全图上有一棵生成树,生成树上的所有边边权为 \(x\),其它边边权为 \(y\),求最短哈密顿回路。 \(n \le 200000\)

Solution

\(x \ge y\) 时,显然走 \(y\) 边更优,但如果生成树是个菊花图则必须要走一条 \(x\) 边,这种情况要特判掉
\(x<y\) 时,我们希望尽可能走 \(x\) 边,这时就变成了一个树上最小覆盖的问题
考虑一个贪心 DFS 的过程,每到达一个新点 \(p\),我们知道它最多能有 \(2\) 度,设剩余度数为 \(2\),向下 DFS 到 \(q\),每个 DFS 过程会返回一个值,表示该点是否还有剩余度数,那么如果 \(q\) 有剩余度数,我们就可以在 \(p,q\) 之间加边,事实上也只需要将 \(p\) 的剩余度数 \(-1\)
## [CF620E] New Year Tree - 线段树,DFS序,位运算

Description,,

给出一棵 \(n\) 个节点的树,根节点为 \(1\)。每个节点上有一种颜色 \(c_i\)\(m\) 次操作。操作有两种:,,

  • 1 u c:将以 \(u\) 为根的子树上的所有节点的颜色改为 \(c\)。,,
  • 2 u:询问以 \(u\) 为根的子树上的所有节点的颜色数量。
    ,,
    \(1\le n,m\le 4\times 10^5\)\(1\le c_i,c\le 60\)

Solution,,

dfs 序转化为区间问题,线段树处理,每个结点用一个 int64 存颜色,存标记,需要有标记下传和结果上传,支持区间修改和区间询问,,

Description

给定 \(d\),如果一个数从高往低数第奇数位都是 \(d\),第偶数位都不是 \(d\),那么这个数称为 d-magic 数。
给定两个长度相等的数 \(l,r\)。求 \([l,r]\) 中有多少个 d-magic 数,答案 \(\bmod 10^9+7\)\(l,r\) 的长度 \(n \le 2000\)

Solution

转化为 \(f(r)-f(l-1)\) 的话还要做一下高精度减法,比较麻烦,所以我们就直接处理了。
对于每个状态,维护 \(pos\) 表示当前扫到从左到右的第 \(pos\) 位,\(rem\) 表示前 \(i\) 个数位构成的数的余数是 \(rem\),用两个标记 \(tagl,tagr\) 表示左边界和右边界是否已经与当前数分离。
转移过程显然是去枚举当前数位的所有可能取值,然后递归做下去。

[CF653F] Paper task

Description

给定一个括号序列,统计合法的本质不同子串的个数。

Solution

很容易想到,只要在传统统计本质不同子串的基础上修改一下即可。
考虑经典统计过程,对于第 \(i\) 个后缀,它的贡献为 \(n - sa[i] + 1 - h[i]\)
也就意味着,它产生贡献的区间是 \([sa[i]+h[i], n]\) 。换言之,对任意 \(j \in [sa[i]+h[i], n]\)\(s[sa[i],j]\) 是一个答案。
那么我们现在就是要判断这些答案中有多少合法。也就是对某个 \(i\) ,有多少个 \(j \in [sa[i]+h[i], n]\) , ,满足 \(\sum_{k=sa[i]}^j a_k = sum[j]-sum[sa[i]-1]\)\(0\)。 这里 \(a_i\) 表示括号序列,左括号对应 \(1\) ,右括号对应 \(-1\)
也就是询问下标在 \(sa[i]+h[i]\) 及之后, \(sum[k]=sum[sa[i]-1]\)\(k\) 有多少个。
按数值插进若干个 std::vector 然后暴力二分即可。
但这样会忽略那些中途出现右括号比左括号多的情况。因此,对于每个后缀,我们在统计时要找到最远能到达的位置,即第一个小于等于 \(sum[sa[i]-1]-1\) 出现的位置,我们要把这个位置之后的结果减去。暴力扫一遍,权值线段树维护即可。
考虑枚举行操作状态 \(i\),若末态 \(j\),且设\(a_i\)表示初态为\(i\)的列数,\(b_j\)为末态为\(j\)的列可以提供的贡献(翻转或者不翻转,预处理出),则答案为\(\sum a_{i \ xor \ j}b_j\),设为序列\(c_i = \sum_{j \ xor \ k=i} a_k b_j\),为标准异或子集卷积,FWT即可。
卷积题数组记得开两倍
### Description
给定长度为 \(n\) 的序列 \(\{a_i\}\),给定 \(k\),求有多少个子串满足 \(\oplus_{i=l}^r a_i \ge k\)

Solution

处理出前缀异或和序列,枚举 \(s_{l-1}\),要求 \(s_{l-1} \oplus s_r \ge k\),Trie 树上边跑边统计即可
具体地,当 \(k \oplus s_{l-1}\) 的某一位是 \(1\) 的时候,我们只能走这一边,直接继续往下走;当 \(k\) 的某一位是 \(0\) 的时候,\(1\) 的整个子树会产生贡献,于是我们记录这个贡献,并继续往 \(0\) 的那一边走即可
具体地,当 \(k\) 的某一位是 \(1\) 时,我们只能走与 \(s_{l-1}\) 的这一位相反的那一边,直接继续往下走即可
\(k\) 的某一位是 \(0\) 的时候,与 \(s_{l-1}\) 的这一位相反的那一边的整个子树都会产生贡献,于是我们记录这个贡献,并继续往相同的那一边走即可
## [CF675C] Money Transfer - 思维

Description

给你 n 个银行中的存款(负值表示借贷),是成环的,1 跟 n 相接,这 n 个数的和为 0。可以从 i 向 i 的相邻两侧转移存款,问你最少转移多少次,可以让所有银行的存款都为 0。

Solution

如果没有成环的条件,那么我们处理出前缀和序列 s,则所有 s=0 的位置右边可以作为一个分割点,每个分割点内单独处理,答案即为 n-分割点个数。
考虑到有成环的条件,相当于我们可以选取任意一个 s[i] 作为零点,于是问题也就转化为求前缀和序列中出现最多的数出现的次数。
### Description
给定正整数 $ n $,找一个最小正整数 $ t $,使得在 $ t $ 内有 $ n $ 组公比为整数的等比数列成立,\(n \le 10^{15}\)

Solution

倒过来显然是好做的,而答案又是单调的,考虑二分
检验时,我们可以枚举公比来计数
### Description
给定一个 \(n\) 个点的带权有向图,每个点有且仅有一条出边,对于每个点由它出发走 \(k\) 条边,求这 \(k\) 条边的权值和,以及最小值。

Solution

倍增

[CF703D] Mishka and Interesting sum - 离线处理,树状数组

Description

给定 \(n\) 个数的序列 \(a\)\(m\) 次操作。每次求 \(a_l,a_{l+1},...,a_r\) 中,出现偶数次的数的异或和。

Solution

即区间本质不同数的异或和与区间异或和的异或,关键是求区间本质不同数的异或和
考虑到 n 有 1e6,莫队跑不动了,考虑离线处理并用树状数组维护异或和,在每个数最后一次出现的地方放上这个数

[CF705B]

Description

ICG 游戏有若干个环,每次操作将一个环断成非空的两部分,节点数总和不变。集合初态为空,每次向集合中添加一个环,询问当前集合用于游戏的胜负。 \(n \le 10^5, a_i \le 10^9\)

Solution

考虑每个环,如果我们将操作后产生的环都看作这个环的一部分,那么一个环一定在被操作 \(a_i - 1\) 次后就不能操作了。所以只需要判断 \(\sum{a_i - 1}\) 的奇偶即可。

Code

### Description
k\le 1000\( "" "" "" "" "" "" ### Description m\le 20000\)
""
""
""
### Description
某人在起点处,到终点的距离为 \(s\)。汽车租赁公司提供 \(n\) 种车型,每种车型有属性 \(c_i\)(租车费用),\(v_i\)(油箱容量)。车子有两种前进方式:①慢速:\(1km\) 消耗 \(1L\) 汽油,花费 \(2\) 分钟。②快速:\(1km\) 消耗 \(2L\) 汽油,花费 \(1\) 分钟。路上有 \(k\) 个加油站,油都是免费的,加油不需要花费时间,且直接给油箱加满。问在 \(t\) 分钟内到达终点的最小花费是多少?若无法到达终点,输出 \(-1\)

Solution

考虑对于一段长为 \(len\) 的区间,设慢速 \(x\),快速 \((len-x)\),则

\[t=2x+len-x=x+len \\ v=x+2(len-x)=2len-x \Rightarrow x=2len-v \\ 0 \le x \le len \]

如果直接求解得出的 \(x > len\) 则说明无法通行,如果直接求解的 \(x <0\),我们设其为 \(0\) 即可
对所有的 \(t\) 求和,如果比给定的开始时间小,则可行
这样我们就得到了一个 \(O(nk)\) 的算法
考虑到费用本身并没有什么用,所以我们只需要二分出一个最小的,可以完成任务的 \(v\),然后对于所有 \(v_i \ge v\) 对应的 \(c_i\) 取最小值即可
## [CF734E] Anton and Tree - 树的直径

Description

给定 n 个节点的树,每个点为黑色或白色,一次操作可以使一个相同颜色的连通块变成另一种颜色,求使整棵树变成一种颜色的最少操作数。

Solution

将同色连通块缩点后,答案显然等于树的半径

Description

有一个 $ n $ 个节点的二叉树。

要求每个节点的两个儿子的子树最大深度相差不超 $ 1 \(,求最大深度。<br> \) n <= 10^{18} $

Solution

倒过来想,设 \(f(x)\) 表示深度为 \(x\) 的这样的二叉树,最少需要多少个点
显然有 \(f(x)=f(x-1)+f(x-2)\)
边界条件 \(f(0)=1,f(1)=2\) (由题意引发的数值偏移)
于是我们递推出 Fib 数列即可

[CF755B]

Description

两个人轮流说单词,每个人只能说自己的的单词库里的单词。被任意方说过的单词不能再说。一个单词只会在某个人的单词库中出现一次,但是可能同时出现在两个人的单词库中。最先没有单词说的人负。求游戏的胜负。 \(n,m \le 1000, L_s \le 500\)

Solution

最优策略必然是优先说掉所有公共单词,然后再说非公共单词。
设公共单词的数量为 \(c\)
\(c\) 为奇数,那么最后一个说出公共单词的是先手,此时若 \(n \ge m\) 则先手胜。
\(c\) 为偶数,那么最后一个说出公共单词的是后手,此时若 \(n > m\) 则先手胜。

Code

Description

给定 \(n\) 个排成一排的一模一样的球,要从中选出一些球并对它们进行分组,每个组中球的个数只能为 1,2,求取出 \(1,2,...,k \le 2^{16}\) 组的方案数分别为多少。

Solution

考虑 dp,设 \(f_{i,j}\) 表示考虑了前 \(i\) 个球并且已经取出了 \(j\) 组的方案数。
第一种转移方式是枚举最后一个球的去向,显然有三种:丢弃,单独成组,和上一个一起成组,则转移方程为

\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}+f_{i-2,j-1} \]

第二种转移方式是,考虑从中间断开,即将 \(n\) 拆分为 \(a+b\),那么如果第 \(a,a+1\) 个球不在同一组,则可以分成互不相干的两组来处理;如果是连着的,则对 \(1 \sim a-1, a+2 \sim a+b\) 分别处理,组数上再加上一组即可,转移方程为

\[f_{a+b,i} = \sum_{j=1}^{i-1} f_{a,j}f_{b,i-j}+\sum_{j=1}^{i-2}f_{a-1,j}f_{b-1,i-j-1} \]

考虑转化为多项式形式,设 \(F_n(x)=\sum_{i=0}^k f_{n,i} x^i\),则上述方程可以转化为

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{a+b}(x)=F_a(x)F_b(x)+xF_{a-1}(x)F_{b-1}(x) \]

考虑令 \(a=n,b=n\),则第二种转移方案的递推式改写为

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

同理有

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

整理一下,我们现在拥有的多项式形式的递推式有

\[F_n(x)=F_{n-1}(x)+xF_{n-1}(x)+xF_{n-2}(x) \]

\[F_{2n}(x)=F_n^2(x)+xF_{n-1}^2(x) \]

\[F_{2n-1}(x)=F_n(x)F_{n-1}(x)+xF_{n-1}(x)F_{n-2}(x) \]

\[F_{2n-2}(x)=F_{n-1}^2(x)+xF_{n-2}^2(x) \]

于是显然我们需要构建一个三元组 \(G_n = (F_n,F_{n-1},F_{n-2})\) 作为一个最小的单位。
根据第一个式子,我们可以做到 \(G_n \to G_{n+1}\),根据后三个式子可以做到 \(G_n \to G_{2n}\)
于是我们只需要对 \(n\) 分解一下即可。如果当前 \(n\) 是奇数那么就 \(-1\) 并且添加一个 \(G_n \to G_{n+1}\) 操作;如果当前 \(n\) 是偶数那么就 \(\div 2\) 并且添加一个 \(G_n \to G_{2n}\) 操作。循环执行直到 \(n=2\),最后构造初始状态并倒序复原所有操作即可。
### Description
平面上有 \(n\) 个与坐标轴平行的矩形。矩形的所有边的长度都是奇数。矩形不能相交,但它们可以互相接触。构造一种染色方案,使得所有相邻矩形的颜色都不相同。

Solution

考虑到“矩形的所有边的长度都是奇数”这个条件,那么如果两个矩形相邻,他们的横纵坐标奇偶性至少有一个不同。
因此我们根据一个顶点的坐标的奇偶性来染色即可。
### Description
给出一串有小写字母组成的长度为 \(n \le 10^3\) 的字符串。每个小写字母都有对应值 \(a_i\),分割原串,要求对应值为 \(a_i\) 的字符不能出现在长度超过 \(a_i\) 的字串中。问共有多少种分割方式,分割后会出现的最长子串长度是多少,采用最少分割次数的方式,最少分割次数是多少?

Solution

dp,分别对三种询问进行处理,\(O(n^2)\)
### Description
\(n\) 种物品,求一次取一件把所有种类取遍的概率不小于给定值 \(p/2000\) 的最小天数。

Solution

\(f[i][j]\) 表示前 \(i\) 次取出了 \(j\) 种的概率,则

\[f[i][j]=\frac j n f[i-1][j] + \frac {n-j+1} n f[i-1][j-1] \]

\(m\) 为一足够大的数(不妨取 \(10^4\)),则对于每个询问,找到最小的 \(k\) 使得 \(f[m][n] \ge p/2000\) 即可
一共有 \(N\) 个科目,其中有 \(M\) 个主要科目,只要 \(M\) 个主要科目都通过了,那么对应主人公就可以毕业了,也就是达成了目的。现在有一个列表,表示要通过第 \(i\) 门课程需要先通过的科目列表。现在主人公希望得到一个通过科目的顺序,使得最终他通过最少的科目使得主人公毕业。

Solution

如果有环,则无解
对于每个主科目,从这个点开始,在反图上 DFS 即可,遇到已经标记的点就退出
输出时按照拓扑序输出

Description

给定 \(n\) 个数字,分别为 \(2,3,...,n+1\),要对每个数字染色,使得一个数字是另一个数字的质因子时,两个数字的颜色不同,最小化使用的颜色数。求染色方案。

Solution

首先证明一定可以用两种颜色染完。不妨用第一种颜色染所有的质数,用第二种颜色染所有的非质数,显然满足条件。
而当不存在任意两个数使得一个数是另一个数的质因子时,可以用一种颜色染完所有的数。由于数字是 \(2,3,4,...,n+1\),这种情况会发生,当且仅当 \(n \le 2\)

Description

每扇门被两个开关控制,操作一个开关将改变所有它所控制的门的状态。求是否存在一个操作方案,打开所有的门。

Solution

对于开关设状态,\(1\) 表示操作这个开关,\(0\) 表示不操作
如果一扇门的状态是 \(1\),则控制它的两个开关状态必须相同(\(00/11\)
如果一扇门的状态是 \(0\),则控制它的两个开关状态必须相反(\(01/10\)

回顾一下 2-SAT 的建图方法
设有 \(n\)\(x_i\),逻辑约束为一个主合取范式
每条边 \(p \to q\) 表示选了 \(p\) 就必须要选 \(q\)
因此例如对于 \(i \or j\),我们连边 \(\neg i \to j\) 以及 \(\neg j \to i\)
考虑每个变量
如果 \(x\to \neg x\),则 \(x=0\);如果 \(\neg x \to x\),则 \(x=1\);如果 \(x \to \neg x \and \neg x \to x\) 则无解
因此,如果任意一个变量 \(x\)\(\neg x\) 在同一个 SCC 中,则无解,跑一遍 Tarjan 即可

回到本题,设某门对应的开关是 \(p,q\)
如果门是 \(1\),则 \(p \to q, q \to p,\neg p \to \neg q,\neg q \to \neg p\)
如果门是 \(0\),则 \(p \to \neg q, q \to \neg p, \neg p \to q,\neg q \to p\)
## [CF786B] Legacy - 线段树优化建图,最短路

Description,

有三种操作:1.进行单点与单点连有向边 2.进行单点与区间连有向边 3.进行区间与单点连有向边。求最短路。,

Solution,

发现没有区间和区间,这暗示的够明显了,线段树优化建图即可,

Description

给定一棵树,树上有一些点是关键点。一棵树是合法的当且仅当所有点离最近的关键点的距离不超过 \(d\),求最多能删除多少条边。

Solution

考虑从所有的关键点开始 BFS。假设当前位于点 \(p\),下一个要访问的点是 \(q\),若 \(q\) 被访问过而 \((p,q)\) 这条边未被访问过,则这条边可以被删除。
### Description
给出一个字符串,按照从前到后的顺序进栈,输出字典序最小的出栈序列

Solution

栈顶元素比未入栈的所有元素都小(不严格)时才出栈
### Description
a[i+1]$ 变成 \(a[i]-a[i+1]\)\(a[i]+a[i+1]\)。现在想要的是 \(A\) 序列所有元素的最大公约数大于 \(1\),请计算最少的操作次数。
""
""
""
""
""
## [CF7D] Palindrome Degree - dp

Description

一个长度为 n 字符串 s 被叫做 k 阶级回文串,当且仅当它本身是一个回文串,而且它长度为 n/2 的前缀和后缀都是 k-1 阶级回文串。任何一个字符串(包括空字符串)都至少是 0 阶级字符串。现在给定你一字符串,请你求出其所有前缀的的阶级之和。

Solution

\(f[i]\) 表示长度为 i 的前缀的阶数,如果是回文的,那么 \(f[i]=f[i/2]+1\),否则 \(f[i]=0\)
判断回文可以直接 Manacher
### Description
a_{n}\(,\)a_{i}$ 表示时刻 \(i\) 出现的数。定义 \(cnt_{x}(i)\) 表示到 \(i\) 时刻 \(x\) 出现过的个数。Alice 选择了一个数 \(m\),请帮助 Bob 选择一个数 \(k\ne m\),使得对任意时刻 \(i\),都有 \(cnt_{k}(i) \ge cnt_{m}(i)\)。若不存在这样的 \(k\) 请输出 \(-1\)
""
""
""
""
### Description
给定只含 ACTG 的字符串 S,有两种操作,要么修改某个字符,要么询问在一个区间内,与询问串的循环重复匹配的字符个数。询问串长度不超过 10。

Solution

\(Seg[i][j][k]\) 表示用于维护下标对 \(i\) 取模,余数为 \(j\),字符 \(k\) 的出现的动态开点线段树
有一棵 \(n\) 个节点的树,一共 \(q\) 次询问,每次询问给定 \(3\) 个点,求两条起点终点在这三个点上且不完全重合的路径的最多公共节点数。

Solution

枚举公共点,答案为 \((dis(a,b) + dis(a,c) - dis(b,c)) / 2 + 1\)

[CF833B] The Bakery - dp,线段树

Description

将长 n 的序列分成 k 段,每段的价值为区间内不同数字个数,使得总价值最大。\(n \le 35000, k \le 50\)

Solution

\(f[i][j]=\max f[l][j-1]+C(l+1,i)\)
现在,对与所有的 l,我们已经知道 C(l+1,i-1),我们希望快速得到 C(l+1,i)
对于一个特定的 l,如果 \([l+1,i-1]\) 中能找到 \(a[i]\),那么没有贡献
\(a[i]\) 上次出现的位置是 \(last[i]\),那么 \([last[i],i-1]\) 的 l 位置会 +1
我们用线段树维护(对当前的 i,j,所有 l)\(f[l-1][j-1]+C(l,i)\),每次修改 \([last[i]+1,i]\),每次查询最大值
注意在 dp 时,我们外层枚举 j,内层枚举 i,那么每次换 j 时需要开一棵新的线段树
## [CF837D] Round Subset - dp

Description

给你一个长度为 \(n\) 的数列,要求你从中选出 \(k\) 个数,使得这些选出的数的积的末尾 \(0\) 的个数大。

Solution

\(f[i][j][k]\) 表示从前 i 个数中选了 j 个,已经有了 k 个 5,最多能有多少个 2

Description

给定一个长度为 \(n\) 的数列 \(a_i\),每个数互不相同,每轮会从剩余的部分中取出一个下标序列字典序最小的值上升的子序列。按轮输出取出的数列。

Solution

先离散化一下
核心观察是:假如我们在 \([1,i]\) 中构建了两个序列,那么结束位置早的那个序列的末尾元素一定比晚的那一个要大
这个观察提供了可二分性
我们从左到右扫一遍整个序列,同时用一个 set 维护所有的末尾元素值,每次在末尾元素集合里二分来决定这个元素接在某个的后面还是另开一个
### Description
\(n\) 个长度为 \(9\) 且只包含数字字符且 互不相同 的串。需要对于每个串找到一个 长度最短 的识别码,使得这个识别码是且仅是这个串的子串。

Solution

字典树解法

将每个串的所有后缀加入字典树中
然后对于每个串,跑它的每个子串,如果跑到某个位置,子树中只剩下与自己同类的,就可行,最后对所有可行取最小值

map解法

用 map 保存每个子串是谁的,如果同时是两个以上的,这个子串就不能用
最后遍历 map 对答案进行更新
有一个长度为n的序列,Alice和Bob在玩游戏。Bob先手掌握决策权。
他们从左向右扫整个序列,在任意时刻,拥有决策权的人有如下两个选择:

将当前的数加到自己的得分中,并将决策权给对方,对方将获得下一个数的决策权

将当前的数加到对方的得分中,并将决策权保留给自己,自己将获得下一个数的决策权

假定他们都使用最优策略,求他们最后分别能获得多少分

Solution

考虑到无后效性,令 \(f[i][0/1]\) 表示 0/1 处理完了前 \(i\) 个数,先手和后手得分的差
转移即枚举上一次的位置
\(f[i][1]=max(f[j][0] - a[j+1] - a[j+2] - ... +a[i])\)
\(f[i][0]=min(f[j][1] + a[j+1] + a[j+2] + ... -a[i])\)
换个思路,记 \(f[i]\) 为从 \(i\) 开始往后选,能获得的最大收益,我们可以来决策每个位置是否翻面
\(f[i]=max(f[i+1], s[i]-f[i+1])\)
其中 \(s[i]\) 是后缀和

[CF86D] Powerful array - 莫队

Description

给定长度为 \(n\) 的序列 \(a\),有 \(q\) 次询问,每次询问给出两个数 \(l,r\)。对于每次询问,设 \(cnt_i\) 表示 \(i\)\(a_l,a_{l+1},\cdots,a_r\) 出现的次数,您需要求出 \(\displaystyle\sum_i cnt_i^2\cdot i\)\(1\le a_i\le 10^6\)

Solution

这种区间问题很显然就是莫队了,每次修改的时候我们减去原来的答案再加上新的
可能因为用了太多 vector 被卡常了,于是加了个奇偶交换

include <bits/stdc++.h>

using namespace std;

define int long long

vector belong;

struct MoSolution
{
vector a;
int block_size;

struct Question
{
    int l, r, id;
    friend bool operator<(const Question &lhs, const Question &rhs)
    {
        if (belong[lhs.l] == belong[rhs.l])
            if (belong[lhs.l] & 1)
                return lhs.r < rhs.r;
            else
                return lhs.r > rhs.r;
        else
            return lhs.l < rhs.l;
    }
};

vector<Question> questions;

struct Bucket
{
    static const int maxn = 1e6 + 5;

    vector<int> cnt;
    int ans;

    Bucket()
    {
        cnt.resize(maxn);
        ans = 0;
    }

    void Add(int x)
    {
        ans += 2 * cnt[x] * x + x;
        cnt[x]++;
    }

    void Dec(int x)
    {
        cnt[x]--;
        ans -= 2 * cnt[x] * x + x;
    }
} bucket;

vector<int> ans;
int n, m;

void solve()
{
    cin >> n >> m;
    block_size = sqrt(n);

    a.resize(n + 2);
    belong.resize(n + 2);

    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
        belong[i] = i / block_size;

    questions.resize(m + 2);
    ans.resize(m + 2);

    for (int i = 1; i <= m; i++)
    {
        cin >> questions[i].l >> questions[i].r;
        questions[i].id = i;
    }

    sort(&questions[1], &questions[m + 1]);

    int l = 1, r = 0;

    for (int i = 1; i <= m; i++)
    {
        int ql = questions[i].l, qr = questions[i].r;

        while (r < qr)
            bucket.Add(a[++r]);
        while (l > ql)
            bucket.Add(a[--l]);

        while (r > qr)
            bucket.Dec(a[r--]);
        while (l < ql)
            bucket.Dec(a[l++]);

        ans[questions[i].id] = bucket.ans;
    }

    for (int i = 1; i <= m; i++)
    {
        cout << ans[i] << endl;
    }
}

};

signed main()
{
MoSolution solution;
solution.solve();
}

Description

给定一个长度为 \(n (n \le 2\times 10^5)\) 的数列 \(a_i\),求满足区间 \(OR\) 大于区间最大值的区间的个数。

Solution

注意到区间或永远不会小于区间最大值
于是转化为求区间或等于区间最大值的区间个数
枚举最大值元素 \(a_p\),结合预处理得到其控制的(下标)区间 \([l,r]\)
此时我们需要得到它向左/向右能扩展的最大长度
考虑到单调性,利用 ST 表即可
### Description
k \le 1000$。
""
""
""
给出一个 n 个点 m条边的无向图,每条边有边权,共 Q次询问,每次给出 \(k\)条边,问这些边能否同时在一棵最小生成树上。

Solution

所有最小生成树中某权值的边的数量是一定的
加完小于某权值的所有边后图的连通性是一样的
对于每个询问,每种权值分开考虑
对每个权值,加完小于这条边的权值后的所有边
然后判断这个权值在缩点后图上是否成环
因此需要跑一次 Kruskal 并且记录下对于每条边,加完权值小于它的所有边后,其两个端点所在的连通块编号
这样询问时只需要拿着并查集搞就可以了

[CF903D] Almost Difference

Description

定义函数 \(d(x,y)=\begin{cases}y-x,\text{if }|x-y| >1\\0,\text{if }|x-y|\le 1\end{cases}\),给定长度为 \(n\) 的序列 \(a\),求 \(\sum_{i=1}^n\sum_{j=i+1}^n d(a_i,a_j)\)

Solution

先统计出所有的后项减前项的和,然后考虑减去所有 \(x-y \le 1\) 的情况,具体地,扫描每一个 \(i\),对于其左边的 \(j\),加上其中 \(a_j = a_i+1\) 的个数,再减去其中 \(a_j = a_i-1\) 的个数
### Description
给定一个串,每轮进行如下操作:如果一个字符的相邻字符中存在与它不同的,则这个字符被选中,选好所有字符后将这些字符同时删除,该轮结束。问操作多少次后无法再删除任何点。

Solution

将相同的连续段合并成一个结点,用链表维护
每次遍历所有节点,头尾值 -1,中间值 -2,如果某个节点值 \(\le 0\) 了就删除它
(对 stl::list 还是不熟悉)
### Description
r]$ 的区间,每次操作后询问序列逆序对个数的奇偶性。
""
""
""

[CF915D] Almost Acyclic Graph - 拓扑排序

Description

给定有向图 \(n \le 500, m \le 10^5\),最多删去一条边是否能使得这个图变成有向无环图?

Solution

直观但麻烦的想法:随便找一个环,暴力枚举删除环上的一条边,再检验
考虑枚举让某个点删去一条边,但是不用真的删,只需要把它的入度 -1 即可,这样相当于删去了任意一条,让这个点更早地称为拓扑排序过程中的可选点
有一个 DAG,每条边上有一个小写英文字母表示权值,Alice 和 Bob 每人有一个棋子,各放在一个节点上(可以放在同一个节点上)。第一轮 Alice 可以沿一条边把棋子移到一个相邻的节点上,之后 Bob 沿一条边移动棋子,以此类推。规则规定每一次移动经过的边的 ASCII 码单调不降。不能走的人输。对于所有的初始位置,两人都按最优策略,问谁会赢。\(n\leq 100\)

Solution

\(f[i][j][k]\) 表示先手位于 \(i\),后手位于 \(j\),边权为 \(k\) 对应的胜负情况
对于 \(i\) 所有出点 \(q\),状态转移为 \(f[j][q][w]\)
如果至少存在一个 \(q\) 使得 \(f[j][q][w]\)\(0\),那么 \(f[i][j][k]\)\(1\),否则为 \(0\)
### Description
给定整数 \(x\),求有多少个正整数 \(n\) 满足 \(1 \le n \le x\)\(na^n \equiv b \bmod p\)\(p \le 10^6 + 3\) 且是一个质数,\(x \le 10^{12}\)

Solution

\(n\) 因子的循环周期为 \(p\)\(a^n\) 因子的循环周期为 \(p-1\)
(由于模质数乘法构成循环群满足消去律,其运算表的任意行列为元素全排列)

\[n \equiv ba^{-n} (\bmod p) \]

枚举 \(n\),设 \(\delta = n-ba^{-n} \bmod p\),则 \(n'=n+(p-1)\delta\) 才是第一个正确的 \(n\)
于是这一步贡献 \([\frac {x-n'} {p(p-1)}]\)
有n个人在队列中等待。假如某个人前面有一个人年龄比他小,那他就会不高兴;定义他的“不高兴度”为他前面留他最远的年龄比他小的人与他的距离,求每个人的不高兴度。 n<=10^5

Solution

权值线段树
## [CF936B] Sleepy Game - DFS,BFS

Description,

有向图上指定一个起点。若存在一条到叶子距离为奇数的路径(注意这里的路径不一定是最短路径),则必胜。若不存在,但是可以到达一个回路,则可以平局。上述两种都不能达到,则失败。,

Solution,

这里实际上是两个问题,

  • 是否存在一条到叶子距离为奇数的路径,
  • 是否能走到一个环,
    对于问题 1,我们用图 dp 的方法做,即建立分层图然后 BFS,具体地,图分为奇层和偶层,起点在偶层上,连边永远在相邻层中连,
    对于问题 2,DFS 一遍,始终标记栈中结点,如果能走回栈中结点,那么就有环,

Description

给定两个正整数 \(n,m(m≤n)\),对于一个 \(n\)\(0-1\) 方阵, 其任意 \(m\) 阶子方阵中至少有一个元素 \(“0”\),则可以求解这个方阵中的 \(“1”\) 的最大数目。现求解这个问题的逆向问题:已知这个最大数目为 \(X\),求相应的 \(n\)\(m\)

Solution

设法让每个 \(0\) 被充分地利用
于是 \(n,m,x\) 满足关系

\[n^2-\lfloor\frac n m \rfloor^2=x \]

\(t=\lfloor n/m \rfloor\),则

\[(n+t)(n-t)=x \]

枚举 \(x\) 的所有分解 \(x=ab\),那么 \(x\) 可以分解为平方差当且仅当 \(a,b\) 的奇偶性相同,此时

\[n=\frac{a+b} 2, \ t=\frac{a-b} 2 \]

如果我们找到了这个分解 \(n,t\),则只需要存在一个 \(m\) 使得 \(t=\lfloor n/m \rfloor\) 即可,我们只需要假设 \(m=n/t\) 判断一下是否可行即可
在 \(n\) 个城市开演唱会,这 \(n\) 个城市的人都想去听演唱会,每个城市的票价不同,于是这些人就想是否能去其他城市听演唱会更便宜(去回都要路费)

Solution

设演唱会为 \(0\) 号点
连边 \(0 \to i\),对于一对可达的城市,连边 \(u \leftrightarrow v\)
跑最短路即可
\(n\) 个点的完全图标号 \((0-n-1)\)\(i\)\(j\) 连边权值为 \(i\ \textrm{XOR}\ j\),求 MST 的值

Solution

\(f[n]\) 表示点数为 \(n+1\) 时的答案,那么贪心地考虑,显然 \(f[0]=0, f[n]=f[n-1]+lowbit(n)\)
根据观察易得 \(f[n]=2f[n-1]+2^n-2^{n-1}\),同时由于 \(f[]\) 就是个 \(lowbit\) 的前缀和,满足可加性,所以直接对 \(n\) 二进制分解并统计答案即可
### Description
找到一个数列(长度不超过 \(10^4\)),使得有且仅有 \(x\) 个非空子数列中元素极差小于 \(d\),或者判定不存在。

Solution

考虑如何让后加的子序列中的数不会影响到前面的,只需要加一个 \(d\),就可以形成新的一组
于是我们需要将自学列拆成若干个互不相干的组,每组内取一个相同的值
对于一个含有 \(n\) 个元素的组,它的贡献是 \(2^n-1\)
假如这个贡献是 \(2^n\) 就可以直接二进制分解做了
那么我们强行补一个大小为 \(1\) 的组,这样就可以当做它是 \(2^n\)
### Description
给定一棵无限层的满二叉树,如果 \(x\) 是根,那么左孩子是 \(2x\),右孩子是 \(2x+1\)。现在有三种操作:将 \(x\) 所在层的所有节点整体向右循环移动 \(k\) 个单位;将 \(x\) 所在层的所有节点及其子树整体向右循环移动 \(k\) 个单位;输出 \(x\) 到根的路径。

Solution

实际上,由于访问到的层数不会超过 \(63\),我们只需要暴力记录每一层被循环移动的次数即可。对于第一种操作修改当层即可;对于第二种操作修改其后的所有层即可。
对于询问,我们只需要反解出实际位置,就得到了路径上所有点的位置,再把位置换算回下标即可。本质上,我们只需要提供位置和下标之间的换算即可。
给你一张 \(n\) 个点 \(m\) 条边的带权有向图,可能有重边和自环。边会按照顺序给出。让你求出一条经过边数最多的路径,使得路径上的边满足边权和出现的时间严格递增。路径可以重复经过同一个点。

Solution

按顺序处理所有边,对于每个点维护以这个点结尾,结尾边权为 \(?\) 时的最大长度
对于 \((u,v,w)\),找出 \(u\) 的结尾边权为 \([0,w-1]\) 时的最大长度,拿去更新 \(v\) 的结尾边权为 \(w\) 时的最大长度即可
显然我们可以用动态开点权值线段树维护这一切
考虑到我们每次询问的都是 \([0,?]\) 的最大值,每次修改也只会让答案更大,所以 \([0,?]\) 的答案是关于 \(?\) 单调的
因此我们可以将权值线段树换成一个 std::map,表示结尾边权-最大长度的二元关系,并且我们只保留那些单调的关系
### Description
给一个大小为 \(n\) 的数组,将数值分组,每个组相当于值域的一个子区间,一个组内的数字极差不超过 \(k\)。压缩后,一个组的数字都会变成这个组中的最小值。求字典序最小的情况。
例如
4 3
2 14 3 4
的结果为 0 12 3 3

Solution

考虑贪心,顺序枚举每一个 \(i\),对于 \(a_i\),在值域中,从 \(a[i]\) 倒序找分组
如果找到了分组,考虑这个分组能否容得下 \(a[i]\),如果容得下则将 \(a[i]\) 分进去,否则另开一组
如果没找到分组,则另开一组
### Description
n]$ 满足能从 \(q\) 条操作中选出若干条操作后使得序列的最大值为 \(k\)
""
""
""
""

[CF988E] Divisibility by 25 - 贪心

Description

给出一个从 1 到 10^18 的整数 n,不包含前导零。在一次移动中,可以交换任意两个相邻数字,使得结果数字不包含前导零。获取可被 25 整除的数字所需的最小移动次数是多少?

Solution

就那么几种情况

  • 把 5 冒泡到最后,把 2 冒泡到倒数第二位
  • 把 5 冒泡到最后,把 7 冒泡到倒数第二位
  • 把 0 冒泡到最后,把 5 冒泡到倒数第二位
  • 把 0 冒泡到最后,把另一个 0 冒泡到倒数第二位

我们可以先尝试性地做一下,如果换完以后有前导零,那么再强行找一个最左边的非零数字换到前面来,如果换完以后炸了那么这种情况就无效
可以证明先把非零数字换到前面,和先把有效数字换到后面,得到的答案是一样的
找到最靠右的两个我们要找的数字,下标为 i,j,假设我们的目标是把 j 换到最后,i 换到倒数第二个位置
如果只有 i,j 两个数字,皆大欢喜(这时 i,j 不可能都是 0)
如果除了 i,j 外的第一个数字是 0,我们要找到第一个非零的数字,如果找到了记录它的下标 k,如果没找到直接结束
现在我们是把 j 换到最后,i 换到倒数第二个位置,如果有的话,把 k 换到第一个位置
这个过程中,会出现的基础贡献为 n-j+n-1-i+k-1
考虑相互作用导致的附加贡献,如果 \(k>i\) 则附加贡献,如果 \(k>j\) 则附加贡献,如果 \(i>j\) 则附加贡献
有 n 个骑士想决战。每个骑士都有能力值(互不相同),且身上带有一些金币。如果骑士 A 的能力值大于骑士 B ,那么骑士 A 就可以杀死骑士 B ,并获得骑士 B 身上的所有金币。但就算是骑士也不会残忍过度,他们最多只会杀死 k 个骑士。对于每一位骑士,请你求出在杀掉所有他能杀的人(只有他能杀人别人不动)后他身上金币的最大值。

Solution

注意到“互不相同”这个弱化条件,考虑对能力值从小到大排序,那么每个骑士能且只能杀他前面的人。所以动态维护前 \(k\) 大和就好了
(题意有点神仙)
有 \(n\) 座城市和 \(m\) 条单向道路,为了能让首都能够到达所有的城市,最少需要新修建多少新的单向道路?

Solution

答案为缩点后的分量图中除 \(S\) 所在分量外入度为 \(0\) 的分量数

{i+1}$。每一轮滑坡中,假如变化前的>
{i+1}$銆傛瘡涓€杞粦鍧′腑锛屽亣濡傚彉鍖栧墠鐨�>
{i+1}$銆傛瘡涓€杞粦鍧′腑锛屽亣濡傚彉鍖栧墠鐨�>

相关文章:

  • 2023-02-09
  • 2022-12-23
  • 2022-03-04
  • 2021-10-27
  • 2021-06-08
  • 2021-06-24
  • 2021-09-28
  • 2021-10-17
猜你喜欢
  • 2021-08-26
  • 2021-08-25
  • 2021-07-27
  • 2021-10-04
  • 2021-05-28
  • 2021-07-30
  • 2022-12-23
相关资源
相似解决方案