首页 > 其他分享 >Yet Another RGB Sequence(排列组合)

Yet Another RGB Sequence(排列组合)

时间:2022-09-02 21:45:25浏览次数:74  
标签:res ll RGB RG Another infac fac Yet mod

题意

问有多少字符串满足如下要求:

  • 只包含RGB三种字符,并且数量分别是\(A\),\(B\),\(C\)。
  • 包含\(K\)个连续子串RG

题目链接:https://atcoder.jp/contests/abc266/tasks/abc266_g

数据范围

\(1 \leq A,B,C \leq 10^6\)

思路

我们将题目转化一下,有\(A+B+C\)个位置上要放RGB三种字符。其中RG有\(K\)个,R有\(A-K\)个,G有\(B-K\)个,B有\(C\)个。

我们可以将RG当做是一个字符,因此唯一的限制就在于除了RG之外的其他RG

因此,我们可以将RGRB随便放,方案数是\(\frac{(K + (A - K) + C)!}{K!(A-K)!C!}\)。

然后考虑放G。本来有\(K + (A - K) + C + 1\)个位置,但是由于不能放在R的后面,因此实际可以放的位置为\(K + C + 1\)个。

这样就转化成了一个不定方程解的个数问题,方案数为\(\binom{(B-K) + (K + C + 1) - 1}{(K +C+1)-1} = \binom{B+C}{C+K}\)

因此最终结果为\(\frac{(A + C)!}{K!(A-K)!C!} \cdot \binom{B+C}{C+K}\)

代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long ll;

const int N = 2000010, mod = 998244353;

ll a, b, c, k;
ll fac[N], infac[N];

ll qmi(ll a, ll b)
{
    ll res = 1;
    while(b) {
        if(b & 1) res = res * a % mod;
        b >>= 1;
        a = a * a % mod;
    }
    return res;
}

void init()
{
    fac[0] = infac[0] = 1;
    for(int i = 1; i < N; i ++) {
        fac[i] = fac[i - 1] * i % mod;
        infac[i] = infac[i - 1] * qmi(i, mod - 2) % mod;
    }
}

int main()
{
    cin >> a >> b >> c >> k;
    init();
    ll res = fac[a + c] * infac[a - k] % mod * infac[c] % mod * infac[k] % mod;
    res = res * fac[b + c] % mod * infac[c + k] % mod * infac[b - k] % mod;
    cout << res << endl;
    return 0;
}

标签:res,ll,RGB,RG,Another,infac,fac,Yet,mod
From: https://www.cnblogs.com/miraclepbc/p/16651314.html

相关文章

  • Basler相机Bayer格式转Qt RGB888
    无论什么品牌的相机,Bayer转RGB都涉及到插值,因此建议使用官方SDK里的函数进行转换。针对Basler相机,代码如下:voidBaslerCamera::toQImage(CGrabResultPtrptrGrabResult,......
  • 莫兰迪色系色卡RGB对照表
    【转】莫兰迪色系色卡RGB对照表莫兰迪色系,广义上是指饱和度低、带有灰调的颜色系列,大家也常把它称为“高级灰”。近年流行的雾蓝、烟粉、豆绿、冷咖等,都是由莫兰迪色系所......
  • CF1114F Please, another Queries on Array?
    CF1114FPlease,anotherQueriesonArray?题目大意你有一个数组\(a_1,a_2,\dots,a_n\)。现在你需要完成\(q\)次操作,有以下两种操作形式:MULTIPLYlrx,对于所有\(i(......
  • rgba转化为未调整的16进制
    根据之前的讲解也就是这篇:https://www.cnblogs.com/heibaiqi/p/16612375.html,了解到16进制和rgba的关系,但是我碰到rgba转化为未调整的16进制时,居然搜不到,就一个简简单单的......
  • 16进制和rgba之间的联系
    对于大部分前端用户这两个内容咱们都了解,rgba 最后的a设置透明度,但是通过16进制设置透明度咱们并不是常用,但是不影响设置,比如网易云的红色为:#E20000如果不用rbga咱们之......
  • rancher-webhook x509: certificate has expired or is not yet valid 操作解决
    1、问题原因,在rancher上的一个集群上添加用户失败,错误码:错误码Internalerroroccurred:failedcallingwebhook"rancherauth.cattle.io":Post"https://rancher-web......
  • [Google] LeetCode 2096 Step-By-Step Directions From a Binary Tree Node to Anothe
    Youaregiventherootofabinarytreewithnnodes.Eachnodeisuniquelyassignedavaluefrom1ton.YouarealsogivenanintegerstartValuerepresenting......
  • CF1196D2 RGB Substring (hard version)
    https://www.luogu.com.cn/problem/CF1196D2前缀和黄色题思路:看当前输入要被修改的这个字符串的第i位,是否与'R','G','B'三个中的一个相等,不相等的另外两个则增加一次修......
  • RGB转YUV
    根据前面YCbCr转RGB章节,可以知道YUV与RGB互转的公式。这里不再赘述,直接上RGB转YUV的代码。RGB2YUV.v1//*************************************************......
  • AGC058D Yet Another ABC String
    link由于限制是循环的考虑用连续段容斥。直接容斥的做法是枚举一组限制,并带上\((-1)^c\)的系数:某些相邻的三个数必须\(\in123,231,312\),相交的限制会互相影响得到连......