[SCOI2010]生成字符串
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]生成字符串相关推荐
- 【洛谷】P1641 [SCOI2010]生成字符串(思维+组合+逆元)
题目 传送门:QWQ 分析 不想画图. https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊. 代码 1 // luogu-judger-ena ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- 字符串工具类,随机生成字符串
字符串工具类,随机生成字符串 package main.java.utils;import java.util.Map; import java.util.Random;public class St ...
- Lua 随机生成字符串
--随机生成字符串 -- --@param {int} len -- 要随机的字符串长度 -- --返回生成的字符串 --@Return {String} rankStr --生成的随机字符串 fun ...
- C++随机生成字符串,亲测可用,简单易懂
C++随机生成字符串,亲测可用,简单易懂 话不多说,上代码.蜜汁自信注释写的很清楚,嘿嘿.第一次写文章,希望能够对大家有一丢丢的帮助吧~ #include <iostream> using ...
- mysql中生成字符串对应的英文字母(拼音首字母)
mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...
- mysql 模糊匹配比自己短潆字符_mysql中生成字符串对应的英文字母(拼音首字母)...
mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...
- 随机生成字符串、数字
平时用到的一点东西,记录一下方便以后使用 /*** 获取随机字符串* * @param length 生成字符串的长度*/public static String getRandomString(in ...
- 【PostgreSQL】GIN索引安装与使用 - 全模糊匹配/数组匹配,PG批量插入上万随机生成数据,随机生成字符串/数组
目录 环境 拓展库安装 生成随机假数据 查询使用GIN索引 GIN索引使用条件 参考 环境 PostgreSQL DBeaver 拓展库安装 打开SQL编辑器: 输入命令运行即可: CREATE EX ...
最新文章
- Go使用swagger:方法说明+案例说明
- 探讨mutex与semaphore
- 硬件编程:硬件开发中常用的几种通信接口总结
- Visual Studio与C#编程十个实用技巧
- 编写java的应用_编写Java应用程序
- 静态路由心法口诀:路由表少什么网络加什么网络
- 中国移动java项目_Java Web开发-项目部分(中国移动科技综合管理系统)视频——私塾在线提供...
- vmware workstation 12 永久激活码
- 金山IPO造富效应:中国最贵程序员群生态
- 人脸识别像素最低_人脸识别的技术要求
- python中sqrt_Python中sqrt函数怎么用
- God--Ruby版的进程监控工具
- 【MQ】Kafka如何保证幂等性
- element audio 标签 不显示_不闪屏,HDR,带鱼屏全都有,LG 29WK600宽屏显示器测评...
- 微信小程序的废品回收类程序 垃圾回收app#毕业设计
- [HTML]书签怎么做?
- 暑期实训CPU设计(四)
- like not like 优化 2
- 数字图像处理学习笔记(十五)——图像复原与重建
- 数据结构之树从入门到如土(一)----大话二叉树 及GO实现