【G. One-Dimensional Puzzle (组合数学+逆元)

news2024/9/20 20:22:04

解析:

本体是进行分类讨论这么才使全部的拼图用完,且可以合成多个种类。

列举其所有可以拼成的方法个数:

第一种:3 3 3 3 

第二种: 4 4 4 4 

第三种:1 2 1 2

第四种:1 3 3 2

第五种:2 4 4 1

对于第一种第二种3的个数和4个个数在不考虑的情况下。

只靠路1 2 的个数即可。

当 1 和2 相差个数超过 1时,答案为 0;

我们可以 当1 比 2 大一个时,有 a个1 c个 2 时,有 a个位置可以放3个,a个 位置可以放 4的

当时a为位置有区别的,但是放进去的3没有区别的。

往a个有区别的盒子当中放入c个无区别的小球。

使用a-1个隔板,进行隔开,刚好就是 a个位置 。

等价于 先在每个盒子中放入 n个小球,后面在取出来。
n+m小球 有 n+m-1个空隙。

l理论知识:

求组合数模板:

求逆元:

剩下的就是组合数学公式:

代码:

https://www.luogu.com.cn/problem/P1709
    #include <iostream>
    #include <vector>
    #include <set>
    #include <queue>
    #include <algorithm>
     
    using namespace std;
     
    typedef long long ll;
     
    const int mod = 998244353;
     
    ll pow_mod(ll x, ll p) { // 逆元 
        if (p == 0) {
            return 1;
        }
        if (p % 2 == 0) {
            ll y = pow_mod(x, p / 2);
            return (y * y) % mod;
        }
        return (x * pow_mod(x, p - 1)) % mod;
    }
     
    ll inv(ll x) { //直接求逆元 mod - 2 
        return pow_mod(x, mod - 2); //x == x^p-2(mod p)
    }
     
    vector<ll> fact = {1};
     
    ll cnk(ll n, ll k) {
        ll res = fact[n];
        res = (res * inv(fact[k])) % mod;
        res = (res * inv(fact[n - k])) % mod;
        return res;
    }
     
    ll calc(int n1, int n2, int n3, int n4) {
        return (cnk(n1 + n3 - 1, n3) * cnk(n2 + n4 - 1, n4)) % mod;
    }
     
    void solve() {
        int n1, n2, n3, n4;
        cin >> n1 >> n2 >> n3 >> n4;
        if (n1 + n2 == 0) {
            cout << (n3 == 0 || n4 == 0 ? 1 : 0) << '\n';
            return;
        }
        if (abs(n1 - n2) > 1) {
            cout << "0\n";
            return;
        }
        ll res = 0;
        if (n1 <= n2) { // n1 <= n2  
            res += calc(n1 + 1, n2, n3, n4);
        }
        if (n2 <= n1) {
            res += calc(n1, n2 + 1, n3, n4);
        }
        cout << res % mod << '\n';
    }
     
    int main() {
        for (ll i = 1; i <= 4e6; ++i) {
            fact.push_back((fact.back() * i) % mod);
        }
        int t;
        cin >> t;
        for (int _ = 0; _ < t; ++_) {
            solve();
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1527939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新品上线 | NoV病毒抗原抗体系列,助力疫苗相关研究!

背景介绍 诺如病毒&#xff08;norovirus&#xff0c;NoV&#xff09;&#xff0c;又名诺瓦克病毒&#xff08;norwalk viruses&#xff0c;NV&#xff09;&#xff0c;是一种单链正义RNA病毒&#xff0c;引发急性胃肠炎&#xff08;AGE&#xff09;的主要原因之一。病症常伴随…

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

自己录的视频怎么配上字幕?推荐几种方法

自己录的视频怎么配上字幕&#xff1f;在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要形式。而对于许多内容创作者来说&#xff0c;为自己的视频添加字幕不仅能提升观众的观看体验&#xff0c;还能增加视频的专业度和吸引力。那么&#xff0c;如何为自己的…

如何在Linux系统下创建共享文件?

首先共享文件一定不能在各用户的家目录下创建&#xff0c;因为各用户家目录通常都只对自己开放&#xff0c;其他用户没有权限进入目录&#xff0c;读写其中的文件。 因此&#xff0c;共享文件必须在非用户目录下创建&#xff0c;且需要将other的权限全部放开。例如&#xff0c;…

Springboot整合支付宝沙箱支付

2.配置说明 要记住这几个重要的配置 appId 这个是appIdprivateKey 商户私钥publicKey 支付宝公钥, 即对应APPID下的支付宝公钥notifyUrl 支付成功后异步回调地址(注意是必须是公网地址)returnUrl #支付后回调地址signType 签名类型 一般写 RSA2charset utf-8format json #网关…

PHP+MySQL开发组合:多端多商户DIY商城源码系统 带完整的搭建教程以及安装代码包

近年来&#xff0c;电商行业的迅猛发展&#xff0c;越来越多的商户开始寻求搭建自己的在线商城。然而&#xff0c;传统的商城系统往往功能单一&#xff0c;无法满足商户个性化、多样化的需求。同时&#xff0c;搭建一个功能完善的商城系统需要专业的技术团队和大量的时间成本&a…

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署

简介 随着数字人物概念的兴起和生成技术的不断发展&#xff0c;将照片中的人物与音频输入进行同步变得越来越容易。然而&#xff0c;目前仍存在一些问题&#xff0c;比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题&#xff0c;来自西安…

华为OD七日集训第3期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、七日集训第 3 期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、字符串处理第3天、矩阵第4天、深度优先搜索dfs算法第5天、回溯法第6天、二分查找第7天、图、正则表达式 大家好&#xff0c;…

机器学习_正则化

文章目录 代价函数 如果我们有非常多的特征&#xff0c;我们通过学习得到的假设可能能够非常好地适应训练集&#xff08;代价函数可能几乎为 0&#xff09;&#xff0c;但是可能会不能推广到新的数据。 下图是一个回归问题的例子&#xff1a; 第一个模型是一个线性模型&#xf…

AGI之Humanoid Robot:Figure 01的介绍、核心技术、功能、应用案例之详细攻略

AGI之Humanoid Robot&#xff1a;Figure 01的介绍、核心技术、功能、应用案例之详细攻略 目录 Figure 01的介绍 1、特点 2、应用场景 Figure 01的主要功能 Figure 01的应用案例 1、传递苹果 2、搬箱子 3、拿盘子 Figure 01的介绍 2024年3月13日&#xff0c;Figure 01是…

.htaccess全站设置SSL,wordpress全站设置SSL,网站重定向的次数过多”错误最佳解决方法教程

.htaccess全站设置SSL,wordpress全站设置SSL&#xff0c;网站重定向的次数过多”错误最佳解决方法教程 网上找了很多教程网无效**.htacces**设置&#xff0c;访问后台出现重定向次数过多&#xff0c;导致无法访问 找了好久&#xff0c;测试用AI机器人无法解决&#xff0c;参考…

Java 认识异常

登神长阶 第五阶 认识异常 &#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f340;&#x1f…

GPT-SoVITS语音合成服务器部署,可远程访问(全部代码和详细部署步骤)

GPT-SoVITS 是一个开源项目&#xff0c;它使用大约一分钟的语音数据便可以训练出一个优秀的TTS模型。 项目的核心技术是 Zero-shot TTS 和 Few-shot TTS。 Zero-shot TTS 可以让用户输入5秒钟的语音样本并立即体验转换后的语音&#xff0c;而 Few-shot TTS 则可以通过使用仅一…

IntelliJ IDEA 设置运行时环境变量

背景 博主要测试langchain4j&#xff0c;运行时需要OPENAI_BASE_URL和OPENAI_API_KEY这两个环境变量的值。 临时设置 Run -> Edit Configurations -> Edit Environmental Variables 永久设置 在系统环境变量中设置&#xff0c;教程无数。 注意&#xff1a;windows在…

MySql安装与卸载—我耀学IT

1.MySql安装 打开下载的mysql安装文件mysql-5.5.27-win32.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe”。 选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;用户自定义&…

软件版本号讲解:什么是Alpha, Beta, RC

1. 软件版本阶段说明 Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主&#xff0c;通常只在软件开发者内部交流&#xff0c;一般而言&#xff0c;该版本软件的Bug较多&#xff0c;需要继续修改。Beta版: 该版本相对于α版已有了很大的改进&#xff0c;消除了严重的…

easyexcel读和写excel

请直接看原文: JAVA使用easyexcel操作Excel-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 之前写过一篇《JAVA操作Excel》&#xff0c;介绍了jxl和poi读写Excel的实现&am…

LiveGBS流媒体平台GB/T28181功能-大屏播放上大屏支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放轮播

LiveGBS支持-大屏播放上大屏支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放轮播 1、轮播功能2、分屏展示3、选择轮播通道4、配置轮播间隔(秒)5、点击开始轮播6、轮播停止及全屏7、搭建GB28181视频直播平台 1、轮播功能 视频监控项目使用过程中&#xff0c;有时需要大屏…

基于Matlab的视频人面检测识别,Matalb实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

CTF题型 Http请求走私总结Burp靶场例题

CTF题型 Http请求走私总结&靶场例题 文章目录 CTF题型 Http请求走私总结&靶场例题HTTP请求走私HTTP请求走私漏洞原理分析为什么用前端服务器漏洞原理界定标准界定长度 重要!!!实验环境前提POST数据包结构必要结构快速判断Http请求走私类型时间延迟CL-TETE-CL 练习例题C…