当前位置: 首页 > news >正文

AquaMoon and Chess_CodeForces - 1545B

由110变成011,由011变成110,“11”的组合和0可以交换位置

如果是1110 或者是 1110 的情况,红色的“11”与0换位置,变成1011,可以看成蓝色的“11”到了0的后面,蓝色“11”和0的相对位置改变了,而第三个“1”是被动的,他起到了完成蓝色“11”和0换相对位置的桥梁的作用

因此,单独的“1”起到了交换“11”和“0”的桥梁作用,其自身是被动的

比如1100010,等到“11”换到这个情况:0001110 的时候,红色的1让“11”可以与最后一个0交换相对位置

那结果就是C(a+b,a) a是"11"组合的个数,b是0的个数

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;

const ll maxn=1e5+5,N=1e5,mod=998244353;
ll fact[maxn],inv[maxn],vis[maxn];

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

ll com(ll n,ll m){
    if(m>n || m<0) return 0;
    if(n==m || m==0) return 1;
    ll ans=fact[n]*inv[m]%mod*inv[n-m]%mod;
    return ans;
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);
    freopen("D:\\in.txt","r",stdin);

    //预处理1到1e5的阶乘和逆元
    fact[0]=1;
    for(ll i=1;i<=N;i++){
        fact[i]=fact[i-1]*i%mod;
        inv[i]=bin_pow(fact[i],mod-2);
    }

    ll kase=0;
    ll T;cin>>T;
    while(T--){
        kase++;
        ll n;cin>>n;
        string s;cin>>s;
        ll a=0,b=0;
        for(ll i=0;i<s.size();i++){
            if(s[i]=='0') a++;
            else if(s[i]=='1' && i>0) {
                if(s[i-1]=='1' && vis[i-1]!=kase){
                    vis[i]=vis[i-1]=kase;
                    b++;
                }
            }
        }
        //printf("a=%lld b=%lld\n",a,b);
        cout<<com(a+b,a)<<"\n";
    }
    return 0;
}

http://www.dtcms.com/a/107825.html

相关文章:

  • AI前沿:资本狂潮下的技术暗战:巨头博弈、开源革命与生态重构
  • Java项目之基于ssm的简易版营业厅宽带系统(源码+文档)
  • Ubuntu 使用apt安装MySQL后的升级方法
  • Share02-小小脚本大大能量
  • 【面试篇】多线程
  • RTX5080 安装torch,torchvision ,torchaudio 指南
  • 全功能在线WEB工具箱PHP源码
  • 3. 线程间共享数据
  • 跨网文件安全交换系统|国产信创认证+安全高效传输
  • 2025-4-2 蓝桥杯刷题情况(分布式队列)
  • 智能觉醒:四大AI Agent框架重构未来生产力
  • 简单描述一下Unity物理系统的主要性能消耗点
  • 【高项】信息系统项目管理师(十五)高级项目管理【4分】
  • RocketMq 5.0之后延时消息底层是怎么实现的?
  • C++(匿名函数+继承+多态)
  • MySQL GROUP BY 和 HAVING 子句中 ‘Unknown column‘ 错误的深入解析
  • 详细介绍一下C++的按位运算
  • Tinder上线《The Game Game》
  • mapreduce工作原理
  • 论文阅读10——解开碳排放与碳足迹之间的关系:文献回顾和可持续交通框架
  • TCP四次挥手
  • 《K230 从熟悉到...》颜色识别
  • 归并排序延伸-非递归版本
  • 基于yolo11的BGA图像目标检测
  • Ubuntu18.04 编译 Android7.1代码报错
  • 使用numpy读取数据集
  • Ubuntu Wayland启动腾讯会议并实现原生屏幕共享
  • JS—页面渲染:1分钟掌握页面渲染过程
  • C语言实现排序
  • spring-ai-alibaba第六章阿里dashscope集成mcp百度翻译tools