\(\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\) 个基向量,那么

\[\begin{cases}
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的更多相关文章

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

    \(\mathscr{Summary}\)   读错题了读错题了 B 题差点没做出来真的太吓人了.   逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了.A 题确实一下子没想到用"可能的 ...

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

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

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

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

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

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

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

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

  6. Solution -「LOCAL」过河

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

  7. Solution -「LOCAL」画画图

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

  8. Solution -「LOCAL」充电

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

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

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

  10. Solution -「LOCAL」大括号树

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

随机推荐

  1. 第一个selenium测试

    一.环境搭建 使用语言:python 1.python解释器:python.exe 版本 3.11.4 下载地址:[https://www.python.org/downloads/release/p ...

  2. 3.16 Linux删除文件或目录(rm命令)

    当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理. rm 是强大的删除命令,它可以永久性地删除文 ...

  3. MongoDB面试专题33道解析

    大家好,我是 V 哥.今天给大家分享 MongoDB的道 V 哥整理的面试题,收藏起来,一定会对你有帮助. 1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什 ...

  4. Python文件读取和写入方法

    读取 # 通过单字符串空格分隔 def count_words(filepath): with open(filepath, 'r') as file: string = file.read() st ...

  5. i-MES生产制造管理系统-可视化看板

    可视化看板最主要的目的是为了将生产状况透明化,让大家能够快速了解当前的生产状况以及进度,通过大数据汇总分析,为管理层做决策提供数据支撑,看板数据必须达到以下基本要求: 数据准确--真实反映生产情况 数 ...

  6. configuration file routines:DEF_LOAD_BIO:missing equal sign:conf_def.c:362

    报错: Auto configuration failed 139868431284128:error:0E079065:configuration file routines:DEF_LOAD_BI ...

  7. 我对Java内存模型的理解

    所有的编程语言中都有内存模型这个概念,区别于微架构的内存模型,高级语言的内存模型包括了编译器和微架构两部分.我试图了解了Java.C#和Go语言的内存模型,发现内容基本大同小异,只是这些语言在具体实现 ...

  8. highcharts中的折线图

    折现图表的样式如下所示: 整体的一个设置代码如下: that.options = { title: { text: null }, subtitle: { text: null }, yAxis: { ...

  9. 2023CCCC选拔赛

    7-7 与零交换 给定排列\(p:0,1,2...n-1\),每次操作你只能将一个数字和\(0\)进行交换,然后将初始排列升序排列,请你找出最少的与\(0\)交换的次数 题解:思维 + 环 样例一: ...

  10. Mybatis【16】-- Mybatis多对一关联查询

    注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-12-many2one,需要自取,需要配置mave ...