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\) ...
随机推荐
- k8s集群环境下kubesphere部署
安装kubernetes 1.环境配置 每个机器使用内网ip互通 每个机器配置自己的hostname,不能用localhost 所有机器均操作 #设置每个机器自己的hostname hostnamec ...
- CommonsCollections7(基于ysoserial)
环境准备 JDK1.8(8u421)我以本地的JDK8版本为准.commons-collections(3.x 4.x均可这里使用3.2版本) cc3.2: <dependency> &l ...
- 不依赖 Spring,你会如何自实现 RabbitMQ 消息的消费(一)
开心一刻 上午一好哥们微信我哥们:哥们在干嘛,晚上出来吃饭我:就我俩吗哥们:对啊我:那多没意思,我叫俩女的出来哥们:好啊,哈哈哈晚上吃完饭到家后,我给哥们发消息我:今天吃的真开心,下次继续哥们:开心尼 ...
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的
SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即"service"阶段.在"service"阶段中,每一次Http请求到来 ...
- RabbitMQ接入之PHP
上一篇记录下RabbitMQ的安装与管理界面,接下来开始看PHP是如何接入的 1.安装php-amqplib php-amqplib是一个纯PHP库,使用它,基于PHP的脚本客户端就可以轻松的连接和操 ...
- 【懒狗必备】用bat命令解放双手
背景说明 每天上班,都需要打开本地的一些服务,比如redis.zk等. 作为懒狗,需要会利用工具. 于是我写了一个bat脚本,幼儿园水平: chcp 65001 title 一键启动本地环境脚本 st ...
- uniapp 样式篇
1.全局变量 项目根目录的 uni.scss 文件是uni-app内置的常用样式变量,这个文件会自动引入,开发者可直接引用这个变了 文件默认已经定义了常用的变量,开发者也可以在此基础上继续添加 /* ...
- H5C3时钟实例(rem适配)
1.原理分析和效果图 先上效果图: 屏幕适配上使用rem适配,假设用户的手机屏幕最下宽度是375px,而谷歌浏览器最小的字体大小为12px,所以我以375px为标准尺寸进行rem适配,即375px的屏 ...
- OS之《进程管理》
进程同步 同步实际上是指:将多个进程,按照顺序,有序执行. 让进程有序进行的场景有很多.比如:一个进程依赖另外一个进程的计算结果:一个进程等待另外一个对临界资源的访问:还有像生产者消费者模型中的相互配 ...
- Java线程命名问题解决
前言 网上冲浪时刷到线程池的文章,想想看自己好像还没在实际场景中设置过线程名称,小小研究一下. 研究过程 默认命名 创建的线程都会有自己的名字,如果不设置,程序会给线程默认的名字,如Thread-0 ...