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\),那么不难得到第一问答案为:

\[\min\limits_{T, p_T \ne \varnothing} \sum\limits_{i \in T} a_i - \left(\max\limits_{S \in P_T} \sum\limits_{j \in S} b_j\right) + 1
\]

不难观察得:取到最大值的集合 \(S \in P_T\) 一定是 \(P_T\) 内所有集合的并,因此就不需要枚举所有集合 \(S \in P_T\) 了,只需要求出所有 \(P_T\) 内集合的并 \(P_T'\) 即可,那么可将答案改写为:

\[\min\limits_{T, P'_T \ne \varnothing} \sum\limits_{i \in T} a_i - \sum\limits_{j \in P'_T} b_j + 1
\]

同时继续观察可以发现:我们可以放宽条件使得答案依然不变(令 \(s_j\) 为 \(j\) 这个公司可以接受的菜品压位构成的二进制数):

\[\min\limits_{T, \exist i, s_i \subseteq T} \sum\limits_{i \in T} a_i - \sum\limits_{s_j \subseteq T} b_j + 1
\]

于是我们只需 \(\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_{S} = [\nexists i, S \subseteq T_i]
\]

为了求 \(g\),我们考虑直接计算得到:

\[g'_S = \sum\limits_{i = 1} ^ k [S \in T_i]
\]

然后得到 \(g\) 的方法显然,对于此我们做一边超集和(高维后缀和),复杂度 \(\mathcal{O}(n2 ^ n)\)。

那么就满足二项式反演的集合形式,令 \(f\) 为恰好的方案,根据二项式反演易得:

\[f_S = \sum\limits_{S \subseteq T} (-1) ^ {|T| - |S|} g_T
\]

容易发现这是一个异或卷积的形式,直接做 \(\rm FWT\) 即可,复杂度 \(\mathcal{O}(n2 ^ n)\)。

当然你也可以不写 \(\rm FWT\),我们将 \((-1) ^ {|S|}\) 提出最后乘上去,那么后者也是一个超集和,可以直接计算。

那么最终第二问的答案为:

\[Ans2 = \dbinom{\sum\limits a_i}{ans1} - \sum\limits_S f_S \times \dbinom{\sum\limits_{i \in S} a_i}{ans1}
\]

总体复杂度 \(\mathcal{O}(nm + n2 ^ n)\)。

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

  1. AtCoder ExaWizards 2019 简要题解

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

  2. AtCoder ABC 242 题解

    AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...

  3. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  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. Windows下安装配置MySQL

    Windows下安装配置MySQL的基本步骤 一.MySQL下载 MySQL官方下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads ...

  2. 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 ...

  3. golang(gin框架),基于RESTFUL的跨语言远程通信尝试

    golang(gin框架),基于RESTFUL的跨语言远程通信尝试 背景: 在今年的项目实训过程中,遇到了这样的问题: 企业老师讲课实用的技术栈是Java springboot. 实训实际给我们讲课以 ...

  4. 生成对抗网络GAN与DCGAN的理解

    作者在进行GAN学习中遇到的问题汇总到下方,并进行解读讲解,下面提到的题目是李宏毅老师机器学习课程的作业6(GAN) 一.GAN 网络上有关GAN和DCGAN的讲解已经很多,在这里不再加以赘述,放几个 ...

  5. Java面向对象笔记 • 【第1章 面向对象】

    全部章节   >>>> 本章目录 1.1 类和对象 1.1.1 类和对象的概念 1.1.2 类的语法结构 1.1.3 对象的创建和使用 1.1.4 对象和引用 1.1.5 实践 ...

  6. Java面向对象笔记 • 【第5章 异常处理】

    全部章节   >>>> 本章目录 5.1 异常概述 5.1.1 程序中的异常 5.1.2 异常分类 5.1.3 实践练习 5.2 try-catch处理异常 5.2.2 使用f ...

  7. mysql+heartbeat+drbd安装

    环境: 系统           IP地址            主机名             软件包列表 centos6.5  192.168.200.101      server1       ...

  8. JDK线程池异常处理方式

    1. 抛出异常 execute() java.util.concurrent.ThreadPoolExecutor#runWorker 中抛出,抛出之后经过以下两个步骤: catch块捕获,捕获之后再 ...

  9. [网络编程] 自己构建一个cgi.FieldStorage()的对象

    问题描述: 通常cgi.FieldStorage()返回一个类似于Python字典的对象. 在cgi框架中必须通过浏览器发送表单过来才能接受消息 那么我该怎么进行本地调试呢? 或者说在没有搭建好一整套 ...

  10. Python路径表示方法

    一 更换为绝对路径的写法func1("C:\\Users\\renyc") 二 显式声明字符串不用转义(加r)func1(r"C:\Users\renyc") ...