当前位置: 首页 > news >正文

8.1 简单计数题

A

给定整数 R,G,B,KR, G, B, KR,G,B,K。请计算满足以下所有条件的由 RGB 组成的字符串 SSS 的个数,并输出其对 998244353998244353998244353 取模的结果。

  • SSSRGB 的个数分别为 R,G,BR, G, BR,G,B
  • SSS 中作为连续子串出现的 RG 的个数恰好为 kkk

不难发现恰好 KKK 对并不好做,如果钦定 kkk 对又容易算多,考虑插入。

先插入 R 的话,我们就要考虑 G 和它配对,先插入 G 也一样,我们以先插入 R 为例。

考虑钦定 kkkR 后面插入 G,这样可以保证不会有超过 kkkRG。如果选择钦定 kkkRG 的坏处是又会算多又会算重,算多可以容斥,算重不好搞。于是考虑宁可不到 k 个,也不要多。

所以我们先钦定了 kkkR 去与 G 配对后,我们需要将 B 也插入进去,这步的方案数是 (Rk)×(R+BR)\binom{R}{k}\times\binom{R+B}{R}(kR)×(RR+B) 就是划分成 R+1R+1R+1 个可空集合,方案数就是假设我们对每个集合都加一个数后,就是划分非空集合了。

然后我们考虑插入,我们现在有 B+kB+kB+k 个位置可以插入 G,然后这个是容易处理的,但是我们并没有考虑到直接插可能会导致有些地方需要 G,但是我们并没有插入 G,这有两种方式处理,要么先给这些位置分配一个 G 然后再做,要么容斥,显然前面一个更加简单,但是作者写题时非常唐,居然写了后一个。

B

给定集合 SSS∣S∣=n|S|=nS=n,问有多少对非负整数对 (x,y)(x,y)(x,y) 满足:0≤x≤y≤c0\le x\le y\le c0xycy+x∉Sy+x\notin Sy+x/Sy−x∉Sy-x\notin Syx/S,保证 ∀x∈S,0≤x≤c\forall x\in S,0\le x\le cxS,0xc

考虑如何做,这个东西应该不难想到容斥,直接去做两个不属于大概不好做。

容斥后,我们就要去考虑 y+x∈Sy+x\in Sy+xSy−x∈Sy-x\in SyxS 的数量了,显然我们枚举 z∈Sz\in SzS,考虑它会被这样的二元组包含几次,首先 x+y=zx+y=zx+y=z 的不难处理,注意 x≤yx\le yxy 即可。然后考虑 y−x=zy-x=zyx=z 怎么算,这个东西应该也不难。按照算下 yyy 的上下界就结束了。

然后我们还要考虑 y+x∈Sy+x\in Sy+xSy−x∈Sy-x\in SyxS 的二元组数量,这就是找两个在 SSS 中的数判断它们是否能被这样表示,不难发现这个条件要求同奇偶,又因为 ∀x∈S,x≤c\forall x\in S,x\le cxS,xc,所以任意同奇偶的两个数都能被算到,于是按照奇偶分开算即可,注意我们还要考虑同一个数会不会被算到,注意到 x=0x=0x=0 是合法的,于是可以被算到。但是你其实还是要考虑你是否在算 y+x∈Sy+x\in Sy+xSy−x∈Sy-x\in SyxS 的时候都会算到。我的写法将两种合并了,于是不会算重,于是无需减去。

C

nnn 种不同颜色的球,第 iii 种颜色的球有 aia_iai 个。
这些球可以被组合成若干组。每组最多包含 222 个球,并且每组中每种颜色的球最多只能有 111 个。
考虑所有 2n2^n2n 种颜色集合。对于某个颜色集合,定义其值为用这些颜色的球能分成的最少组数。例如,若有三种颜色,球的数量分别为 333111777,则这些球最少能组合成 777 组(且不能更少),所以该颜色集合的值为 777
你的任务是计算所有 2n2^n2n 种颜色集合的值之和。由于答案可能很大,请输出其对 998 244 353998\,244\,353998244353 取模的结果。

考虑对于一种颜色集合 AAA,容易发现它的值为 max⁡(⌈∑x∈Ax2⌉,max⁡x∈Ax)\max(\lceil\frac{\sum_{x\in A} x}{2}\rceil,\max_{x\in A}x)max(⌈2xAx,maxxAx),解释一下,就是我们肯定不会想让一个颜色单独配对,然而我们如果贪心的去搞,如果所有其它元素的和都无法超过这个这个集合中最多的数的个数,那么肯定是让别的与它配对,然后最后剩下来一点单独搞,否则一定存在某个方案去完美配对(当然如果是奇数会剩下来一个数)。

然后显然让人想枚举这两个数中的一个,前一个看着就不好枚举,考虑枚举后一个,那么我们就要算 ⌈∑x∈Ax2⌉≥max⁡x∈Ax\lceil\frac{\sum_{x\in A} x}{2}\rceil\ge\max_{x\in A}x2xAxmaxxAx 的方案数,这个东西直接背包处理方案数即可。

D

怪物正在逼近城市,为了保护它,Akito 必须在城市周围创建一个防护场。众所周知,防护场有不同的等级。Akito 选择了等级为 nnn 的防护场。为了构建这个防护场,需要一个特殊咒语,即伟大魔法三角(表示为二维数组 TTT)的第 nnn 行。我们将这个数组称为 TTT
魔法三角的定义如下:

  • iii 行包含 iii 个整数。
    • 第一行唯一的整数是 kkk
  • 设第 iii 行第 jjj 个元素为 Ti,jT_{i,j}Ti,j,则:
    Ti,j={Ti−1,j−1⊕Ti−1,j,if 1<j<iTi−1,j,if j=1Ti−1,j−1,if j=i T_{i,j} = \begin{cases} T_{i-1,j-1} \oplus T_{i-1,j}, & \text{if } 1 < j < i \\ T_{i-1,j}, & \text{if } j = 1 \\ T_{i-1,j-1}, & \text{if } j = i \end{cases} Ti,j=Ti1,j1Ti1,j,Ti1,j,Ti1,j1,if 1<j<iif j=1if j=i
    其中 a⊕ba \oplus bab 表示整数 aaabbb 的按位异或运算。
    请帮助 Akito 在怪物抵达城市前找到这个无限魔法三角的第 nnn 行整数。

不难发现 TTT 中的值只可能是 000kkk,于是 kkk 具体是什么与题目无关了,考虑直接令 k=1k=1k=1,注意到异或可以理解为不进位加法,于是改一改你就会发现,这就是组合数递推的杨辉三角。然后组合数计算即可。

一个比较妙的地方是注意到是杨辉三角,当然这题很简单,但是如果给个卡特兰数就很难了。

E

先考虑没有任何限制怎么做,不难发现由于每个烹饪方法最多做一个菜,而这个选择的形式很像背包,设 f(i,j)f(i,j)f(i,j) 表示前 iii 个烹饪方式,做 jjj 道菜的方案数,总的转移复杂度是 O(n2)O(n^2)O(n2) 的。

至多在一半的菜种出现不好做,因为我们不好处理到底哪个数最多,但是某个食材至少出现多少次是好做的,因为如果那个菜在大于一般的菜种出现,最多只会有一个,枚举它。

然后考虑它要大于一般的总数。这意味着我们要将总数和它的数量一起放入状态,设 f(i,j,k)f(i,j,k)f(i,j,k) 表示枚举的主要食材 xxx 做了 kkk 道菜,其他与上面的一样的方案数。直接暴力转移是 O(n3)O(n^3)O(n3) 的。

考虑优化,我们发现判定条件是 k>j2k>\frac{j}{2}k>2j,这不好,倍比关系不好,但是和差关系好,类比中位数,我们可以很好地处理和差关系,但是对于倍比关系就没那么好了。于是启发我们去修改状态。我们发现上述式子可以化成:k−j2>0k-\frac{j}{2}>0k2j>0,直接这么压也不是不行,你把每 12\frac{1}{2}21 的差设为状态,但是这不好。我们发现,理解一下现实意义,不难发现这相当于你要求 xxx 做的菜数比其他加起来还多,于是你把这两个的差压起来就好了。我觉得这还是比较好想到的,比起我之前见过的:随机序列的最长公共前缀看成加入一个赌徒去随机丢色子好多了。

http://www.dtcms.com/a/309840.html

相关文章:

  • RS485 总线电阻匹配技术
  • 两个服务之间的大规模数据推送
  • Gitee
  • AI 调酒师上岗!接管酒吧吧台
  • Linux---make和makefile
  • 从递归到动态规划-最低票价
  • 3. boost::asio之同步读写的客户端和服务器示例
  • 一体化伺服电机在外观检测设备中的应用与优化
  • MyBatis详解
  • 面向对象学习(一)
  • 服务器地域选择指南:深度分析北京/上海/广州节点对网站速度的影响
  • Trice移植(Start with Trice)
  • 网站建设服务器从入门到上手
  • 层次聚类:无需“猜”K值,如何让数据自己画出“家族图谱”?
  • 31. 伪类和伪元素区别
  • PyTorch深度学习快速入门学习总结(四)
  • JS-第十九天-事件(一)
  • safari添加主屏及PWA启动方式
  • 玩转ChatGPT:寻找仪器用户手册
  • TEM在量子点发光材料领域的应用-测试GO
  • 汇川ITS7100E触摸屏交互界面开发(一)调试事项说明
  • BIFU币富探索合规新路径 助力用户玩转RWA
  • 两步走解决家庭路由器无法上网
  • Java 根据多个 MM-dd 日期计算总时长(包含当日和次日)
  • python PIL图片转base64字符串
  • [极客大挑战 2019]RCE ME
  • RockAI 的破壁之战:Yan 架构如何啃下“端侧炼丹”硬骨头?
  • Vue3 setup、ref和reactive函数
  • 元策联盈:深耕金融领域,赋能行业发展​
  • 【Flutter3.8x】flutter从入门到实战基础教程(四):自定义实现一个自增的StatefulWidget组件