[ABC266G] Yet Another RGB Sequence
Problem Statement
You are given integers $R$, $G$, $B$, and $K$. How many strings $S$ consisting of R, G, and B satisfy all of the conditions below? Find the count modulo $998244353$.
- The number of occurrences of
R,G, andBin $S$ are $R$, $G$, and $B$, respectively. - The number of occurrences of
RGas (contiguous) substrings in $S$ is $K$.
Constraints
- $1 \leq R,G,B\leq 10^6$
- $0 \leq K \leq \mathrm{min}(R,G)$
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
$R$ $G$ $B$ $K$
Output
Print the answer.
Sample Input 1
2 1 1 1
Sample Output 1
6
The following six strings satisfy the conditions.
RRGBRGRBRGBRRBRGBRRGBRGR
Sample Input 2
1000000 1000000 1000000 1000000
Sample Output 2
80957240
Find the count modulo $998244353$.
这个数据范围一看就知道不好 dp,大概率是推式子。
恰好 \(k\) 个不好求,但是我们可以想到一个答案很接近的方法:将一个 RG 打包成一个数,然后让其参与排列。
按照上面这种方法,定义 \(f(i)\) 为如果有 \(i\) 个 RG,将其打包成一份后算出来的答案。易得 \(f(i)=C_{r+g+b-i}^{b}*C_{r+g-i}^{i}\)
如果定义 \(g(i)\) 为恰好有 \(i\) 个 RG 的方案数,那么考虑一个 \(f(i)\) 中算了几次 \(g(j)\),那么会发现对于一种方案中 \(j\) 个 RG,选出 \(i\) 个 RG 的方案都会被算一次。那么得到 \(f(i)=\sum\limits_{j=i}^{\infin}C_{j}^ig(j)\)
上二项式反演公式, \(g(i)=\sum\limits_{j=i}^{\infin}(-1)^{j-i}C_{j}^if(j)\)
那么这个问题就解决了。
#include<cstdio>
const int N=3e6+5,P=998244353;
int jc[N],r,g,b,k,n,ans,inv[N];
int pown(int x,int y)
{
if(!y)
return 1;
int t=pown(x,y>>1);
if(y&1)
return 1LL*t*t%P*x%P;
return 1LL*t*t%P;
}
int ct(int x,int y)
{
if(x<y)
return 0;
return 1LL*jc[x]*inv[y]%P*inv[x-y]%P;
}
int calc(int x)
{
n=r+g+b-x;
return 1LL*ct(n,b)%P*ct(n-b,x)%P*ct(n-b-x,r-x)%P;
}
int main()
{
scanf("%d%d%d%d",&r,&g,&b,&k),inv[0]=1;
for(int i=jc[0]=1;i<=r+g+b;i++)
jc[i]=1LL*jc[i-1]*i%P,inv[i]=pown(jc[i],P-2);
for(int i=k;i<=r&&i<=g;i++)
ans+=((i-k&1)? -1LL:1LL)*ct(x,k)*calc(i)%P,ans=(1LL*ans+P)%P;
printf("%d",ans);
}
[ABC266G] Yet Another RGB Sequence的更多相关文章
- 【arc074e】RGB Sequence(动态规划)
[arc074e]RGB Sequence(动态规划) 题面 atcoder 洛谷 翻译见洛谷 题解 直接考虑暴力\(dp\),设\(f[i][j][k][l]\)表示当前考虑到第\(i\)位,最后一 ...
- [Arc074E] RGB Sequence
[Arc074E] RGB Sequence Description 今天也在愉快地玩Minecraft!现在MM有一块1?N的空地,每个格子按照顺序标记为1到N.MM想要在这块空地上铺上红石块.绿宝 ...
- AtCoder - 2567 RGB Sequence
Problem Statement There are N squares arranged in a row. The squares are numbered 1, 2, …, N, from l ...
- AT2567-[ARC074C]RGB Sequence【dp】
正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ...
- AT2567 RGB Sequence dp
正解:计数dp 解题报告: 传送门! umm其实我jio得dp的题目的话就难在思想昂,,,知道状态知道转移就不难辣QAQ 所以就不说别的了直接写下思路放下代码就over辣QAQ 最基础的思想就是f[i ...
- [AT2567] [arc074_c] RGB Sequence
题目链接 AtCoder:https://arc074.contest.atcoder.jp/tasks/arc074_c 洛谷:https://www.luogu.org/problemnew/sh ...
- 【ARC074e】RGB sequence
Description 一排\(n\)个格子,每个格子可以涂三种颜色的一种.现在给出\(m\)个形如"\([l,r]\)中必须恰好有\(x\)种颜色"的限制(\(1 \le l ...
- 【arc074e】RGB Sequence dp
Description 丰泽爷今天也在愉快地玩Minecraft! 现在丰泽爷有一块1∗N1∗N的空地,每个格子按照顺序标记为11到NN.丰泽爷想要在这块空地上铺上红石块.绿宝石块和钻石块作为 ...
- ARC074 E RGB Sequence DP
---题面--- 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数.因为知道了三种颜色最后出现的位置,因此也可以得知以当 ...
- AtCoder Regular Contest 074 E:RGB Sequence
题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_c 题目翻译 给你一行\(n\)个格子,你需要给每个格子填红绿蓝三色之一,并且同时满足\(m\ ...
随机推荐
- 当 GPT-4 拥有了 Diff 视图,那真的是如虎添翼!
目录 1. 当你要求 GPT-4 帮你写点代码时 2. 你需要的背景知识都在这里 2.1 关于 GoPool 和 DevChat 2.2 关于 GoPool 的工作原理 2.3 我想要让 taskQu ...
- P8810 [蓝桥杯 2022 国 C] 数组个数 题解
思路比较简单的一道题. 用的五维 dp,看到二维和三维的 dp 直接膜了 orz. 正文开始. 分析 不难看出 dp. 因为 \(b_i\) 的值只与 \(a_{i-1},a_i,a_{i+1}\) ...
- 文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题
五.如果用go语言,当输入数据已经"几乎有序"时,插入排序速度很快.在实际应用中,我们可以利用这一特点来提高快速排序的速度.当对一个长度小于 k 的子数组调用快速排序时,让它不做任 ...
- 《HelloGitHub》第 89 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- HarmonyOS扫码服务,应用服务一扫直达打造系统级流量新入口
二维码如今是移动应用流量入口以及功能实现的重要工具,也是各App的流量入口,是物.人.服务的连接器,通过扫码我们可以更便捷的生活,更高效的进行信息交互,包括信息的发布.信息的获取. 在日常扫码过程中, ...
- Linux安装达梦数据库DM8
1.简介描述 DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新.简洁实用的理念,推出的新一代自研数据库.DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式.弹性 ...
- 「Tricks」整体DP
不太了解这个东西的具体定义是什么,总之应该是一个用数据结构维护 DP 状态的某几个维度的 trick 吧. 事实上你可以把这篇 post 理解为三个题的解集. 先直接来看 noi2020 - Dest ...
- git Failed to connect to 127.0.0.1 port xxxx: Connection refused 的问题。
问题描述在使用 git 拉取.提交代码的时候,会出现 git Failed to connect to 127.0.0.1 port xxxx: Connection refused 的问题. 原因: ...
- CalledFromWrongThreadException
更新UI的位置不正确,线程解析数据 handler. mssage 中更新 android.view.ViewRootImpl$CalledFromWrongThreadException: O ...
- 可视化-vscode使用Plotly,绘制直方图
Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图.散点图.饼图.直方图等等. 概述: plotly在python中绘图使用分三种:1.plotly.g ...