首页 > 其他分享 >小红的连续段

小红的连续段

时间:2024-02-05 22:35:40浏览次数:19  
标签:... return res ll 小红 连续 fact mod

引言

题目链接:https://ac.nowcoder.com/acm/contest/74362/F

思路

若要组成多个连续段,其一定是 a 和 b 交替出现的

即要组成 3 个连续段,一定是:

a ... b ... a ... 或者 b ... a ... b ...

所以要划分时,要分成 a 在最前面和 b 在最前面的情况。

假设要给 a 分为 k 段且 a 的数量为 x,则可以在 x - 1 个空隙里插 k - 1 个 “板”,将其分为 k 段。

所以只需要枚举,之后分为 a 在前和 b 在前的情况,分别求其组合数即可。

代码

#include <bits/stdc++.h>
#define ll long long
#define N 3000

ll fact[N];
const ll mod = 1e9 + 7;

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

ll inv(ll x) {
    return qmi(x, mod - 2);
}

ll C(int m, int n) {
    if(n - m < 0 || n < 0) return 0;
    return fact[n] * inv(fact[m]) % mod * inv(fact[n - m]) % mod;
}

int main() {
    fact[0] = 1;
    for (ll i = 1 ; i < N ; i ++ ) {
        fact[i] = fact[i - 1] * i % mod;
    }
    
    
    ll x,y;
    std::cin >> x >> y;
    for (ll i = 1 ; i <= x + y ; i ++ ) {
        int odd = (i + 1) / 2, even = i / 2;
        ll ans = C(odd - 1, x - 1) % mod * C(even - 1, y - 1) % mod;
        ans += C(odd - 1, y - 1)  % mod * C(even - 1, x - 1) % mod;
        ans %= mod;
        
        std::cout << ans << '\n';
    }
    return 0;
}

标签:...,return,res,ll,小红,连续,fact,mod
From: https://www.cnblogs.com/NachoNeko/p/18008926

相关文章

  • unity中,连续路径上的点排序
    1///<summary>2///路径点排序3///</summary>4///<paramname="start">路径起点</param>5///<paramname="input">路径上所有的点</param>6///<paramnam......
  • Java调用ChatGPT(基于SpringBoot和Vue)实现连续对话、流式输出和自定义baseUrl
     源码及更详细的介绍说明参见Git上的README.md文档https://github.com/asleepyfish/chatgpt本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:https://github.com/asleepyfish/chatgpt-demo流式输出结合Vue前端的Demo的Git地址:https://github.com/asleepyfish/chatg......
  • Bug记录 ontriggerstay2d 碰撞体中连续执行两次
    Bug描述ontriggerstay2d碰撞体中连续执行两次出现场景在OnTriggerStay2D中进行判定,按下指定按键(或判断需要执行单次逻辑的控制器)时,判定成功后执行两次或更多。问题分析1.多个碰撞器进入判定区域可能进入判定区域的物体上挂载多种碰撞器,导致在判定成功后,执行多次后续逻辑。......
  • 最大连续1的个数
    485.MaxConsecutiveOnes(Easy)给定一个二进制数组,计算其中最大连续1的个数。示例1:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续1,所以最大连续1的个数是3.注意:输入的数组只包含0和1。输入数组的长度是正整数,且不超过10,000。publicint......
  • 《kimi记账》连续订阅服务协议
    更新时间:2024年1月2号感谢您申请使用kimi记账为您提供的自动续费委托扣款服务(以下简称为“本服务”),请您仔细阅读并同意《kimi记账会员自动续费服务协议》(以下简称为“本协议”)的各项条款为准。如您不同意本协议的全部或部分内容,请勿以任何确认的形式(包括但不限于:勾选、点击)选择“......
  • 小红书被限流的十大原因,该怎么解决?
    1.笔记中出现引流内容:如果笔记中出现了二薇码、薇心号、或者其它平台的引流信息,那么很大程度被系统判定为广告、站外引流,从而被限流。2.私信引流:及其不推荐,如果在私信中出现引流信息,系统很容易识别到,一旦核实无误,将对其账号进行禁言处理,严重还会限流或者封号。3.频繁删除或者隐藏笔......
  • 通达信【掘金红筹】全套公式 共29个指标 暴利到极致 底部连续涨停 捉妖抄底指标 源码
    通达信【掘金红筹】全套公式底部连续涨停捉妖抄底指标黑马启动源码文件分享指标包括主图附图选股指标在内,一共29个指标标准启动:股票启动连续涨停的第一日,发出‘标准启动信号强力启动:标准信号发出信号偏多,强力启动会进行筛选和屏蔽超级启动:标准启动信号多,强力启动信号少,超......
  • 小红书如何做混部?
    作者:宋泽辉(小红书)、张佐玮(阿里云)编者按:Koordinator是一个开源项目,是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生,是行业首个生产可用、面向大规模场景的开源混部系统,致力于提升应用服务质量,优化资源使用效率。自2022年4月正式开源以来,吸引了业界众多优秀工程师的贡......
  • sqlmap过滤连续空格的方法
    一、指定脚本tamper=space2comment是SQLMAP的一个参数,用于指定使用space2comment.py脚本进行注入测试时的数据处理方式。具体来说,space2comment.py脚本的作用是将SQLMAP检测目标时所使用的payload中的空格全部替换成注释。通过使用这个参数,可以增加注入测试的成功率。范例:<<引用:–......
  • 连续四次登顶!天翼云稳居中国专属云服务市场第一
     近日,国际数据公司IDC发布的《中国专属云服务市场(2023上半年)跟踪》报告显示,2023上半年,专属云服务市场同比增长26.6%。中国电信天翼云以18.7%的份额占比稳居中国专属云服务市场第一,连续四次登顶,持续领跑中国专属云服务市场。 全面数字化浪潮推动下,随着合规要求的趋严、敏捷性......