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\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...
随机推荐
- Windows下安装配置MySQL
Windows下安装配置MySQL的基本步骤 一.MySQL下载 MySQL官方下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads ...
- CHARACTERIZING ADVERSARIAL SUBSPACES USING LOCAL INTRINSIC DIMENSIONALITY
目录 概 主要内容 LID LID估计 算法 实验 1 2 3 4 5 Ma X, Li B, Wang Y, et al. Characterizing Adversarial Subspaces ...
- golang(gin框架),基于RESTFUL的跨语言远程通信尝试
golang(gin框架),基于RESTFUL的跨语言远程通信尝试 背景: 在今年的项目实训过程中,遇到了这样的问题: 企业老师讲课实用的技术栈是Java springboot. 实训实际给我们讲课以 ...
- 生成对抗网络GAN与DCGAN的理解
作者在进行GAN学习中遇到的问题汇总到下方,并进行解读讲解,下面提到的题目是李宏毅老师机器学习课程的作业6(GAN) 一.GAN 网络上有关GAN和DCGAN的讲解已经很多,在这里不再加以赘述,放几个 ...
- Java面向对象笔记 • 【第1章 面向对象】
全部章节 >>>> 本章目录 1.1 类和对象 1.1.1 类和对象的概念 1.1.2 类的语法结构 1.1.3 对象的创建和使用 1.1.4 对象和引用 1.1.5 实践 ...
- Java面向对象笔记 • 【第5章 异常处理】
全部章节 >>>> 本章目录 5.1 异常概述 5.1.1 程序中的异常 5.1.2 异常分类 5.1.3 实践练习 5.2 try-catch处理异常 5.2.2 使用f ...
- mysql+heartbeat+drbd安装
环境: 系统 IP地址 主机名 软件包列表 centos6.5 192.168.200.101 server1 ...
- JDK线程池异常处理方式
1. 抛出异常 execute() java.util.concurrent.ThreadPoolExecutor#runWorker 中抛出,抛出之后经过以下两个步骤: catch块捕获,捕获之后再 ...
- [网络编程] 自己构建一个cgi.FieldStorage()的对象
问题描述: 通常cgi.FieldStorage()返回一个类似于Python字典的对象. 在cgi框架中必须通过浏览器发送表单过来才能接受消息 那么我该怎么进行本地调试呢? 或者说在没有搭建好一整套 ...
- Python路径表示方法
一 更换为绝对路径的写法func1("C:\\Users\\renyc") 二 显式声明字符串不用转义(加r)func1(r"C:\Users\renyc") ...