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\) ...
随机推荐
- linq+lambda+delegate,从list中查找到满足匹配条件的所有数据索引值
linq的扩展方法中有FindIndex,FindLastIndex两个方法可以查找满足条件的首个和最后一个数据的索引值,利用delegate将匹配条件的方法传入FindAllIndex,查找满足匹配 ...
- att&ck框架学习笔记3
https://blog.csdn.net/m0_38103658/article/details/106517758?utm_medium=distribute.pc_relevant.none-t ...
- 封装socket 到vue2.x 使用
vue2.x 使用 socket 数据交互 简单封装 socket //生成唯一标识符 function getUuid { let s = []; let hexDigits = "012 ...
- .NET周刊【11月第1期 2024-11-03】
国内文章 .NET 9 AOT的突破 - 支持老旧Win7与XP环境 https://www.cnblogs.com/lsq6/p/18519287 .NET 9 引入了 AOT 支持,使得应用程序能 ...
- Windows下pthread静态库的编译
一.写在前面 官方网站提供的pthread-win32下载链接里面给到的是dll文件,属于动态库文件,即使在自己写的工程中已经配置了"/MT",即多线程静态链接,但是在其他电脑当中 ...
- java之封装日期工具类DateUtils
整合日期工具类DateUtils dateUtils日期工具类封装-各类格式方法 pom文件引入 <dependency> <groupId>cn.hutool</gro ...
- 超实用的SpringAOP实战之日志记录
本文主要以日志记录作为切入点,来讲解Spring AOP在实际项目开发中怎样更好的使项目业务代码更加简洁.开发更加高效. 日志处理只是AOP其中一种应用场景,当你掌握了这一种场景,对于其它应用场景也可 ...
- ElementUI ---- dialog点击取消后蒙遮层不消失
场景: 页面A打开了 dialog, 然后点击 页面A dialog 的按钮 跳转到 页面B,并且打开页面B的 dialog 但是页面B的 dialog 关闭后,蒙遮层并没消失(已经设置了 :appe ...
- pycharm之debugger使用
1.未打断点运程序,输出全部结果 2.打断点后,点击debug,代码执行到断点前停止(断点所在行不执行) 3.step over,是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子 ...
- 【前端】‘opencollective-postinstall‘ 不是内部或外部命令,也不是可运行的程序
问题 'opencollective-postinstall' 不是内部或外部命令,也不是可运行的程序 解决办法 npm install --save opencollective-postinsta ...