这世道连 \(\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. Java初学者作业——声明变量储存商品信息并进行输出

    返回本章节 返回作业目录 需求说明: 声明变量存储商品信息(商品名称.商品价格和商品库存数量). 输出商品信息. 实现思路: 打印商品商品信息实现步骤: 声明变量存储商品信息.为变量赋值. 输出变量的 ...

  2. 【MySQL作业】连接查询——美和易思内连接查询应用习题

    点击打开所使用到的数据库>>> 1.使用内连接获取客户"王传华"所有的订单信息和客户信息. 使用内连接获取客户"王传华"所有的订单信息和客户信 ...

  3. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

  4. CSS基础 盒子相关属性总结 padding+border

    1.border当个属性: 作用 属性名 属性值 边框粗细 border-width 数字+px 边框样式 border-style solid实线.dashed虚线.dotted点线 边框颜色 bo ...

  5. Python基础案例练习:制作学生信息管理系统

    一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...

  6. Fiddler Everywhere简单使用

    重装了电脑,想装Fiddler,结果官网下载的包变成了Fiddler Everywhere,体验了下,与老版本相比,操作流程上并无太大变化,但是安装包明显变大了,而且需要登录才能操作,建议还是用老版本 ...

  7. 初识python 之 取101到200之前的所有素数

    素数:只能被1或本身整除 思路分析:这个数只有2个数据能整除 代码如下: n = 0 li = [] for i in range(101,200): m = 0 for j in range(1,2 ...

  8. CentOS7添加开机启动服务或脚本

    方法一(rc.local) 改方式配置自动启动最为简单,只需要修改rc.local文件 由于在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod + ...

  9. Windows Batch 编程 和 Powershell 编程

    Batch Script - Functions with Return Values https://www.tutorialspoint.com/batch_script/batch_script ...

  10. centos7 单用户模式修改root密码

    1. 在虚拟机重启客户机后.会出现下面进入界面.按e键 2.按了e键后,会出现下面的界面.此时按↓键.找到linux16 3.将光标移动到UTF-8后面,添加init=/bin/sh,并按 ctrl  ...