Solution Set -「LOCAL」冲刺省选 Round I
\(\mathscr{Summary}\)
状态还行叭。
A 题又犯坏习惯,走起来就大力分讨,上了个厕所之后冷静一下开始寻找比较普适性的 DP 状态,然后几乎就切掉了,可惜复杂度写假了没发现(已经预处理过的前缀和一个一个加,笑死)。
B 题的解法暗示性很强,随便猜一个结点出来套路性 DFS 树就好,比较迅速。
C 题骗的时候就走得有点偏,问题没有抽象清楚,虽然有暴力分,但和正解毫不相关。这个正解确实太神奇了。
\(\mathscr{Solution}\)
\(\mathscr{A}-\) Sequence
给定 \(n,k,m,\{a_m\}\),\(\{a_m\}\) 的值域是 \(U=[1,k]\cap\mathbb N\)。定义值域也是 \(U\) 的序列 \(\{b_n\}\) 是好的,当且仅当它存在一个长度为 \(k\) 的子序列不含重复元素。求在所有的 \(\{b_n\}\) 中,\(\{a_m\}\) 作为连续子序列的出现次数。
\(m\le n\le2.5\times10^4\),\(k\le400\)。
首先,光是 \(\{a_m\}\) 就能让 \(\{b_n\}\) 合法的情况直接判了。
出现次数,还允许重复,\(n\) 也不大,所以先直接枚举出现位置。设现在 \(\{a_m\}\) 左边还能加 \(l\) 个元素,右边还能加 \(r\) 个元素。注意到若 \(\{a_m\}\) 包含重复元素,左边和右边出现合法段(使 \(\{b_n\}\) 合法的段)的情况是互不影响的,不可能存在跨过 \(\{a_m\}\) 的合法段。稍微抽象一下可以得到这样一个 DP 问题:
给定一个确定的,长度为 \(j\) 的子序列 \(\{c_j\}\),在其后面添加 \(i\) 个元素,使得 \(\{c'_{i+j}\}\) 合法,我们记这样的添加方案数为 \(f(i,j)\),特别地,\(f(i,k)=k^i\)。转移显然有
\]
可以 \(\mathcal O(nk)\) 得到。两边方案数小小容斥一发就能求到 \(\{a_m\}\) 包含重复元素时的方案。
不包含重复元素,注意到此时 \(m<k\le400\),所以可以大力钦定几个位置让它出现重复,规约到前一种情况。具体地,设在 \(\{a_m\}\) 前面添加了第 \(i~(i+m\le k)\) 个元素时,这个元素与它后面的第 \(j\) 个重复,且前 \(i-1\) 个元素都没有产生重复。枚举此处的 \(i,j\),在这种情况下,令 \(\{t_{i+m}\}\) 表示添加得到的序列,那么其最长不重复前缀长度为 \(p=j\),最长不重复后缀长度为 \(q=i+m-1\),结合已经枚举的 \(l,r\),此处方案数为
\]
注意 \(i-1\) 个不产生重复的元素还会产生 \((k-m)!/(k-m-i+1)!\) 的系数,记得乘上。
现在算法复杂度是 \(\mathcal O(nk^2)\),优化很显然:上式对 \(j\) 求和的部分可以滚前缀和。因此最终复杂度为 \(\mathcal O(nk)\)。
\(\mathscr{B}-\) Graph
给定含有 \(n\) 个结点 \(m\) 条边的强连通有向图,若 \(u\) 到任意结点 \(v\) 都有且仅有一条简单路径,则称 \(u\) 是好的。求出所有好的结点 \(u\)。
多测,\(\sum n\le10^5\),\(\sum m\le2\times10^5\),保证每个图中至少有 \(20\%\) 的好点。
判 \(u\) 好不好:DFS 一遍,每个访问到的已被遍历过的结点都必须在当前的递归栈内。
从 \(20\%\) 的条件入手,不要白不要嘛,随便猜几次得到一个好点 \(r\)。这个“好”字对 \(r\) 的限制非常强,分析一下可知:\(r\) 为根的 DFS 树唯一,且仅存在外向树边和返祖边。
以此为基础,判断其他结点的好不好。对于 \(u\neq r\),如果 \(u\) 子树内包括两条及以上到 \(u\) 严格祖先的返祖边,显然 \(u\) 不好;否则 \(u\) 子树内必然存在恰好一条到 \(u\) 严格祖先的返祖边(图强连通),如果这个祖先好,\(u\) 就好,否则 \(u\) 就不好。画画图比较明显。
DFS 一遍求出最浅返祖边和次浅返祖边,再 DFS 一遍判断即可。复杂度 \(\mathcal O(\sum m)\)。
\(\mathscr{C}-\) Shape
Cov. 「CF 1290F」Making Shapes; my solution.
Solution Set -「LOCAL」冲刺省选 Round I的更多相关文章
- 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\) ...
随机推荐
- Java面试题中高级进阶(JVM篇01)
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键盘 *** 12 ...
- 3.17 Linux移动或重命名文件和目录(mv命令)
mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名.该命令的基本格式如下: [root@localhost ~]# mv [选项] 源文件 目标文件 选 ...
- Codeforces 1847 A-F
题面 A B C D E F 难度:红 橙 黄 蓝 紫 紫 题解 B 题目大意:找到一组分割方法,使得 \(\sum _{i=1} ^ k (\text{&} _{j=l_i} ^ {r_i} ...
- ABP 接口访问变慢,缓存清理,请求超时
发布后过一个小时或者不久访问过慢 第一次访问慢,第二次访问变快 总结 发布后IIS 访问 过慢的原因考虑,IIS回收.缓存清理.去host项目里面配置缓存过期时间再去试验
- C语言指针一些常见的错误用法
指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽.比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,语言的自身机制帮 ...
- python爬虫 正则表达式详解
正则表达式 最近学校布置了一个关于python爬虫的期末作业,而我之前对python爬虫一直都比较感兴趣但是没有系统的学过,就想借此机会开个新坑来系统学习和应用python爬虫,那我们开始吧 正则表达 ...
- 啃啃老菜:Spring IOC核心源码学习(一)
啃啃老菜:Spring IOC核心源码学习(一) 本文主要以spring ioc容器基本代码骨架为切入点,理解ioc容器的基本代码组件结构,各代码组件细节剖析将放在后面的学习文章里. 关于IOC容器 ...
- jquery加购物车功能
如下图所示: 点击加入购物车,由下到上出现此弹窗,点击close关闭弹窗. $(".addCar").on("click", function() { var ...
- Linux终端命令之screen
screen的功能 screen的功能大体有三个: 会话恢复:只要Screen本身没有终止,在其内部运行的会话都可以恢复.这一点对于远程登录的用户特别有用--即使网络连接中断,用户也不会失去对已经打开 ...
- 整合Sleuth
Sleuth是 springcloud 分布式跟踪解决方案. Sleuth 术语: 跨度(span ) :Sleuth 的基本工作单元,他用一个64位的id唯一标识.出ID外,span还包含 其他的数 ...