Description:

lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗?

Hint:

\(n,m \le 10^6\)

Solution:

很妙的一道题

网格图上的组合数学

直接做发现不可做,考虑转化,借的图:

我们把初始状态设为原点,最终状态设为\((n+m,n-m)\)

选1代表向右上走,走选0代表向左上走

答案就是走到终点,且不经过\(y=-1\)这条直线的方案数(想一想,为什么?)

这不好求,转化求总方案减去不合法方案,求经过\(y=-1\)这条直线的方案数

然后不难发现,路径经过\(y=-1\)的方案就等于从\((0,-2)\)出发的方案

列个方程就知道要向下走m-1步,即方案为\(C(n+m,m-1)\)

所以答案就是\(C(n+m,m)-C(n+m,m-1)\)

#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define ls p<<1
#define rs p<<1|1
using namespace std;
typedef long long ll;
const int mxn=2e6+5,mod=20100403;
int n,m,fac[mxn],ifac[mxn];
inline int read() {char c=getchar(); int x=0,f=1;while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}while(c<='9'&&c>='0') {x=(x<<3)+(x<<1)+(c&15);c=getchar();}return x*f;
}
inline int chkmax(int &x,int y) {if(x<y) x=y;}
inline int chkmin(int &x,int y) {if(x>y) x=y;}int qpow(int a,int b)
{int res=1,bs=a;while(b) {if(b&1) res=1ll*res*bs%mod;bs=1ll*bs*bs%mod;b>>=1;}return res;
}inline ll C(int n,int m) {return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;
}int main()
{cin>>n>>m;fac[0]=ifac[0]=1; for(int i=1;i<=n+m;++i) fac[i]=1ll*fac[i-1]*i%mod;ifac[n+m]=qpow(fac[n+m],mod-2);for(int i=n+m-1;i>=1;--i) ifac[i]=1ll*ifac[i+1]*(i+1)%mod;printf("%lld",(C(n+m,m)-C(n+m,m-1)+mod)%mod);return 0;
}

转载于:https://www.cnblogs.com/list1/p/10540834.html

[SCOI2010]生成字符串相关推荐

  1. 【洛谷】P1641 [SCOI2010]生成字符串(思维+组合+逆元)

    题目 传送门:QWQ 分析 不想画图. https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊. 代码 1 // luogu-judger-ena ...

  2. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  3. 字符串工具类,随机生成字符串

    字符串工具类,随机生成字符串 package main.java.utils;import java.util.Map; import java.util.Random;public class St ...

  4. Lua 随机生成字符串

    --随机生成字符串 -- --@param {int} len -- 要随机的字符串长度 -- --返回生成的字符串 --@Return {String} rankStr --生成的随机字符串 fun ...

  5. C++随机生成字符串,亲测可用,简单易懂

    C++随机生成字符串,亲测可用,简单易懂 话不多说,上代码.蜜汁自信注释写的很清楚,嘿嘿.第一次写文章,希望能够对大家有一丢丢的帮助吧~ #include <iostream> using ...

  6. mysql中生成字符串对应的英文字母(拼音首字母)

    mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...

  7. mysql 模糊匹配比自己短潆字符_mysql中生成字符串对应的英文字母(拼音首字母)...

    mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...

  8. 随机生成字符串、数字

    平时用到的一点东西,记录一下方便以后使用 /*** 获取随机字符串* * @param length 生成字符串的长度*/public static String getRandomString(in ...

  9. 【PostgreSQL】GIN索引安装与使用 - 全模糊匹配/数组匹配,PG批量插入上万随机生成数据,随机生成字符串/数组

    目录 环境 拓展库安装 生成随机假数据 查询使用GIN索引 GIN索引使用条件 参考 环境 PostgreSQL DBeaver 拓展库安装 打开SQL编辑器: 输入命令运行即可: CREATE EX ...

最新文章

  1. Go使用swagger:方法说明+案例说明
  2. 探讨mutex与semaphore
  3. 硬件编程:硬件开发中常用的几种通信接口总结
  4. Visual Studio与C#编程十个实用技巧
  5. 编写java的应用_编写Java应用程序
  6. 静态路由心法口诀:路由表少什么网络加什么网络
  7. 中国移动java项目_Java Web开发-项目部分(中国移动科技综合管理系统)视频——私塾在线提供...
  8. vmware workstation 12 永久激活码
  9. 金山IPO造富效应:中国最贵程序员群生态
  10. 人脸识别像素最低_人脸识别的技术要求
  11. python中sqrt_Python中sqrt函数怎么用
  12. God--Ruby版的进程监控工具
  13. 【MQ】Kafka如何保证幂等性
  14. element audio 标签 不显示_不闪屏,HDR,带鱼屏全都有,LG 29WK600宽屏显示器测评...
  15. 微信小程序的废品回收类程序 垃圾回收app#毕业设计
  16. [HTML]书签怎么做?
  17. 暑期实训CPU设计(四)
  18. like not like 优化 2
  19. 数字图像处理学习笔记(十五)——图像复原与重建
  20. 数据结构之树从入门到如土(一)----大话二叉树 及GO实现

热门文章

  1. SAP HANA能否推动实时应用?
  2. 用Eclipse开发PHP项目
  3. leetcode 54. 螺旋矩阵
  4. 2020全国高中清华北大录取人数榜,各位学生快看!
  5. 力扣(LeetCode):字符串转换整数 (atoi)
  6. TI C6000DSP上TCP/IP协议栈的实现
  7. mysql自增变量插入行时需要赋值
  8. 026_CSS内边距
  9. 关于How to do/What to do
  10. 学院后勤报修系统php_后勤不后|愿你的深情不再是秘密