【BZOJ1856】[SCOI2010]字符串(组合数学)
【BZOJ1856】[SCOI2010]字符串(组合数学)
题面
题解
把放一个\(1\)看做在平面直角坐标系上沿着\(x\)正半轴走一步,放一个\(0\)看做往\(y\)轴正半轴走一步,最终的重点就是\((n,m)\),限制就是不能到达\(y=x\)上面的部分。
发现这样不好算,我们先考虑一个另外的情况,即\(y=x\)这个部分也不能到达。
首先发现如果第一步走到了\((0,1)\),那么方案一定都不合法。
只考虑第一步走到了\((1,0)\)的情况,那么总的方案数就是\(C(n+m-1,n-1)\)
然而有触碰到了\(y=x\)的情况,我们考虑这条路径第一次碰到\(y=x\)的时候,然后把前面的所有路径沿着\(y=x\)翻转,这样子不难发现所有不合法的情况都一一对应到了从\((0,1)\)出发的情况。
所以在\(y=x\)不能接触的情况下,方案数是\(C(n+m-1,n-1)-C(n+m-1,m-1)\)
现在考虑可以接触\(y=x\),简单啊,我们强制你多往右走一步,变成不能接触\(y=x\)就好了啊。
即\(n\)变成\(n+1\),那么答案就是\(C(n+m,n)-C(n+m,m-1)\)
#include<iostream>
#include<cstdio>
using namespace std;
#define MOD 20100403
#define MAX 1001000
int fpow(int a,int b){int s=1;while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}return s;}
int n,m;
int C(int n,int m)
{
int s=1,d=1;
for(int i=n;i>m;--i)s=1ll*s*i%MOD;
for(int i=n-m;i;--i)d=1ll*d*i%MOD;
return 1ll*s*fpow(d,MOD-2)%MOD;
}
int main()
{
cin>>n>>m;
cout<<(C(n+m,m)+MOD-C(n+m,m-1))%MOD<<endl;
return 0;
}
【BZOJ1856】[SCOI2010]字符串(组合数学)的更多相关文章
- BZOJ1856[Scoi2010]字符串——组合数学+容斥
题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...
- BZOJ1856:[SCOI2010]字符串(卡特兰数,组合数学)
Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgw ...
- [BZOJ1856][SCOI2010]字符串(组合数学)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1856 分析:http://www.cnblogs.com/jianglangcaiji ...
- 2018.09.25 bzoj1856: [Scoi2010]字符串(组合数学)
传送门 如果有n==m的条件就是卡特兰数. 但现在n不一定等于m. 我们可以考虑用求卡特兰数一样的方法来求答案. 我们知道有一种求卡特兰数的方法是转到二维平面求答案. 这道题就可以这样做. 我们将这个 ...
- BZOJ1856 [Scoi2010]字符串 数论
原文链接http://www.cnblogs.com/zhouzhendong/p/8084577.html 题目传送门 - BZOJ1856 题意概括 找出由n个1,m个0组成的字符串,且任意前几个 ...
- BZOJ1856[SCOI2010]字符串
Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgw ...
- bzoj千题计划299:bzoj1856: [Scoi2010]字符串
http://www.lydsy.com/JudgeOnline/problem.php?id=1856 卡特兰数 从(1,1)走到(n,m),不能走y=x 上方的点,求方案数 从(1,1)走到(n, ...
- BZOJ1856: [Scoi2010]字符串(组合数)
题意 题目链接 Sol \(30 \%\)dp: \(f[i][j]\)表示放了\(i\)个\(1\)和\(j\)个\(0\)的不合法方案 f[0][0] = 1; cin >> N &g ...
- Bzoj 1856: [Scoi2010]字符串 卡特兰数,乘法逆元,组合数,数论
1856: [Scoi2010]字符串 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1194 Solved: 651[Submit][Status][ ...
随机推荐
- .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
转帖:https://blog.csdn.net/WPwalter/article/details/78067293 另参考:https://www.cnblogs.com/worksguo/arch ...
- 使用sklearn进行K_Means聚类算法
首先附上官网说明 [http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-usin ...
- ASP.NET Core使用log4net记录日志
.NET常用的日志组件有NLog.Log4net等,.NET CORE下微软也自带了日志组件,到目前为止还没用过,而我本人常用的是log4net,下面简单讲讲.NET CORE下怎么使用log4net ...
- python3通过gevent.pool限制协程并发数量
协程虽然是轻量级的线程,但到达一定数量后,仍然会造成服务器崩溃出错.最好的方法通过限制协程并发数量来解决此类问题. server代码: #!/usr/bin/env python # -*- codi ...
- vue开发小结(下)
前言 继前几天总结了vue开发小结(上)后,发现还有很多的点没有能列举出来,于是还是打算新建一个下篇,再补充一些vue开发中需要注意的细节,确实还是都是细节的问题,我只是在这里强调下,希望对大家有帮助 ...
- oracle如何导出和导入数据库/表
oracle如何导出和导入数据库/表 oracle如何将项目中的表导出后在导入自己的数据库中,这是一个完整的操作,对于数据库备份或在本地查看数据验证数据进场用到,一般情况下我都用dos黑窗口进行操作, ...
- NuGet 使用笔记
环境准备 1. 下载nuget : https://www.nuget.org/downloads 2. 设置到环境变量Path, 使生效:在Cmd打入: set path=abc 关闭Cmd (C ...
- Python - 内置函数 选例
概览参见 https://www.runoob.com/python/python-built-in-functions.html 官方文档 https://docs.python.org/3/li ...
- yum源使用的几个报错小总结 (例如: python2.6.6 下yum不能使用: No module named yum)
服务器上的yum突然不好使用,使用yum时有如下几个保持,解决方案如下: 1)Error: Cannot retrieve repository metadata (repomd.xml) for r ...
- Docker容器学习梳理 - Volume数据卷使用
之前部署了Docker容器学习梳理--基础环境安装,接下来看看Docker Volume的使用. Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker ...