\(\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\)。转移显然有

\[f(i,j)=(k-j)f(i-1,j+1)+\sum_{t=1}^jf(i-1,t).
\]

可以 \(\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\),此处方案数为

\[+f(l-i,p)k^r+f(r,q)k^{l-i}-f(l-i,p)f(r,q),
\]

注意 \(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的更多相关文章

  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. [Windows]文件搜索利器Everything(附zip)

    前言 写代码过程中,老大突然发一条信息 老大:这周周报发一下. 我:好的. 然后我就 显示桌面 打开-我的电脑 找到E盘,找到周报文件夹 寻找到所有周报中今天的周报 复制发送 当我用上Everythi ...

  2. css画三角形,对角 √ 勾形

    .selected{ border-color: #5FB878; } .selected:after { content: ""; position: absolute; top ...

  3. LLM应用实战: AI资讯的自动聚合及报告生成

    1.背景 花了整整两天时间,本qiang~开发了一个关于AI新闻资讯的自动聚合及报告生成工具. 本篇记录一下整体的框架和实现原理,并且本着它山之石可以攻玉,本qiang~开放了所有的源码,源码可见如下 ...

  4. Spark Web UI 监控详解

    Spark集群环境配置 我们有2个节点,每个节点是一个worker,每个worker上启动一个Executor,其中Driver也跑在master上.每个Executor可使用的核数为2,可用的内存为 ...

  5. Django3.0

    Django3.0 简介 Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发.以下内容简要介绍了如何使用 Django 实现一个数据库驱动的 Web 应用. Dj ...

  6. 有经验的Java开发者和架构师容易犯的10个错误

    本文由 ImportNew - Andy.Song 翻译自 zeroturnaround.如需转载本文,请先参见文章末尾处的转载要求. 首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网 ...

  7. Ubuntu实现SSH外网连接内网(反向隧道)

    应用场景: 如果你有Linux云主机(腾讯.华为等),且公司有一台只有内网IP (或动态IP) 的Linux工作机:你计划在家里工作时,通过家里的电脑连接公司的工作机 (且不想使用类似Teamview ...

  8. ZCMU-1053

    比较简单记录一下主要感觉它这个题目没说清楚,题目要求:先有n,接着给出长度为n的标准组,然后给出猜测组,输出的两个数一个是有多少个是相对应的既相同坐标其数值也相同,后一个是两个都有但是位置不同(不含已 ...

  9. nanoFramework

    nanoFramework 01: Getting started with nanoFramework! 08: .NET nanoFramework GPIO, I2C, SPI and othe ...

  10. 企业IT基础资源管理的“帮帮团”上线啦——源启云原生基础设施管理平台

    为助力企业提升基础资源一体化管理和交付效率,以更先进的基础设施管理方式来满足现代企业业务持续扩展和复杂化的需要,中电金信运用基础设施即代码(Infrastructure as Code,简称IaC)技 ...