AtCoder ABC 215 简要题解
A - B
模拟
C
可以直接爆搜,也可以写逐位确定的多项式复杂度算法,使用多重组合式求随意乱排的方案数。
D
首先对 \(A\) 所有数暴力分解质因数,然后把遇到过的质因数打上标记。
接下来再对 \(1 \sim m\) 暴力枚举然后分解质因数 \(\rm check\) 即可,复杂度 \(\mathcal{O}((n + m) \sqrt{W})\)。
E
看错题耽误了半小时。。。直接状压:令 \(f_{i, j, S}\) 表示当前考虑到第 \(i\) 位上一个选出来的比赛为 \(j\),当前已经选出的比赛二进制压位后为 \(S\) 的方案数。
转移显然,复杂度 \(\mathcal{O}(10n2 ^ {10})\)。
F
二分答案,问题转变为是否存在一对点对 \(x, y\) 坐标之差均 \(\ge mid\)。
首先将所有点按照 \(x\) 坐标排序,考虑 \((i, j)(i < j)\) 这个点对是否合法在 \(j\) 处统计。
那么对于 \(j\) 可行的 \(i\) 是一段前缀,我们维护这段前缀 \(y\) 的最大最小值即可判断。
注意到随 \(j\) 递增可行的前缀不减,于是可以双指针扫过来,复杂度 \(\mathcal{O}(n (\log W + \log n))\)。
G
根据期望的线性性,我们考虑每种颜色对答案的贡献。
可以发现贡献只与颜色出现次数有关,注意到本质不同的出现次数只有 \(\sqrt{n}\) 个,于是我们把出现次数相同的颜色一起计算贡献,复杂度 \(\mathcal{O}(n \sqrt{n})\)。
貌似题解还有 \(\mathcal{O}(n \mathrm{Poly}(\log n))\) 的做法,不会 \(\rm PGF\) 先鸽。。。
H
首先考虑什么情况是合法的。
容易扩展 \(\rm Hall\) 定律得到局面合法当且仅当:\(\forall S \in V_b, \sum\limits_{i \in S} b_i \le |\bigcup\limits_{i \in S, c_{j, i} = 1} a_j|\)(写的不是很严谨,右侧是所对应集合 \(a\) 的和)。
由于 \(m\) 很大 \(n\) 很小,因此我们考虑枚举右边的集合 \(T\),那么就要求出左边有那些集合 \(S\) 出边构成的并集恰为 \(T\),设为 \(P_T\),那么不难得到第一问答案为:
\]
不难观察得:取到最大值的集合 \(S \in P_T\) 一定是 \(P_T\) 内所有集合的并,因此就不需要枚举所有集合 \(S \in P_T\) 了,只需要求出所有 \(P_T\) 内集合的并 \(P_T'\) 即可,那么可将答案改写为:
\]
同时继续观察可以发现:我们可以放宽条件使得答案依然不变(令 \(s_j\) 为 \(j\) 这个公司可以接受的菜品压位构成的二进制数):
\]
于是我们只需 \(\forall S, \mathrm{count} : f_S = \sum\limits_{i = 1} ^ m [s_i \subseteq S] b_i\) 即可计算得出第一问的答案。
那么我们直接令 \(g_{S} = \sum\limits_{i = 1} ^ m [s_i = S] b_i\),这个可以 \(\mathcal{O}(m)\) 简单得到,然后做一边子集和(高维前缀和)即可,复杂度 \(\mathcal{O}(n2 ^ n)\)。
接下来考虑第二问,根据第一问可以得知,问题显然可以转化为:
- 有 \(n\) 种物品,第 \(i\) 种物品有 \(a_i\) 个,所有物品之间(包括同种物品)有标号,接下来需要从中取出 \(m\) 个元素,接下来给出 \(k\) 个集合,要求选取出的所有元素至少完整地被一个集合包含,求方案数。
考虑容斥,计算得到不合法的方案数。
首先不难得到一个朴素的 \(\rm dp\) 方法,令 \(f_{i, j}\) 表示考虑完前 \(i\) 个集合,当前集合的交集为 \(j\) 的容斥系数之和。
转移显然,复杂度 \(\mathcal{O}(4 ^ n)\),不能接受。
可以发现,问题在于如何快速地得到选出若干个集合并集恰好为 \(S\) 的容斥系数之和。
对此,我们考虑使用 另一个容斥来求出此容斥系数之和。
具体地,我们令 \(g_S\) 为钦定选出若干个集合并集至少为 \(S\) 的方案,那么有(令给出的集合为 \(T_{1, 2, \cdots k}\)):
\]
为了求 \(g\),我们考虑直接计算得到:
\]
然后得到 \(g\) 的方法显然,对于此我们做一边超集和(高维后缀和),复杂度 \(\mathcal{O}(n2 ^ n)\)。
那么就满足二项式反演的集合形式,令 \(f\) 为恰好的方案,根据二项式反演易得:
\]
容易发现这是一个异或卷积的形式,直接做 \(\rm FWT\) 即可,复杂度 \(\mathcal{O}(n2 ^ n)\)。
当然你也可以不写 \(\rm FWT\),我们将 \((-1) ^ {|S|}\) 提出最后乘上去,那么后者也是一个超集和,可以直接计算。
那么最终第二问的答案为:
\]
总体复杂度 \(\mathcal{O}(nm + n2 ^ n)\)。
AtCoder ABC 215 简要题解的更多相关文章
- AtCoder ExaWizards 2019 简要题解
AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...
- AtCoder ABC 242 题解
AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- Noip 2014酱油记+简要题解
好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...
- Tsinghua 2018 DSA PA2简要题解
反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...
- Codeforces 863 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...
- HNOI2018简要题解
HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...
- JXOI2018简要题解
JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...
- BJOI2018简要题解
BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...
随机推荐
- Hive SQL优化思路
Hive的优化主要分为:配置优化.SQL语句优化.任务优化等方案.其中在开发过程中主要涉及到的可能是SQL优化这块. 优化的核心思想是: 减少数据量(例如分区.列剪裁) 避免数据倾斜(例如加参数.Ke ...
- [opencv]approxDP多边形逼近获取四边形轮廓信息
#include "opencv2/opencv.hpp" #include <iostream> #include <math.h> #include & ...
- Spring企业级程序设计 • 【第6章 深入Spring MVC开发】
全部章节 >>>> 本章目录 6.1 模型数据解析及控制器返回值 6.1.1 ModelAndView多种用法 6.1.2 Map添加模型数据和返回String类型值 6 ...
- HTML网页设计基础笔记 • 【第2章 排列页面内容】
全部章节 >>>> 本章目录 2.1 音频标签和视频标签 2.1.1 音频标签 2.1.2 视频标签 2.2 列表.div 以及 span 标签 2.2.1 列表标签 2. ...
- DOTween实现缓动变值动效
DOTween.To(getter, setter, to, float duration) 是常用的一个变值方法(一定时间将某变量从起始值到终点值进行变化),可以便捷实现 滚分.涨进度条 等功能 但 ...
- Ubuntu18.04升级内核后修改grub文件启动顺序
采坑:之前线上的服务器内核是4.15.0,后面有的服务跑不起来,说是要升级内核,于是就升级了,然后改了/etc/default/grub的启动顺序,改错了就启动不起来了,哈哈.后面多次尝试还是改成功了 ...
- kubernetes 之部署metrics-server
Kubernetes 版本是 1.14 # kubectl version --short Client Version: v1.14.3 Server Version: v1.14.2 下载文件 f ...
- 第10组 Beta冲刺 (1/5)(组长)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14012521.html ·作业博客:https://edu.cnblogs.co ...
- Linux上天之路(六)之Linux文件管理
文件与文件夹的操作 1) 新建 2)改名 3)查看 4)删除 5)拷贝 6)移动 1. 文件的操作 文件的新建:touch filename 文件的改名:mv 文件的查看:ls 文件内容的查看:cat ...
- Word2010邮件合并制作成绩单
原文链接: https://www.toutiao.com/i6488941003494392333/ 准备数据源: 选择"邮件"选项卡,"开始邮件合并"功能组 ...