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. Service有多个实现类,它怎么知道该注入哪个ServiceImpl类

    方法一:Controller中注入service的时候使用@Autowired自动注入,@Qualifier("beanId")来指定注入哪一个. 方法二:Controller中注 ...

  2. Adversarial Examples Improve Image Recognition

    Xie C, Tan M, Gong B, et al. Adversarial Examples Improve Image Recognition.[J]. arXiv: Computer Vis ...

  3. 求最大公因数和最小公倍数(C++实现)

    求两个正整数之最大公因子的算法(辗转相除法) 最大公约数是指能同时整除它们的最大正整数 基本原理:两个数的最大公约数等于它们中较小的数和两数之差的最大公约数. 就如有 a = 122, b =  54 ...

  4. ☕【难点攻克技术系列】「海量数据计算系列」如何使用BitMap在海量数据中对相应的进行去重、查找和排序

    BitMap(位图)的介绍 BitMap从字面的意思,很多人认为是位图,其实准确的来说,翻译成基于位的映射,其中数据库中有一种索引就叫做位图索引. 在具有性能优化的数据结构中,大家使用最多的就是has ...

  5. 中华古诗词知识图谱之实体关系构建&导入neo4j数据库

    实体分析 诗名实体 属性 包含:作诗时间,诗名,内容,翻译,背景. 关系 实体1 关系 实体2 诗名 形式 诗词形式 诗名 作者 诗人 诗名 分类 类别 诗名 词牌名 词牌名 诗名 曲牌名 曲牌名 诗 ...

  6. MySQL数据库安装Version5.7.25

    1.说明 MySQL数据库大版本5.7的安装没有较大变化, 所以MySQL数据库Version5.7.25安装请参考:MySQL数据库安装Version5.7 上面文章中MySQL安装使用Versio ...

  7. 大厂必问的JVM面试题

    本文目录: 讲一下JVM内存结构? 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 Java对象的定位方式 说一下堆栈的区别? 什么情况下会发生栈溢出? 类文件结构 什么是类加载 ...

  8. hisql 与sqlsugar,freesql 数据插入性能测试

    hisql与目前比较流行的ORM框架性能测试对比 hisql 一直定位为新一代的ORM框架 为低代码开发而生 测试数据数据库为sqlserver数据库 测试源码地址hisql与sqlsugar fre ...

  9. python 报错:RecursionError: maximum recursion depth exceeded

    RecursionError:maximun recursion depth exceeded 超过了最大递归深度 原因: 在使用@property装饰器时,方法名与实例的属性同名,在赋值进从而产生了 ...

  10. 初识python: 文件下载进度

    (后续待更新...) 使用 request 的 urlretrieve 方法创建"回调函数": 下载进度 详细代码如下: #!/user/bin env python # auth ...