\(\mathscr{Summary}\)

  读错题了读错题了 B 题差点没做出来真的太吓人了。

  逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了。A 题确实一下子没想到用“可能的函数集合”描述状态,所以直接摆烂。B 题感觉是个没见过的 trick 啊,但现推还是比较容易,本来把“跳到一个后代”理解成“跳到一个儿子”,冲出树剖调半天发现读错题,我直接 。还好树剖那一大坨都是对的,只是初始的 SG 得重算(怎么还变简单了啊喂)。总之就是这里浪费了很多时间。

  想出正解的题一定缩减代码和调试时间,不要太悠闲 qwq。

\(\mathscr{Solution}\)

\(\mathscr{A}-\) 开心消消乐

  给定任意 \(\varphi:\{0,1\}^3\rightarrow\{0,1\}\) 以及一个字符集为 01? 的串 \(S\)。每次操作为:取出一个 \(S[:2k+1]\),将 \(S\) 的这个前缀替换为字符 \(\varphi(\dots,\varphi(S_{2k-1},S_{2k},S_{2k+1}))\)。求有多少个将 ? 替换为 01 的方案,使得存在一种操作方案能将得到的 \(S\) 变为单个字符 1

  \(n\le10^5\),多测组数 \(T\le10\)。


  你先想想怎么判合法。 ——邓老师

  考虑检查一个字符集为 01 的 \(S\) 是否合法。DP 的基本想法必然是以前缀为子问题,而当一个前缀处理完成后,我们只需要关心它留下的东西对后方操作的影响。形式地,令 \(g(i,\phi)\) 表示考虑了前 \(i~(2\mid i)\) 个字符,剩下的前缀对下一个字符的影响是映射 \(\phi\) 的情况是否存在。转移不难。

  会判合法,直接 DP of DP 解决问题:令 \(f(i,\Phi)\) 表示考虑了前 \(i~(2\mid i)\) 个字符,剩下的前缀对下一个字符的影响是映射集合 \(\Phi\) 内任意一种的方案数。在求 \(f\) 之前预处理关于 \(\Phi\) 的转移,可以做到 \(\mathcal O(n)\)(状态数有常数 \(2^{2^2}\),转移常数最坏是 \(2\times2\))。

\(\mathscr{B}-\) 树上的棋局

  给定一棵含有 \(n\) 个结点的树,初始时根有 \(r=1\),每个结点上有一枚棋子。Alice 和 Bob 在玩一个博弈,双方轮流取一个棋子,将其跳到它所在结点的子树内任意一点,不能不动。现进行 \(q\) 次操作:

  1. 给定 \(u,v,x\),在路径 \((u,v)\) 上的每个结点加一枚棋子,然后令 \(r\leftarrow x\),最后回答当前树下博弈游戏的 SG 值;
  2. 给定 \(u,x\),在 \(u\)(以 \(r\) 为根的)子树内的每个结点加一枚棋子,然后令 \(r\leftarrow x\),最后回答当前树下博弈游戏的 SG 值。

  \(n,q\le2\times10^5\)。


  只要你不读错题…… 就算你读错了题……

  首先观察一下修改的形式,发现根的位置几乎不影响修改的进行。例如钦定 \(r=1\),操作 \(1\) 不受影响;操作 \(2\) 可以由若干个对子树的覆盖异或而成。因此可以把为题描述为:在 \(r=1\) 的背景下做修改,询问 \(r=x\) 时的 SG 值,这样“换根”操作就几乎没有了。

  再考虑如何回答询问。令 \(g(u)\) 表示 \(r=1\),\(u\) 的 SG;\(f(u)\) 表示 \(r=u\),\(u\) 的 SG,这俩都能预处理出来。令 \(c_u\) 表示 \(u\) 结点棋子数量奇偶性,可见 \(\bigoplus c_ug(u)\) 就是 \(r=1\) 的答案。对于 \(r=x\),SG 值有变动的仅有路径 \(x\rightarrow 1\) 上的结点:

  • 对于 \(x\),它的 SG 由 \(g(x)\) 变为 \(f(x)\);
  • 对于其余 \(u\),它有在路径上的孩子 \(v\),它的 SG 变为 \(f(u)\) 的 \(\operatorname{mex}\) 集合里剔除 \(g(v)\)(把 \(v\) 子树砍掉)。

  树剖?类似于树上 DDP,我们令 \(h(u)\) 表示砍掉 \(u\) 的重儿子之后,以 \(u\) 为根,\(u\) 的 SG。树剖维护 \(c_u(h(u)\oplus g(u))\) 的值,在 \(\bigoplus c_ug(u)\) 的基础上修正 \(x\rightarrow 1\) 这条链上的答案即可。\(\mathcal O(n\log^2 n)\),常数踩标

\(\mathscr{C}-\) 社会黄油飞

  (作亿点简化,但应该对于高水平的你来说问题不大。)给定一个 \(n\) 个点 \(m\) 条边的图,求非空最大权闭合子图(是否大于给定常数)。

  \(n\le2\times10^3\),\(m\le6\times10^3\)。


  暴力:钦定选一个点,跑 \(n\) 次最大权闭合子图,\(\mathcal O(n\operatorname{Dinic}(n+2,n+m))\),过了。

  正解:钦定选一个点,然后退流撤销用于钦定的 \(+\infty\) 边,\(\mathcal O(¿)\),T 了。

  反 了 它 ¿

Solution Set -「LOCAL」冲刺省选 Round XXV的更多相关文章

  1. Solution Set -「LOCAL」冲刺省选 Round XXIV

    \(\mathscr{Summary}\)   名副其实的 trash round,希望以后没有了.   A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 \(\mathcal ...

  2. Solution Set -「LOCAL」冲刺省选 Round XXIII

    \(\mathscr{Summary}\)   有一说一,虽然我炸了,但这场锻炼心态的效果真的好.部分分聊胜于无,区分度一题制胜,可谓针对性强的好题.   A 题,相对性签到题.这个建图确实巧妙,多见 ...

  3. Solution Set -「LOCAL」冲刺省选 Round XXII

    \(\mathscr{Summary}\)   和出题人很有缘分但是没有珍惜.jpg   A 题有一个显然的二维偏序斜率式,以及显然的 CDQ 套李超树 \(\mathcal O(n\log^2n)\ ...

  4. Solution Set -「LOCAL」冲刺省选 Round XXI

    \(\mathscr{Summary}\)   省选几个小时啊,怎么模拟赛只打三个小时啊./kk   时间安排较为合理,没有出现严重的因思考时间过少引起的丢分.   A 题比较可惜,二分 + 点分治大 ...

  5. Solution -「LOCAL」过河

    \(\mathcal{Description}\)   一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...

  6. Solution -「LOCAL」画画图

    \(\mathcal{Description}\)   OurTeam.   给定一棵 \(n\) 个点的树形随机的带边权树,求所有含奇数条边的路径中位数之和.树形生成方式为随机取不连通两点连边直到全 ...

  7. Solution -「LOCAL」充电

    \(\mathcal{Description}\)   给定 \(n,m,p\),求序列 \(\{a_n\}\) 的数量,满足 \((\forall i\in[1,n])(a_i\in[1,m])\l ...

  8. Solution -「LOCAL」二进制的世界

    \(\mathcal{Description}\)   OurOJ.   给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...

  9. Solution -「LOCAL」大括号树

    \(\mathcal{Description}\)   OurTeam & OurOJ.   给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...

随机推荐

  1. quasar框架在store中使用router跳转页面报错

    网上一通百度,终于在这篇博客中找到原因.  https://www.cnblogs.com/remly/p/12995936.html 原因是: 在router中导出了一个工厂函数, 既然是一个函数, ...

  2. antd中的form表单 initialValue导致数据不更新问题

    初步理解 : initialValue就是所谓的defaultValue,只会在第一次赋值的时候改变,却又有一些不同,因为 initialValue又会因其他改动而改变. 然而当获取的数据重新上来要渲 ...

  3. 新增访客数量MR统计之Reduce和Runner相关准备

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  4. STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  5. 打开Cmd的方式与基础Dos命令

    基础的Dos命令 打开Cmd的方式 开始->Windows系统->命令提示符 Win键 + R输入cmd打开控制台 在任意的文件夹下面,按住shift键+鼠标右键点击在此处打开powers ...

  6. 【经验总结-markdown】markdown字体和颜色设置

    字体设置 关键词为face <font face = "黑体">我是黑体</font> <font face = "宋体"> ...

  7. 【记录一个问题】golangci-lint.exe中,盘符大写就会执行出错

    golangci-lint.exe版本为1.31.0 执行:golangci-lint.exe run d:\source\github.com\ahfuzhang\go_xxx_server\src ...

  8. dp问题解题思路

    [基本问题单元的定义]这取决于你所查看问题的角度,找到一个划分,推进问题的角度十分重要.作者找到的方式是dp[ i ][ j ],用来表示 substring( i , j),然后站在这个角度,假设s ...

  9. 【Kafka】基于Windows环境的Kafka有关环境(scala+zookeeper+kafka+可视化工具)搭建、以及使用.NET环境开发的案例代码与演示

    前言:基于Windows系统下的Kafka环境搭建:以及使用.NET 6环境进行开发简单的生产者与消费者的演示. 一.环境部署 Kafka是使用Java语言和Scala语言开发的,所以需要有对应的Ja ...

  10. C++初始化列表各情况分析

    今天回顾了下C++初始化列表的知识,接下来我对这一知识作一总结. 我们在定义了一个类的时候,需要对类的成员进行初始化.关于初始化,有两种方法,一种在初始化列表中进行,另一种就是在构造函数中进行,对于这 ...