【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. 解决Win10用户VS Code的C/C++更新到1.6.0后无法调试的问题

    今天突然遇到一个问题 Win10上 vscode C++突然无法正常调试 在运行调试后 编译成功后没有任何提示 直接就停止了 没有错误 不运行程序 尝试重新写一遍launch.json 自动生成lau ...

  2. Java代码操作zookeeper

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

  3. DVWA靶场之XSS(Stored)通关

    Low: <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage ...

  4. 003 TCP/IP协议详解(二)

    一.ping ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分.利用"ping"命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障. 例如:当我们某一 ...

  5. Ajax 局部刷新 异步提交

    AJAX简介 局部刷新,异步提交. AJAX 不是新的编程语言,而是一种使用现有标准的新方法.它最大的有点就是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容. 浏览器朝后端发送请 ...

  6. 数据结构与算法-排序(十)桶排序(Bucket Sort)

    摘要 桶排序和基数排序类似,相当于基数排序的另外一种逻辑.它是将取值范围当做创建桶的数量,桶的长度就是序列的大小.通过处理比较元素的数值,把元素放在桶的特定位置,然后遍历桶,就可以得到有序的序列. 逻 ...

  7. vs2019编写c++的静态链接库并自己使用

    参考网址:https://blog.csdn.net/flame333/article/details/108346305 静态链接库1.新建一个静态库项目,其中有两个头文件,两个源文件 其中比较重要 ...

  8. C# 多线程刷新UI

    2.利用委托调用--最常见的办法(仅WinForm有效)   using System; using System.Threading; using System.Windows.Forms; nam ...

  9. vue + iview 怎样在vue项目下添加ESLint

    参考:https://segmentfault.com/a/1190000012019019?utm_source=tag-newest 使用iview框架的MenuGroup标签,vscode报红, ...

  10. C#基础知识---迭代器与Foreach语句

    一.Foreach语句简介 在C# 1.0中我们经常使用foreach来遍历一个集合中的元素,然而如果一个集合要支持使用foreach语句来进行遍历,这个集合一般需要IEnumerable或IEnum ...