Solution Set -「LOCAL」冲刺省选 Round VII
\(\mathscr{Summary}\)
三道结论题,毁灭吧。
A 题一开始思路偏了,发现答案最高 bit 能固定之后接下来的结论就顺理成章了。
B 题哈哈哈哈又是经典:我结论猜对了,然后心里给念叨,念着念着嘴瓢了,写暴力出来错了,然后就没分了。
C 题:你怎么不放 A 题?
策略不对头啊哥,你怎么没先发现 C 题最水呢?这样真的很危险。
\(\mathscr{Solution}\)
\(\mathscr{A}-\) 合成小丹
给定可重集 \(A=\{a_n\} \newcommand{\or}[0]{\operatorname{or}} \newcommand{\rsh}[0]{\operatorname{rsh}} \newcommand{high}[0]{\operatorname{high}}\),进行 \(n-1\) 次以下操作之一:
取 \(\{x,y\}\subseteq A\),令 \(A\leftarrow (A\setminus\{x,y\})\cup\{(x\or y)\rsh 1\}\);
取 \(x\in A\),令 \(A\leftarrow A\setminus\{x\}\)。
其中 \(\or\) 是按位与,\(\rsh\) 是右移。最终 \(A=\{r\}\),求出可能的最小 \(r\)。
\(n\le10^5\),\(w=60\),\(a_i\in[0,2^w)\)。
把原问题说好听点:在 $A $ 里选一些数做 1. 操作,最小化结果 \(r\)。根据经验,位运算下的最小化问题很有局部性,我们可以尝试先最小化 \(r\) 的最高 bit。
记 \(\high(x)=\lceil\log_2x\rceil~(x>0)\)。在这一目标下,显然,当且仅当 \(\high(x)=\high(y)\),对 \((x,y)\) 的操作才是有意义的。我们按 \(\high\) 降序模拟,看看最低能在哪个 \(\high\) 处留下一个数。记此时的 \(\high\) 值为 \(h\)。可见,\(\high(r)=h\)。
由于 \((x\or y)\rsh k=(x\rsh k)\or(y\rsh k)\),那么对于每个数 \(x\),若它参与了 \(r\) 的合成,则它至少被 \(\rsh\) 了 \(\high(x)-h\) 次。当然,这一次数的实际值越小,我们就更有可能合成出 \(h\) 最小的 \(r\)。这印证了我们在上文直接按照 \(\high(x)-h\) 这一 \(\rsh\) 次数对 \(x\) 进行的归类的确能求到最小的 \(\high(r)\)。
想一想,被额外 \(\rsh\) 的数就没用了吗?并不。我们可以用它们作为 1. 操作的“炮灰”,让另一个数被 \(\rsh\),甚至,“炮灰”和“炮灰”还能在 1. 操作中合成更“厉害”的“炮灰”。
回到解题,既然 \(\high(r)\) 定了,我们可以从高到低枚举 \(r\) 的 bit,检查这一 bit 能否取 \(0\)(局部性)。根据上文结论,对于每个数 \(a\),我们可以求到它至少被 \(\rsh\) 多少次后,被 \(\or\) 入 \(r\),才不会破坏已经确定的高位 bit 和当前 bit 假定的 \(0\)。被 \(\rsh\) 的次数越小越好嘛,我们直接把这一次数当做 \(a\) 的 \(\high\),在此模拟上文求 \(h\) 的操作,看看能不能把同样的 \(h\) 取出来。若能,则这一 bit 可以为 \(0\)。
暴力实现是 \(\mathcal O(Tnw^2)\) 的,不过瓶颈是位运算和整数自加,而且难卡,所以我过了。对 \(r\) 中每个 \(0\) 分别构造对每个数 \(a\) 的右移次数限制,精细实现可以做到 \(\mathcal O(Tnw)\)。讲个笑话,有人 \(\mathcal O(Tnw^3)\) 过了。
\(\mathscr{B}-\) 路过中丹
对于字符串 \(T\),成一个合法遍历 \(P=p_1\cdots p_k\),满足 \(p_i\in[1,|T|],p_1\neq p_k,|p_i-p_{i-1}|=1\),且 \(T'=T_{p_1}T_{p_2}\cdots T_{p_k}\) 是回文。若 \(T\) 的每个下标都能存在于一个合法遍历中,则 \(T\) 合法。给定字符串 \(S\) 以及 \(q\) 次询问,每次给出 \([l,r]\),询问 \(S[l:r]\) 是否合法。
\(|S|,q\le10^6\)。
手玩一下样例:若存在 \(T_i=T_{i+2}\),则 \(T\) 合法。
证明,构造遍历:\(T_{i+2}\cdots T_2T_1T_2\cdots T_iT_{i+1}T_i\),是回文。另一侧同理。
另一个显然的结论:若 \(T\) 中的每个字符都存在于某个长度大于 \(1\) 的回文串中,则 \(T\) 合法。(草了,我上面那个对了这个胡错了。)
经讨论可以说明:不存在其他有效的遍历方案使得不满足这两个条件的 \(T\) 合法。
怎么维护?第一个结论直接记前缀和。第二个,Manacher + 单调栈求出 \(S\) 中从 \(i\) 开始的最短回文串结束位置 \(r_i\),以及到 \(i\) 结束的最短回文串开始位置 \(l_i\)。\(S[l:r]\) 合法,当且仅当满足第一个条件,或者不存在 \(i\in[l,r]\),使得 \(l_i<l\le r<r_i\)。按照询问右端点离线,BIT 维护一下每个左端点的合法情况即可。复杂度 \(\mathcal O((n+q)\log n)\)。
\(\mathscr{C}-\) 膜拜大丹
有一个有向图 \(G\),结点编号 \(1,2,\dots,n+m\)。对于结点 \(i\in[1,n]\),\(\lang i,n+1..n+{a_i}\rang\in E\);对于结点 \(i\in(n,n+m]\),\(\lang i,1..b_i\rang\in E\);不存在其他边。现限定 \(1..n\) 最多存在于 \(c_{1..n}\) 个简单环中,\(n+1..n+m\) 最多存在于 \(d_{1..m}\) 个简单环中,求能取出多少个简单环。
\(n,m\le5\times10^5\)。
显然:
- 最优情况下,环是二元环;
- 按编号降序选二元环,答案最优。
降序枚举 \(n..1\),维护在 \(n+1..n+m\) 里能作为二元环另一个端点的结点集合,模拟即可。复杂度 \(\mathcal O((n+m)\log m)\)。
Solution Set -「LOCAL」冲刺省选 Round VII的更多相关文章
- 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\) ...
随机推荐
- Windows平台安装MongoDB步骤以及问题处理
今天开始向MongoDB进军,结果一开始就给我来了个下马威--安装不成功,死在了第一步,我滴个乖乖,哪能服气,为了不让后面的小伙伴踩坑,特此记录,希望能帮到有需要的小伙伴. 一.安装步骤 1.下载安装 ...
- 机器学习框架推理流程简述(以一项部署在windows上的MNN框架大模型部署过程为例子)
一.写在前面 公司正好有这个需求,故我这边简单接受进行模型的部署和demo程序的编写,顺便学习了解整个大模型的部署全流程.这篇博客会简单提到大模型部署的全流程,侧重点在推理这里.并且这篇博客也是结合之 ...
- Air780E如何发送SMS?一文详解!
今天一起来学习使用合宙低功耗4G模组Air780E发送SMS短消息: 一.SMS简介 SMS(短消息服务,ShortMessageService)功能主要用于在蜂窝网络中传输短消息. 在4G网络中 ...
- Python如何根据给定模型计算权值
在机器学习和深度学习中,模型的权值(或参数)通常是通过训练过程(如梯度下降)来学习和调整的.然而,如果我们想根据一个已经训练好的模型来计算或提取其权值,Python 提供了许多工具和库,其中最常用的是 ...
- 高性能计算-openmp-图像卷积滤波算法(12)
1. 目标:使用openmp实现图像滤波算法 给定一个输入图像,你的任务是将其划分为多个块,并使用多个进程对每个块进行滤波操作. 要求: 1.使用分段并行结构和指令section来并行执行不同的计算步 ...
- C#-公众号H5页面授权获取用户code、openid、unionid
一:配置信息 公众号设置: 1:设置 IP白名单(所在的服务器ip).记录公众号APPID和APPsecret; 2:设置 网页授权域名; 二:页面授权----[html中获取code] 1:页面引入 ...
- 鸿蒙NEXT开发案例:亲戚关系计算器
[引言] 在快节奏的现代生活中,人们往往因为忙碌而忽略了与亲戚间的互动,特别是在春节期间,面对众多的长辈和晚辈时,很多人会感到困惑,不知道该如何正确地称呼每一位亲戚.针对这一问题,我们开发了一款基于鸿 ...
- btrace一些你不知道的事(源码入手)
背景 周五下班回家,在公司班车上觉得无聊,看了下btrace的源码(自己反编译). 一些关于btrace的基本内容,可以看下我早起的一篇记录:btrace记忆 上一篇主要介绍的是btrace的一些基本 ...
- Django消息队列之django-rq
github:https://github.com/rq/django-rq RQ(Redis Queue),人如其名,用 redis 做的队列任务 redis ,众所周知, 它的列表可以做队列,rq ...
- python之在线书籍
人生苦短,我用python, 这里罗列一些可以查看python电子书的相关链接,平时没事多看看,一定会大有裨益!!! python3-cookbook[https://python3-cookbook ...