Solution Set -「LOCAL」冲刺省选 Round XXXI
\(\mathscr{Summary}\)
前期节奏太懒散,后面发现 C 题是水题都没时间写,提起精神来啊!
A 题卡得比较久,对线性基的理解不够深刻,思来想去半天才把转移系数调对。B 题也卡,走起来就想“怎么优化”而没有深入去研究“求的什么”。C 题哈哈哈哈倍增长剖一个个伪,最后祭了一发暴力,明明那么蠢(而且貌似才做过)的点分的说。
\(\mathscr{A}-\) 神必的集合
给定 \(m\) 对形如 \((x_i,y_i)\) 的限制,求 \(\{0,1\}^n\) 里有多少个 \(S\),满足 \(\forall x,y\in S\),\(x+y\in S\)(加法即异或),且 \(S\) 里第 \(x_i\) 大数是 \(y_i\)。
\(n\le10\),\(m\le200\)。
按照兔子一贯的坏习惯,不区分二进制数和 \(\{0,1\}^n\) 里的向量。
我们只需要确定 \(S\) 的基 \(\mathscr S\) 的数量,就能求出 \(S\) 的数量。对于 \(\{y_{1..m}\}\) 的基 \(\mathscr Y\),显然有 \(\operatorname{span}(\mathscr Y)\subseteq\operatorname{span}(\mathscr S)\)。另一方面,不妨把 \(\mathscr S\) 和 \(\mathscr Y\) 规范化作上三角,也就是异或线性基求出来的那玩意儿。
考虑若 \(\mathscr S\) 确定,比 \(y\) 小的数的数量 \(x-1\) 是如何算出来的。方便起见,令 \(x\leftarrow x-1\),显然若 \(x\) 含有 bit \(2^k\),就表明 \(\mathscr S\) 从低到高第 \(k\) 个基向量的最高 bit 被 \(y\) 包含。据此,对于任意 \(i,j\),我们能够判断 \(2^i\) 能否作为 \(\mathscr S\) 的从低到高 \(j\) 个基向量的最高 bit。
据此,考虑 DP。令 \(f(i,j)\) 表示考虑了 bit \(2^{0..i}\),已经选择了前 \(j\) 小的基向量的方案数。当 \(\mathscr Y\) 在这一维有基向量时,这个时候我们只能当然只能 \(\mathscr Y\) 里对应位置上的基向量;否则,我们可以任意取 \(\{0,1\}^{i+1}\) 里一个不与已有的 \(j\) 个基线性相关的向量来扩展基,也可以不把 \(i\) 选入基。形式化地,令 \(c\) 为 \(2^i\) 能否作为第 \(j\) 个基向量,那么
f(i+1,j+1)\leftarrow^+cf(i,j), & \exist y\in[2^{i+1},2^{i+2})\in\mathscr Y\\
\begin{cases}
f(i+1,j+1)\leftarrow^+ cf(i,j)\times2^{i+1-j}\\
f(i+1,j)\leftarrow^+ f(i,j)
\end{cases}, & \text{otherwise}
\end{cases}
\]
至少可以做到 \(\mathcal O(n^2+nm)\)。
\(\mathscr{B}-\) 法阵
给定 \(\{a_n\}\) 以及 \(q\) 次询问,每次给出 \([l,r]\),求 \(\max\{a_x+a_y+a_z\mid l\le x<y<z\le r,y-x\le z-y\}\)。
\(n,q\le5\times10^5\)。
注意到在固定 \(x\) 时,若有 \(x<y_1<y_2\),且 \(a_{y_1}\ge a_{y_2}\),那么 \(y_2\) 与 \(x\) 配对必然不如 \(y_1\) 优秀。因此,有效的 \((x,y)\) 必然在从左到右单调栈时相遇(\(y\) 弹掉 \(x\),或者 \(y\) 压入 \(x\) 的后面),这样的 \((x,y)\) 仅 \(\mathcal O(n)\) 对。
既然 \((x,y)\) 很少,我们就去维护 \(z\)。把询问离线下来挂到左段点上,从右到左扫描 \(l\),对于每个 \(r\),维护此时 \(x\in[l,r],z\in[l+2,r]\) 的答案。放在线段树上,每次更新差不多就是区间取 \(\max\),可以做到 \(\mathcal O((n+q)\log n)\)。
\(\mathscr{C}-\) 旅行
给定含有 \(n\) 个点 \(m\) 条边的无边权无向图,点 \(u\) 有属性 \(r_u\) 和 \(c_u\),表示对于所有 \(\operatorname{dist}(u,v)\le r_u\),可以从 \(u\) 花费 \(c_u\) 的代价走到 \(v\)。求从 \(1\) 出发到每个点的最小花费。
\(n\le2\times10^5\),\(n-1\le m\le n+50\),\(c_u>0\)。
这个 \(m\) 范围的提示性太强了,随便拿一棵生成树,树内点分建图,树外边还是向点分一样处理跨过某个点的路径信息,记 \(t=m-n+1\),暴力做复杂度为 \(\mathcal O(n\log^2n+nt\log nt)\),可以过。
点分部分采用 two-pointers 建图,每次拿出 \(d_u+c_u\) 最小的点,从上次指针划到的位置继续更新,不把图显式地建出来。可以做到 \(\mathcal O(n\log n+nt)\)。
Solution Set -「LOCAL」冲刺省选 Round XXXI的更多相关文章
- Solution Set -「LOCAL」冲刺省选 Round XXV
\(\mathscr{Summary}\) 读错题了读错题了 B 题差点没做出来真的太吓人了. 逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了.A 题确实一下子没想到用"可能的 ...
- Solution Set -「LOCAL」冲刺省选 Round XXIV
\(\mathscr{Summary}\) 名副其实的 trash round,希望以后没有了. A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 \(\mathcal ...
- Solution Set -「LOCAL」冲刺省选 Round XXIII
\(\mathscr{Summary}\) 有一说一,虽然我炸了,但这场锻炼心态的效果真的好.部分分聊胜于无,区分度一题制胜,可谓针对性强的好题. A 题,相对性签到题.这个建图确实巧妙,多见 ...
- Solution Set -「LOCAL」冲刺省选 Round XXII
\(\mathscr{Summary}\) 和出题人很有缘分但是没有珍惜.jpg A 题有一个显然的二维偏序斜率式,以及显然的 CDQ 套李超树 \(\mathcal O(n\log^2n)\ ...
- Solution Set -「LOCAL」冲刺省选 Round XXI
\(\mathscr{Summary}\) 省选几个小时啊,怎么模拟赛只打三个小时啊./kk 时间安排较为合理,没有出现严重的因思考时间过少引起的丢分. A 题比较可惜,二分 + 点分治大 ...
- Solution -「LOCAL」过河
\(\mathcal{Description}\) 一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...
- Solution -「LOCAL」画画图
\(\mathcal{Description}\) OurTeam. 给定一棵 \(n\) 个点的树形随机的带边权树,求所有含奇数条边的路径中位数之和.树形生成方式为随机取不连通两点连边直到全 ...
- Solution -「LOCAL」充电
\(\mathcal{Description}\) 给定 \(n,m,p\),求序列 \(\{a_n\}\) 的数量,满足 \((\forall i\in[1,n])(a_i\in[1,m])\l ...
- Solution -「LOCAL」二进制的世界
\(\mathcal{Description}\) OurOJ. 给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...
- Solution -「LOCAL」大括号树
\(\mathcal{Description}\) OurTeam & OurOJ. 给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...
随机推荐
- 手把手教会你使用Markdown【从入门到精通一篇就够了】
目录 一.Markdown是什么 二.Markdown优点 三.Markdown的基本语法 3.1 标题 3.2 字体 3.3 换行 3.4 引用 3.5 链接 3.6 图片 3.7 列表 3.8 分 ...
- Node.js 构建命令行工具:实现 ls 命令的 -a 和 -l 选项
在日常的前端开发中,我们常常借助各种基于 Node.js 的脚手架工具来加速项目搭建和维护,比如 create-react-app 可以一键初始化一个 React 项目,eslint 则帮助我们保持代 ...
- Windows高级调试
文档摘要: 本书<Windows高级调试>主要讲解Windows高级调试技术和工具,包括调试器简介.调试器揭密.符号文件与源文件的管理.栈内存破坏.堆内存破坏.安全.进程间通信.资源泄漏. ...
- npm报错error:0308010C:digital envelope routines::unsupported
error:0308010C:digital envelope routines::unsupported 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而Open ...
- 【Spring】IOC核心源码学习(二):容器初始化过程
接上文 啃啃老菜: Spring IOC核心源码学习(一) ,本文将以 ClassPathXmlApplicationContext 这个容器的实现作为基础,学习容器的初始化过程. ClassPath ...
- golang之命令行工具Cobra
github地址: https://github.com/spf13/cobra [安装] go get -u github.com/spf13/cobra@latest 使用cobra_cli工具 ...
- mysql 自定义函数写法
1.业务场景 有时候我们希望通过sql语句解决一些复杂的问题,比如根据一个ID 查询组织的路径.这个时候我们可以使用函数来实现. 2.函数编写 CREATE FUNCTION getGroupById ...
- Python 调整Excel行高、列宽
在Excel中,默认的行高和列宽可能不足以完全显示某些单元格中的内容,特别是当内容较长时.通过调整行高和列宽,可以确保所有数据都能完整显示,避免内容被截断.合理的行高和列宽可以使表格看起来更加整洁和专 ...
- MarkDown文档的编写
MarkDown的基本语法 MarkDown的标题语法 通过#进行创建标题,#的数量控制标题的级别 MarkDown的段落语法 通过空白行将一行或者多行文本进行分隔 MarkDown的强调语法 粗 ...
- 服务拆分之《阿里云OCR使用指南》
在做一件什么事情: 遇到了什么问题: 问题分析: 业界解决方案: 我的方案: 最终的结果: 服务都已经迁移过来了,对应的那些使用的工具什么的也都得换成自己的账号.起初原始用的是什么忘记了,时间太长了已 ...