【AGC025B】RGB Color

题面描述

Link to Atcoder

Link to Luogu

Takahashi has a tower which is divided into \(N\) layers. Initially, all the layers are uncolored. Takahashi is going to paint some of the layers in red, green or blue to make a beautiful tower. He defines the beauty of the tower as follows:

The beauty of the tower is the sum of the scores of the \(N\) layers, where the score of a layer is \(A\) if the layer is painted red, \(A+B\) if the layer is painted green, \(B\) if the layer is painted blue, and 0 if the layer is uncolored.

Here, \(A\) and \(B\) are positive integer constants given beforehand. Also note that a layer may not be painted in two or more colors.

Takahashi is planning to paint the tower so that the beauty of the tower becomes exactly \(K\). How many such ways are there to paint the tower? Find the count modulo 998244353. Two ways to paint the tower are considered different when there exists a layer that is painted in different colors, or a layer that is painted in some color in one of the ways and not in the other.

翻译

你有 \(n\) 个格子排成一排,每个格子可以涂成红、蓝、绿或不涂色,得分分别为 \(A\) , \(B\) , \(A + B\) , \(0\) 。求使总得分为 \(K\) 的方案数,答案对 \(998244353\) 取模

思路

其实感觉主要是翻译的锅导致大家做不出来。

注意到题面中的信息 A+B if the layer is painted green

为什么用 \(A+B\) ?

因为绿色是红色加蓝色。

这提示了我们将绿色看为红色和蓝色都填。

那么题意就变成了 \(n\) 个格子,每个格子填红、蓝或者都填或者都都不填。

那么我们就可以用组合数随便算了。

枚举红色填的个数(包含两种颜色都填),可以直接算出蓝色的个数。

\(\tbinom{n}{cnt} * \tbinom{n}{\frac{k - cnt * a}{b}}\)

代码

/*
* @Copyright: Copyright 2021 昕橘玥
* @Powered: Powered by .NET 5.0 on Kubernetes
* @Author: JuyueXin.
* @Date: 2021-09-17 18:20:28
* @Email: 8950466@qq.com
* @Last Modified by: JuyueXin.
* @Last Modified time: 2021-09-17 18:57:07
*/ #include <bits/stdc++.h> using namespace std; #define int long long int read(int x = 0, bool f = false, char ch = getchar()) {
for (; !isdigit(ch); ch = getchar()) f |= (ch == '-');
for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
return f ? ~x + 1 : x;
} const int mod = 998244353, N = 3e5 + 5; int n, m, ans, A, B;
int fac[N], inv[N]; int qpow(int x, int y) {
int ans = 1;
for (; y; y >>= 1, x = (1ll * x * x) % mod) if (y & 1) ans = (1ll * ans * x) % mod;
return ans;
} int C(int x, int y) {
if (x < y) return 0;
return 1ll * fac[x] * inv[y] % mod * inv[x - y] % mod;
} signed main() {
n = read(), A = read(), B = read(), m = read(); fac[0] = 1;
for (int i = 1; i <= n; ++i) fac[i] = (1ll * fac[i - 1] * i) % mod;
inv[n] = qpow(fac[n], mod - 2);
for (int i = n - 1; ~i; --i) inv[i] = (1ll * inv[i + 1] * (i + 1)) % mod;
for (int i = 0; i <= n; ++i) {
if (m < i * A) break;
if (!((m - i * A) % B)) ans = (1ll * ans + 1ll * C(n, i) * C(n, (m - i * A) / B) % mod) % mod;
} return printf("%lld\n", ans), 0;
}

【AGC025B】RGB Color的更多相关文章

  1. 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)

    [C#]RGB,CMYK,HSB各种颜色表示的转换   一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...

  2. 【arc074e】RGB Sequence(动态规划)

    [arc074e]RGB Sequence(动态规划) 题面 atcoder 洛谷 翻译见洛谷 题解 直接考虑暴力\(dp\),设\(f[i][j][k][l]\)表示当前考虑到第\(i\)位,最后一 ...

  3. T89353 【BIO】RGB三角形

    T89353 [BIO]RGB三角形 题解 对于这个题目有一个规律:  如果一个数列的长度为 3k+1(0<=k) 那么,这个数列最终缩放成的一个字母只和这个数列的首项,尾项有关 所以我们可以先 ...

  4. 【VS开发】【图像处理】RGB Bayer Color分析

    RGB Bayer Color分析 Bayer色彩滤波阵列 拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式.色彩滤波器的模式如上图所示, ...

  5. 【图像处理】RGB Bayer Color分析

    Bayer色彩滤波阵列 拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式.色彩滤波器的模式如上图所示,由一半的G,1/4的R,1/4的B组 ...

  6. 【CSS】Beginner3:Color

    1.red rgb(255,0,0) rgb(100%,0%,0%) #ff0000 #f00 2.Predefined color name aqua, black, blue, fuchsia, ...

  7. 【python】RGB图片到灰度图的转换

    在做立体匹配求深度图的时候遇到这个问题,用惯了matlab的rgb2gray,倒是不熟悉python的实现,在网上找到了相关方案,记下来已作备用 RGB到灰度图转换公式: Y' = 0.299 R + ...

  8. 【iOS】Web Color 的 Swift 实现

    用Swift语言重写Web Color这个类. 这次是用函数实现的,感觉也非常简洁.眼下(2014.6.28) Xcode 6的方法提示还不健全,就仅仅实现了用颜色名字创建颜色的功能. 最新代码&am ...

  9. 【转】 RGB各种格式

      转自:https://blog.csdn.net/LG1259156776/article/details/52006457?locationNum=10&fps=1 RGB组合格式 名字 ...

随机推荐

  1. 第2篇-JVM虚拟机这样来调用Java主类的main()方法

    在前一篇 第1篇-关于JVM运行时,开篇说的简单些 中介绍了call_static().call_virtual()等函数的作用,这些函数会调用JavaCalls::call()函数.我们看Java类 ...

  2. Linux命令(五)之service服务查找、启动/停止等相关操作

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  3. Build a ZenTao Server on Linux

    Download xampp for linux on Apache Friends, file name: xampp-linux-1.8.3-2-installer.run; Intallatio ...

  4. 用Autohotkey让Kitty命令行变得更好用

    下面的脚本实现Win+K键激活一个输入框,给出了kitty命令行常用的几种格式,基本可分为两种:连接保存好的模板(session)和完全手工连接,前者用-load加Session名称,后者需要在命令行 ...

  5. 页面模型 PageModel

    Razor页面中的程序处理方法 OnGet 和 OnGetAsync是同样的处理程序,因此不能共存,否则会报错. 视图数据 ViewData 视图数据是从页面模型向内容页面传递数据的容器.视图数据是以 ...

  6. 在java程序中使用protobuf

    目录 简介 为什么使用protobuf 定义.proto文件 编译协议文件 详解生成的文件 Builders 和 Messages 序列化和反序列化 协议扩展 总结 简介 Protocol Buffe ...

  7. Python 读写文件的正确方式

    当你用 Python 写程序时,不论是简单的脚本,还是复杂的大型项目,其中最常见的操作就是读写文件.不管是简单的文本文件.繁杂的日志文件,还是分析图片等媒体文件中的字节数据,都需要用到 Python ...

  8. 数字化转型:敏捷和DevOps如何降低风险,提高速度

    进行数字化转型就意味着团队需要应对经常发生冲突的挑战--例如,要应对在复杂的相互依赖环境中快速变化的需求.对软件开发人员来说,这是一个熟悉的困境. 如果使用传统的瀑布方法来应对这些挑战,就会发现,在线 ...

  9. 将JDK默认编码设置为UTF-8

    此博文非原创:参考小兵qwer   https://blog.csdn.net/xiaobing_122613/article/details/70209716 只是想留下对自己有用的东西,同时帮助更 ...

  10. Mysql5.6.47开放远程访问(修改远程访问密码)

    1.登录mysql mysql -u root -p 然后输入密码,登录进去mysql: 2.切换数据库 use mysql; 3.修改权限 GRANT ALL PRIVILEGES ON *.* T ...