题面

题解

考虑到直接求合法方案不好求, 我们转化为用总方案减去不合法方案

总方案就是\(\binom{n+m}{m}\), 即在\(n+m\)个位置中放\(n\)个数

我们将初始的空序列看做\((0, 0)\), 选\(1\)代表\((+1,+1)\), 选\(0\)代表\((+1,-1)\)

那么不合法的方案就是经过\(y = -1\)的方案, 考虑如何转化

恩, 看到这张图片没, 在这条折线第一次经过\(y = -1\)时将其翻转

可以知道终点不变, 为\((n + m, n - m)\)

起点因为翻转变为\((0, -2)\)

则向右上走总操作次数变为\(n + 1\), 所以方案数是\(\binom{n+m}{n+1}\)

所以总方案数就是\(\binom{n+m}{n}-\binom{n+m}{n+1}\)

Code

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#define itn int
#define reaD read
#define mod 20100403
#define N 2000005
using namespace std; int n, m, jc[N]; inline int read()
{
int x = 0, w = 1; char c = getchar();
while(c < '0' || c > '9') { if (c == '-') w = -1; c = getchar(); }
while(c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); }
return x * w;
} int fpow(int x, int y)
{
int res = 1;
while(y)
{
if(y & 1) res = 1ll * res * x % mod;
x = 1ll * x * x % mod;
y >>= 1;
}
return res;
} int C(int n, int m)
{
int ans = jc[n];
ans = 1ll * ans * fpow(jc[m], mod - 2) % mod;
ans = 1ll * ans * fpow(jc[n - m], mod - 2) % mod;
return ans;
} int main()
{
n = read(); m = read();
for(int i = (jc[0] = 1); i <= n + m; i++) jc[i] = 1ll * jc[i - 1] * i % mod;
printf("%d\n", ((C(n + m, n) - C(n + m, n + 1)) % mod + mod) % mod);
return 0;
}

[题解] [SCOI2010] 生成字符串的更多相关文章

  1. [SCOI2010]生成字符串 题解(卡特兰数的扩展)

    [SCOI2010]生成字符串 Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数 ...

  2. P1641 [SCOI2010]生成字符串

    P1641 [SCOI2010]生成字符串 题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不 ...

  3. BZOJ1856 [SCOI2010]生成字符串 【组合数】

    题目 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足要求 ...

  4. [SCOI2010]生成字符串

    题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...

  5. 卡特兰数 洛谷P1641 [SCOI2010]生成字符串

    卡特兰数 参考博客 介绍 卡特兰数为组合数学中的一种特殊数列,用于解决一类特殊问题 设\(f(n)\)为卡特兰数的第n项 其通项公式为 \[f(n)=\frac{2n\choose n}{n+1} \ ...

  6. BZOJ1856或洛谷1641 [SCOI2010]生成字符串

    BZOJ原题链接 洛谷原题链接 可以将\(1\)和\(0\)的个数和看成是\(x\)轴坐标,个数差看成\(y\)轴坐标. 向右上角走,即\(x\)轴坐标\(+1\),\(y\)轴坐标\(+1\),表示 ...

  7. Luogu 1641[SCOI2010]生成字符串 - 卡特兰数

    Description 有$N$ 个 $1$ 和 $M$ 个 $0$ 组成的字符串, 满足前 $k$ 个字符中 $1$ 的个数不少于 $0$ 的个数. 求这样字符串的个数. $1<=M < ...

  8. 【[SCOI2010]生成字符串】

    \(n=m\)时候经典的卡特兰 那\(n!=m\)呢,还是按照卡特兰的方式来推 首先总情况数就是\(\binom{n+m}{n}\),在\(n+m\)个里选择\(n\)个\(1\) 显然有不合法的情况 ...

  9. 洛谷 1641 [SCOI2010]生成字符串

    题目戳这里 一句话题意 求\(C_{m+n}^{m}\)-\(C_{m+n}^{m-1}\) Solution 巨说这个题目很水 标签居然还有字符串? 但是我还不很会用逆元真的太菜了,还好此题模数P为 ...

随机推荐

  1. linux 之内存与磁盘

    记录工作中常用操作 1. 新建和增加SWAP分区(都必须用root权限,操作过程应该小心谨慎.) 1)新建分区 .以root身份进入控制台(登录系统),输入 swapoff -a #停止所有的swap ...

  2. vue-路由动态切换title

    router.js { path: '/nav', component: () => import('../view/nav.vue'), meta:{ title:'nav', } }, { ...

  3. redis cluster突然少了一个node的问题

    今天进入redis执行cluster info发现  cluster_state:fail  并且  cluster_known_nodes:5   少了一个7006的node 然后我重启了7006的 ...

  4. ES6 class 继承 与面向对象封装开发简单实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 测试使用Timer定时调用http接口

    转自:https://blog.csdn.net/qq_36004521/article/details/80101881

  6. 获得npm server 上 package 的版本信息

    通过这个命令可以获取package 的历史版本信息 npm view packagename   versions

  7. MySQL通过 LOAD DATA INFILE 批量导入数据

    LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP:  TP框架环境 // 定义文件路径$file_path = 'LOAD_DATA_LOCAL_INFILE.tx ...

  8. ad 拼板

    随着整个电子产业的不断发展,电子行业的很多产品都已经有完善的上下游配套企业.从一个成熟产品的方案设计,外观设计,加工制造,装配测试,包装,批发商渠道等等,这样的一条产业链在特定的环境就这样自然地生成. ...

  9. Nginx负载均衡和HTTPS配置及集群搭建

    Nginx的高可用(HA)配置 1.高可用配置结构(画图说明) 2.KeepAlived的安装和配置 1.安装 yum install keepalived 2.keepalived.conf配置文件 ...

  10. Windows 端口占用查询

    1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议    本地地址                     外部地址  ...