记录平时打 AtCoder 比赛时遇到的一些神题。

Tenka1 Programmer Contest 2019 D Three Colors

题目大意

有 $n$ 个正整数 $a_1, a_2,\dots, a_n$($3\le n\le 300$,$1\le a_i \le 300$)。现在要把每个数涂成红,绿,蓝,三种颜色之一。将同色的数之和分别记作 $R,G,B$。试求使得 $R,G,B$ 是某三角形的三边长的涂色方案。结果模 $998244353$ 。

分析

这道题的正解是考虑能构成三角形的涂色方案的数量。拿总方案数 $3^n$ 减去这个数量。

注意到 $R,G,B$ 三个数之和固定,将此和记作 $S$,即 $S = \sum_{i = 1}^{n} a_i$ 。

$R,G,B$ 能构成三角形的充要条件是 $R,G,B$ 中某个数大于等于 $ S/2$ 。

又注意到,当 $S$ 是奇数时,$S/2$ 不是整数,上述充要条件变为 $R,G,B$ 中某个数大于 $S/2$ 。

我们先来考虑 $R, G, B$ 三者中某个数大于 $S/2$ 的方案数。
注意到 $R,G,B$ 三者中最多有一个数可能大于 $S/2$ 。由于染色方案的对称性,我们不妨先考虑 $R > S/2$ 的染色方案数。我们可以用类似于背包的 DP 求出使得 $R$ 等于某个确定值的染色方案数。令 $f[i][j]$ 表示对前 $i$ 个数染色,使得其中被染成红色的数之和为 $j$ 的染色方案数。那么 $3 \sum_{ R = \floor{S/2} + 1}^{S} f[n][R]$ 即为使得 $R, G, B$ 三者中某个数大于 $S/2$ 的染色方案数。

若 $S$ 是偶数,我们可以沿用上述方法求出使得 $R = S/2$ 的染色方案数,即 $f[n][S/2]$ 。但是若直接把 $3f[n][S/2]$ 加到总数里边,会导致重复计数。具体地说,这样做将使得 $R = S/2, G = S/2, B = 0$,$R = S/2, G = 0, B = S/2$ 和 $R = 0, G = S/2, B = S/2$ 这三种情况被计了两次。而这三种情况的数量即从给定的 $n$ 个数中选择一些数使得其和为 $S/2$ 的方案数,用类似于背包的 DP 可以求出这个数量。将此数量记作 $k$ 。

总之,若 $S$ 为奇数,答案是 $ 3^n - 3 \sum_{ R = \floor{S/2} + 1}^{S} f[n][R] $;若 $S$ 为偶数,答案是 $3^n - 3\sum_{ R = S/ 2}^{S} f[n][R] + 3k$ 。

ExaWizards 2019 C Snuke the Wizard

Key observation: 最后剩下的小球最初所在的盒子必定是连续的一段。

将盒子从左到右编号为 $1$ 到 $n$ 。

如果最初在 $i$ 号盒子里的小球,从左侧消失,那么 $1$ 号到 $i$ 号盒子中的小球必定都从左边消失了。

如果最初在 $i$ 号盒子里的小球,从右侧消失,那么 $i$ 号到 $n$ 号盒子中小球必定都从右边消失了。

我们可以二分搜索最后剩下的小球最初所在的范围的左右边界。

AtCoder 神题汇总的更多相关文章

  1. AtCoder 杂题训练

    前言: 因为要普及了,今年没一等就可以退役去学文化课了,所以暑假把历年noip普及组都刷了一遍,离noip还有50+天,想弄点强化训练什么的. 想了想,就这些天学文化课之余有空就把AtCoder之前那 ...

  2. Codeforces & Atcoder神仙题做题记录

    鉴于Codeforces和atcoder上有很多神题,即使发呆了一整节数学课也是肝不出来,所以就记录一下. AGC033B LRUD Game 只要横坐标或者纵坐标超出范围就可以,所以我们只用看其中一 ...

  3. POJ 2484 A Funny Game(神题!)

    一开始看这道博弈题的时候我就用很常规的思路去分析了,首先先手取1或者2个coin后都会使剩下的coin变成线性排列的长条,然后无论双方如何操作都是把该线条分解为若干个子线条而已,即分解为若干个子游戏而 ...

  4. BUAA 724 晴天小猪的神题(RMQ线段树)

    BUAA 724 晴天小猪的神题 题意:中文题,略 题目链接:http://acm.buaa.edu.cn/problem/724/ 思路:对于询问x,y是否在同一区间,可以转换成有没有存在一个区间它 ...

  5. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 128[Submit][Status ...

  6. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  7. [agc007f] Shik and Copying String 模拟神题

    Description ​ "全"在十分愉快打工,第0天,给了他一个仅有小写字母构成的长度为N的字符串S0,在之后的第i天里,"全"的工作是将Si−1复制一份到 ...

  8. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  9. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

随机推荐

  1. python实践项目—Collatz序列

    Collatz序列题意说明 编写一个名为collatz()的函数,它有一个名为number 的参数.如果参数是偶数,那么collatz()就打印出number // 2,并返回该值.如果number ...

  2. 汇编:将指定的内存中连续N个字节填写成指定的内容

    1.loop指令实现 ;=============================== ;循环程序设计 ;将制定内存中连续count个字节填写成指定内容(te) ;loop指令实现 DATAS SEG ...

  3. js中面向对象(创建对象的几种方式)

    1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象 ...

  4. 13.4.3 鼠标与滚轮事件【JavaScript高级程序设计第三版】

    鼠标事件是Web 开发中最常用的一类事件,毕竟鼠标还是最主要的定位设备.DOM3 级事件中定义了9 个鼠标事件,简介如下. click:在用户单击主鼠标按钮(一般是左边的按钮)或者按下回车键时触发.这 ...

  5. (数据科学学习手札01)Python与R基本数据结构之异同

    Python 1.列表(list) list1 = [i for i in range(10)] list1[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 特点:可遍历,可索引,可切片 ...

  6. Microsoft Security Essentials 和 Windows Defender 离线升级包下载地址

    自从微软提供了免费的杀毒软件之后我就卸载掉了其他的杀毒软件.但是最近遇到了个小问题,我这里有一批电脑不能联网,杀毒软件的升级成了问题.在网上搜索了一番,终于找到了官方的离线升级包下载地址.放在这里备用 ...

  7. 手把手教你玩转CSS3 3D技术

    手把手教你玩转 CSS3 3D 技术   要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...

  8. [转] 前端开发利器--Brackets 的七种武器和旁门左道

    转自:http://www.jianshu.com/p/ff7798aa4548 Brackets是Adobe开发的web编辑器,是一款免费开源.多平台支持的软件,并在于GitHub上维护.Brack ...

  9. 「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)

    题意与分析 给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度. 表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次.然后就是对3n" role=& ...

  10. 「日常训练」The Intriguing Obsession(CodeForces Round #439 Div.2 C)

    2018年11月30日更新,补充了一些思考. 题意(CodeForces 869C) 三堆点,每堆一种颜色:连接的要求是同色不能相邻或距离必须至少3.问对整个图有几种连接方法,对一个数取模. 解析 要 ...