LINK

考虑序列中一定是一段 0 0 0,然后一段 1 1 1,然后一段 0 0 0…

考虑单独拿出一段 1 1 1来观察它的移动

00111100 00111100 00111100

可以发现,一开始只能从第二个 1 1 1或者倒数第 2 2 2个 1 1 1往外面置换,于是可以得到

01101100 01101100 01101100或者 00110110 00110110 00110110

如果你想,现在你可以让 11 11 11以任意的方式排列

不为什么!!只因为它们是 11 11 11的形式,和 0 0 0置换后还是 11 11 11,所以可以一直往左或往右

然而当这段 1 1 1为奇数时,会留下一个 1 1 1,这个 1 1 1是不成组的,无法自由移动

最后这个单独的 1 1 1的位置取决于其他成组 11 11 11的移动

所以设序列中有 x x x组 11 11 11, y y y个 0 0 0

相当于 x + y x+y x+y个元素,其中 x x x个是 11 11 11,任意排列( 1 1 1是无所谓的, 11 11 11的排列决定了剩余 1 1 1的位置)

答案是 ( x + y x ) \binom{x+y}{x} (xx+y​)

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 998244353;
const int maxn = 3e5+10;
int n,f[109][109],fac[maxn];
char a[maxn];
int quick(int x,int n)
{int ans = 1;for( ; n ; n>>=1,x=x*x%mod )if( n&1 ) ans = ans*x%mod;return ans;
}
int C(int n,int m)
{if( m>n )   return 0ll;return fac[n]*quick( fac[m]*fac[n-m]%mod,mod-2 )%mod;
}
signed main()
{fac[0] = 1;for(int i=1;i<=200000;i++)  fac[i] = 1ll*fac[i-1]*i%mod;int t; cin >> t;while( t-- ){cin >> n >> ( a+1 );int x = 0, y = 0, zi = 0;a[n+1] = '0';for(int i=1;i<=n;i++){if( a[i]=='1' )  zi++;else {y++; x += zi/2;zi = 0;}}x += zi/2;cout << C( x+y,x ) << endl;}
}

1546 #732 (Div. 2) D. AquaMoon and Chess(组合数,规律)相关推荐

  1. Codeforces Round #732 (Div. 2) D. AquaMoon and Chess 组合数学 + 找规律

    传送门 文章目录 题意: 思路: 题意: 给你一个010101串,当且仅当某个111的某一边i+1,i−1i+1,i-1i+1,i−1有111,这个111可以跟i+2,i−2i+2,i-2i+2,i− ...

  2. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...

  3. Codeforces Round #732 (Div. 1Div. 2)

    Codeforces Round #732 (Div. 2) 题号 题目 知识点 A AquaMoon and Two Arrays 贪心 B AquaMoon and Stolen String 异 ...

  4. 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)

    J. Ceizenpok's formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. 组合计数 ---- 732 Div2 D. AquaMoon and Chess

    题目链接 题目大意: 就是给你一个1×n1\times n1×n的棋盘,上面初始状态下有若干个棋子,对于每个棋子有可以有两种移动的条件(假设第iii个位置上有一枚棋子) 棋子可以移动到i+2i+2i+ ...

  6. Codeforces 1546 D. AquaMoon and Chess —— 组合数学,一点点想法

    This way 题意: 给你一个01串s,你每次可以做一个操作如果s[i]=1: 1.如果i+2<=n且s[i+2]=0且s[i+1]=1,那么可以将s[i]的1移到s[i+2] 2.如果i- ...

  7. Codeforces Round #732 (Div. 2)

    C被叉了呜呜呜 A. AquaMoon and Two Arrays 题意 给一个可操作数组aaa和一个目标数组bbb,每次操作选aaa中两个元素,将其中一个−1-1−1,另一个+1+1+1. 但要保 ...

  8. Codeforces Round #327 (Div. 2) C Median Smoothing(找规律)

    分析: 三个01组合只有八种情况: 000 s 001 s 010 0 011 s 100 s 101 1 110 s 111 s 可以看出只有010,101是不稳定的.其他都是稳定的,且连续地出现了 ...

  9. Codeforces Round #439 (Div. 2) C.The Intriguing Obsession(组合数、记忆化搜索)

    题意: 给出a个红色点,b个蓝色点,c个紫色点,我们可以在这些点之间连任意数量长度为1的边,但是限制同颜色的点之间不能连边且同颜色的点之间的最短路径至少为3,求方案数% 998244353, a,b, ...

最新文章

  1. LeetCode 102. Binary Tree Level Order Traversal
  2. 胡玥的侦探小说《做局》及自传《时间之夜》
  3. 电脑技巧:如何解决99%的电脑防弹窗广告?
  4. 安卓逆向_3 --- 篡改apk名称和图标、修改包名实现应用分身、修改资源去广告、去除re管理器广告
  5. 简述python的安装过程_python3+ selenium3开发环境搭建-手把手教你安装python(详细)...
  6. foreach 和 map_每个开发人员都应该知道的forEach()和map()之间的差异
  7. echarts 按需引入模_【React】react项目引入echarts插件
  8. 百度媒体云播放器cyberplayer支持M3U8格式的HTML5播放器
  9. hpsocket错误码对照表
  10. 环洋市场调研-2021年全球Camlock联轴器行业调研及趋势分析报告
  11. html5 ios 键盘挡住输入框,IOS 键盘挡住输入框的问题解决办法
  12. 如何检验有调节的中介作用?
  13. 清默网络——我的CCIE考试经验与心得(2)
  14. oracle 删除主键级联删除唯一索引
  15. spring配置文件中引入其他的配置文件
  16. 爱剪辑 v3.0.0.2000
  17. 语音识别三年研究感想
  18. ug建模减速器_UG做一级减速器设计方法,毕业设计不用愁啦!
  19. plsql登录进去的时候,有个弹窗,但是我勾选了,下次不再显示,但是我又想让他弹出了,怎么恢复?
  20. Django 版本和 Python 版本的对照关系

热门文章

  1. 基于ssm线上花店管理系统获取(java毕业设计)
  2. linux软AP实现,hostapd+dhcpd+dnsmasq
  3. 守护星星天使,伴儿行公益十年的坚持
  4. CSCD(中国科学引文数据库)介绍
  5. UG/NX 二次开发(C#) 程序自动切换制图模式
  6. 我在软件园二期的小花园捡起了一片树叶
  7. 【Python】抓取电影海报并下载
  8. 计算机系统的组成与组装,电脑组装之硬件组成
  9. mysql 8.0.11 中使用 grant ... identified by 时 error 1064 near 'identified by '密码'' at line 1
  10. 485通讯的校验和_电气人必知!三菱PLC控制变频器的通讯方法