首页 > 其他分享 >CSP-S2019

CSP-S2019

时间:2024-10-17 10:21:10浏览次数:1  
标签:pre le 重心 sum 子树 S2019 gets CSP

括号树

题意:给定一棵树,以 \(1\) 为根,每个点有字符 ()

定义 \(s_i\) 为 \(i\) 到根的路径的子串中合法括号序列的个数,求 \(\bigoplus_{i = 1}^n i \times s_i\),\(1 \le n \le 5 \times 10^5\)。

记 \(p_i\) 为 \(i\) 的父亲,\(a_i\) 为 \(i\) 到根的路径以 \(i\) 结尾的合法括号序列个数。

显然有 \(s_i = s_{p_i} + a_i\),只要求 \(a_i\) 即可。

dfs 过程中模拟栈匹配,假设 \(i\) 是 ) 且能和某个未被匹配的 ( \(j\) 匹配,\(a_i = a_j + 1\)。

时间复杂度 \(O(n)\)。submission

划分

题意:长度为 \(n\) 的数组 \(\{a\}\),求一个划分 \(S = \{p_1, p_2, \cdots, p_k\}\) 满足:

\[\sum_{i = 1}^{p_1}a_i \le \sum_{i = p_1 + 1}^{p_2}a_i \le \cdots \le \sum_{i = p_k + 1}^{n}a_i \]

最小化

\[(\sum_{i = 1}^{p_1}a_i)^2 \le (\sum_{i = p_1 + 1}^{p_2}a_i)^2 \le \cdots \le (\sum_{i = p_k + 1}^{n}a_i)^2 \]

数据范围:\(1 \le n \le 4 \times 10^7\)。

设 \(f(i, j)\) 表示长度为 \(i\) 的前缀,最后一个分割点在 \(j\) 的最小值:

\[f(i, j) =(s_i - s_j)^2 + \min_{(s_i - s_j)^2 \ge (s_j - s_k)^2}f(j, k) \]

存在结论:\(f(i, j) \le f(i, j - 1)\)。

  • 只有一个分割点,两部分分别为 \(x, y\),在 \(y - x > 1\) 的前提下,\(x \gets x - 1,\ y \gets y - 1\) 显然更优。

  • 否则设分割点数为 \(k\),假设对于 \(1 \sim k - 1\) 都已经满足这个性质。

    将最后一个点左移:

    假设存在 \(j\),使得 \(1 \sim j\) 保持不动,\((j + 1, k]\) 集体左移,在维持不降性质的同时使答案变小。

    可以看作 \([p_j + 1, i]\) 上的一个子问题,而其规模小于 \(k\),已经被证明不优了;

    否则所有分割点集体左移,设第 \(i\) 段长度为 \(l_i\),存在一种最优方案使前 \(k\) 段每段长度不增。

    即:\(l_i \gets l_i - x_i,\ l_{k + 1} \gets l_{k + 1} + \sum x_i\)。

    结论成立的一个充分条件为:\(l_i \gets l_i - 1,\ l_{k + 1} \gets l_{k + 1} + 1\) 不优,这是显然的。

因此每个 \(f(i)\) 的转一段是唯一的,记作 \(pre_i\)。

需要满足 \(s_i - s_{pre_i} \ge s_{pre_i} - s_{pre_{pre_i}}\),移项即 $s_i \ge 2s_{pre_i} - s_{pre_{pre_i}} $。

单调栈找到最大的 \(j\) 满足 \(s_i \ge 2s_j - s_{pre_j}\),那么 \(pre_i = j\),时间复杂度 \(O(n)\)。

不是很懂为什么要卡空间,把 \(pre\) 处理出来后从后往前扫一遍即可,只要开一个 i128

submission

树的重心

题意:\(x\) 为树的中心当且仅当其最大子树大小不超过 \(\lfloor\frac{n}{2}\rfloor\),一棵树只可能有一个或两个重心。

删去边 \(e\) 使整棵树分裂为两部分,求:

\[\sum_{e \in E}\bigg(\sum_{x\text{ 是 }T_1\text{ 的重心}}x + \sum_{y\text{ 是 }T_2\text{ 的重心}}y\bigg) \]

数据范围:\(n \le 3\times 10^5\)。

选定原树的一个重心作为根 \(rt\)。

先考虑 \(x \ne rt\) 的情况。

如果断点一条边后 \(x\) 是重心,那么这条边不可能出现在 \(x\) 子树内。

记 \(s_x\) 为 \(x\) 子树大小,则 \(s_x \le \lfloor\frac{n}{2}\rfloor\),如果断在子树内,则包含一棵大小为 \(n - s_x\) 的子树,与 \(x\) 是重心矛盾。

设 \(g_x\) 为 \(x\) 最大子树大小,\(S\) 为另一棵数的大小,需要满足:

\[\begin{cases} 2g_x\le n - S\\ \\ 2(n - S - s_x) \le n - S \end{cases} \]

整理一下:

\[n - 2s_x \le S \le n - 2 g_x \]

对于一个 \(x\),要找满足以下条件的边的个数:

  • \(n - 2s_x \le S \le n - 2 g_x\)。
  • 不在 \(x\) 子树内。

只考虑第一个限制:对于 \(fa_u\) 到 \(rt\) 的链,\(S = n - s_y\),其他地方 \(S = s_y\),容易用树状数组维护。

利用出入子树时的增量把第二部分容斥掉(可以线段树合并)。

考虑 \(rt\) 作为根的次数,只关心最大子树 \(x\) 和次大子树 \(y\),分类讨论断边位置即可。

submission

树上的数

讲一下 CSP-S 史上最难题《树上的数》(只需入门组知识就能做的黑题)

标签:pre,le,重心,sum,子树,S2019,gets,CSP
From: https://www.cnblogs.com/Luxinze/p/18471515

相关文章

  • 10月16日 CSP-S
    T1小w的爱情密码【问题描述】小W终于鼓起勇气向小M表白,然而只是有勇气写情书。为了防止情书内容被同学窃取,小W给情书加密。小M的解密方式很简单,假设情书是字符串S1,小W给她的解密串是S2,小M会重复地完成“在S1中找到子串S2并删除”这一操作直到在S1中找不到S2。假如你是小M......
  • 2024CSP-J模拟赛9————S12678
    一,赛中得分T1100T2100T350T440总分290二,赛中概括  T1T2较快过,T3T4骗了90分(意料之中,这么好骗分!!!)。三,题目解析涂格子(paint)问题描述现在有一个 n 行 m 列的网格纸,一开始每个格子都是白色的。现在你可以任意挑选恰好 x 行和 y 列,将挑......
  • [赛记] csp-s模拟11 && 多校A层冲刺NOIP2024模拟赛07
    玩水(water)100pts一道结论题,考场一眼出,结果认为不对,然后被硬控了2h结果打出了个抽象DP然后过了;赛后发现,这DP和那个结论是等价的。。。;首先考虑只有两个人怎么做,那么我们只需找出一个位置$(i,j)$满足$a_{i+1,j}=a_{i,j+1}$即可;那么三个人呢?设现在有两个满......
  • CSP 模拟 48
    A限速(speed)对于边权小于等于\(k\)的,尽量选大的,对于边权大于\(k\)的,尽量选小的,然后按这两个条件排序后kruskal,如果边权小的能组成生成树,那么答案就是小于等于\(k\)的最大的数和第一个大于\(k\)的数的较小代价。否则最后的生成树代价就是答案。有六十分的数据边权全部小......
  • CSP2024 前集训:csp-s模拟11
    前言T1挂了,后面几道赛时都不那么可做,T2读假题了浪费太多时间,T3没调出来。T4是原,但是整个机房只有一个人当时改了,所以还是没人写,因为T4是原,还加了个T5,也不太可做。T1玩水对于一个点\((i,j)\),若\(s_{i+1,j}=s_{i,j+1}\)则称其为分点,若一个分店后面还有分点或两个分......
  • [2023 CSP-J]题目思考与反思
    小Y的桌子上放着\(n\)个苹果从左到右排成一列,编号为从\(1\)到\(n\\\)。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。\(\\\)每天在拿的时候,小苞都是从左侧第\(1\)个苹果开始、每隔\(2\)个苹果拿走\(1\)个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一......
  • csp-s模拟11
    赛时rank11,T1100pts,T217pts,T30pts,T40pts,T510pts这场模拟赛就是糖,告诉我题目难度不按升序排列就是除了T1我都不会呗。玩水(water)签成了,还签了个首切?定义一个形如\(\begin{matrix}A*\\*\\end{matrix}\)的为一个角,角的位置为A的位置。有解的时候就是两个角相邻或......
  • 『模拟赛』CSP-S模拟11
    Rank地狱场,一般A.玩水(water)签。发现\(n\le1000\),\(T\le10\),\(\mathcal{O(Tn^2)}\)可过,所以简单考虑。我写的好像是dp?为每个点开一个大小为26的状态,表示从哪个字母转移而来的方案数,到该点的全部合法方案数即为\(\max_{i\in\left[0,25\right]}\cnt_i\)。由于是......
  • 「模拟赛」CSP-S 模拟 11(T2 超详细)
    比赛链接A.玩水(water)签到。发现如果要找两条路径的话,能找到的充要条件是存在一个点的上方和左方的字母相同。(即使两条走过的点截然不同的路径也符合,这时终点会成为这个点)。即存在一个位置\((i,j)\)使得\(s_{i-1,j}=s_{i,j-1}\),我们称位置\((i,j)\)是好位置。扩展到三......
  • [47] (CSP 集训) CSP-S 模拟 11
    因为有人想看T3\(nk^2\)所以先发一下A.玩水注意到只有在形如下面这样的地方才会发生分叉?aa?所以\(f_{i,j}\)表示从\((1,1)\)到\((i,j)\)的矩阵中的最大路径方案数,考虑转移普通的转移是\(f_{i,j}=\max(f_{i,j-1},f_{i-1,j})\)如果\(a_{i-1,j}=a_{i,j-1}\),则有......