这世道连 \(\rm ABC\) 都要写题解来续命了。。。

A - D

略。

E

有如下观察:

  • 对于任意的四个方格,出去之后再回来可以调整为先在内部走到固定位置再走出去。

因此只需要考虑在一开始把内部的走法都连上即可不用考虑重复计算贡献的问题。

因此我们考虑对于每个点 \(P\) 按照下图连边:

.###.
##L##
#LPL#
##L##
.###.

对于每个 \(L\),若 \(L\) 不为障碍,我们从 \(P \rightarrow L\) 连一条边权为 \(0\) 的边;否则连边权为 \(1\) 的边。

对于每个 \(\#\),我们从 \(P\) 向其连一条边权为 \(1\) 的边。

注意到边权只有两种,于是可以使用双队列做到 \(\mathcal{O}(nm)\)。

更进一步的,我们发现边权为 \(0, 1\),那么实现的时候可以直接使用 \(\rm deque\) 代替优先队列。

F

对字符串 \(S\) 建出后缀树。

对于每个后缀,在后缀树上的祖先节点权值 \(+1\),每个后缀的答案就是祖先节点上权值之和,离线树上差分即可。

复杂度 \(\mathcal{O}(|\Sigma|n)\),注意由于后缀树是压缩的因此要考虑长度。

G

令 \(f_S\) 为只考虑 \(S\) 这个导出子图内部的边使得 \(S\) 联通的方案,\(cnt_S\) 为 \(S\) 这个导出子图内部的边,那么答案为:

\[ans_k = \sum\limits_{k \in S} f_S \times 2 ^ {cnt_{U - S}}
\]

这部分可以直接计算,复杂度 \(\mathcal{O}(n2 ^ n)\),接下来考虑如何计算 \(f\)。

考虑容斥,不难得到转移(注意集合是无标号的,因此我们钦定一个元素在枚举集合内,由于本题需要求的 \(S\) 必须包含 \(1\),于是可以直接钦定 \(1\) 在枚举的子集内):

\[f_S = 2 ^ {cnt_S} - \sum\limits_{1 \in T, T \subseteq S} f_T \times 2 ^ {cnt_{S - T}}
\]

由于本题数据范围较小,可以直接计算,复杂度 \(\mathcal{O}(3 ^ n)\)。

当然可以使用 \(\rm FWT\) 优化子集 \(\rm DP\) 做到 \(\mathcal{O}(n ^ 22 ^ n)\),好久没写过子集卷积了,于是写了这个做法。

H

考虑 \(\rm DP\),令 \(f_{i, j}\) 表示当且走到第 \(i\) 个点,已经走完了 \(j\) 的路程的方案,由于路径长度均 \(>1\) 所以可以直接转移。

考虑使用生成函数来刻画转移,令 \(F_i(x) = \sum\limits_j ^ \infty f_{i, j} x ^ j, G_{i, j}(x) = \sum\limits_{k = 1} ^ \infty p_{i, j, k}x ^ k\),那么有转移:

\[F_i(x) = \sum\limits_{j = 1} ^ n F_j(x) \times G_{j, i}(x)
\]

做半在线卷积即可,复杂度 \(\mathcal{O}(mT \log ^ 2T)\)。

AtCoder ABC213 简要题解的更多相关文章

  1. AtCoder AGC002 简要题解

    从今天开始,联赛之前大约要完成前 \(20\) 套 \(\rm AGC\),希望不要鸽. A 略 B 感觉这题比 \(\rm C\) 题难. 考虑对于每个时刻维护每个位置是否可能出现红球,那么一个时刻 ...

  2. AtCoder AGC003 简要题解

    A 首先横向和纵向互相独立,因此只考虑横向的情况. 那么显然只要不只往一边走都一定存在一种构造方式,直接判断即可,复杂度 \(\mathcal{O}(|S|)\). B 首先相邻两个数同时配对两次可以 ...

  3. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  4. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  5. Tsinghua 2018 DSA PA2简要题解

    反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...

  6. Codeforces 863 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...

  7. HNOI2018简要题解

    HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...

  8. JXOI2018简要题解

    JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...

  9. BJOI2018简要题解

    BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...

随机推荐

  1. Color Models (RGB, CMY, HSI)

    目录 概 定义 RGB CMY CMYK HSI 相互的转换 RGB <=> CMY CMY <=> CMYK CMY > CMYK CMYK > CMY RGB ...

  2. Chapter 2 Randomized Experiments

    目录 概 2.1 Randomization 2.2 Conditional randomization 2.3 Standardization 2.4 Inverse probability wei ...

  3. 编写Java程序,实现对兵营类的封装,将兵营类中的所有属性设置为私有访问权限,方法设置为公有访问权限

    返回本章节 返回作业目录 需求说明: 实现对兵营类的封装 将兵营类中的所有属性设置为私有访问权限. 将兵营类中所有属性的赋值方法设置为公有访问权限. 要求兵营名称的长度在4-8位之间. 要求兵营士兵的 ...

  4. .NET 云原生架构师训练营(设计原则&&设计模式)--学习笔记

    目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You ...

  5. 【Linux】Linux没有网络,可能的解决方法

    [root@localhost etc]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ll 修改此文件中 ...

  6. 基于GO语言实现的固定长度邀请码

    1. 选取数字加英文字母组成32个字符的字符串,用于表示32进制数. 2. 用一个特定的字符比如`G`作为分隔符,解析的时候字符`G`后面的字符不参与运算. 3. LEN表示邀请码长度,默认为6. g ...

  7. 【ASP.NET Core】Blazor+MiniAPI完成文件下载

    今天老周要说的内容比较简单,所以大伙伴们不必紧张,能识字的都能学会. 在开始之前先来一段废话. 许多人都很关心,blazor 用起来如何?其实也没什么,做Web的无非就是后台代码+前台HTML(包含J ...

  8. java 封装 总结

    1.前言 老是被问什么是java 封装...很基础的一个问题 ,其实我们一直在写的东西但不知道怎么称呼. 比如 在entity实体类 里面老用到的 getter 和 setter 方法其实就是封装的方 ...

  9. linux VI命令快捷键

    ctrl+f  下一页 ctrl+b 上一页 ctrl+u 上半页 ctrl+d 下半页 数字+空格键 根据当前光标移动多少个字母 0键 光标移动到第一个字母,是当前行的 $键 光标移动到最后一个字母 ...

  10. Go语言系列之包

    Go语言的包(package) 一.包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt.os.io等. 二.定义包 我们还可以根据自己 ...