结果和dp没有一点关系……

30分算法:设$f_{i, j}$表示已经选了$i$个并且有$j$个是白色的状态数,转移显然,最后答案就是$f_{n + m, m}$,时间复杂度$O(n^{2})$。

100分算法:

大神讲的好

把已经选了的$0$的个数和$1$的个数和看作$x$轴,已经选了个$1$的个数和$0$的个数的差看作$y$轴,就相当于每一步可以向右上或者是右下走一步,最后要到达$(n + m, n - m)$的方案数。

可以发现就相当于在$n + m$步中选出$m$步向右下走的方案数$\binom{n + m}{m}$。

考虑一下限制条件,其实就相当于不经过$y = -1$这条线。根据对称性,从$(0, 0)$开始经过$y = -1$到达$(n + m, n - m)$的方案数就相当于从$(0, -2)$出发,相当于在$n + m$步中选择$m - 1$步中向下走,所以不合法的方案数有$\binom{n + m}{m - 1}$个。

最后的答案就是两个组合数相减。

其中阶乘和阶乘的逆元可以$O(n)$预处理。

时间复杂度$O(n)$。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = 2e6 + ;
const ll P = 20100403LL; int n, m;
ll fac[N], inv[N]; inline ll pow(ll a, ll b) {
ll res = 1LL;
for(; b > ; b >>= ) {
if(b & ) res = res * a % P;
a = a * a % P;
}
return res;
} inline ll getC(int a, int b) {
return fac[a] * inv[b] % P * inv[a - b] % P;
} int main() {
scanf("%d%d", &n, &m); fac[] = 1LL;
for(int i = ; i <= n + m; i++) fac[i] = 1LL * i * fac[i - ] % P;
inv[n + m] = pow(fac[n + m], P - );
for(int i = n + m - ; i >= ; i--) inv[i] = 1LL * inv[i + ] * (i + ) % P; printf("%lld\n", (getC(n + m, m) - getC(n + m, m - ) + P) % P);
return ;
}

最新文章

  1. mysql awr 1.0.5 GA正式版发布
  2. MySQL查询语句(select)详解(1)
  3. Java设计模式-抽象工厂模式(Abstract Factory )
  4. 转:php使用websocket示例详解
  5. 一步一步学习ASP.NET 5 (三)- 认识新的Web结构
  6. window.open实现模式窗口(只弹出一个window.open)
  7. CentOS 6.4 安装setuptools 和 pip
  8. Java 8 lambda初试
  9. 如何解决PeopleSoft Process Scheduler发布问题
  10. LCA(ST倍增)
  11. Eclipse打包出错——提示GC overhead limit exceeded
  12. sql server 作业收缩数据库
  13. D3开发中的资料整理
  14. JS如何防止事件冒泡
  15. duilib进阶教程 -- TreeView控件的不足 (7)
  16. Angular1和Aangular4剖析
  17. POJ1659 Frogs&#39; Neighborhood(青蛙的邻居) Havel-Hakimi定理
  18. Vue 全家桶介绍
  19. 洛谷P4382 [八省联考2018]劈配(网络流,二分答案)
  20. 动态规划算法——最长公共子序列问题(java实现)

热门文章

  1. Microsoft Visual Studio 2012 Update 4 RC 3 离线安装程序
  2. 2018.7.7 MBA -从专业到管理(1)—— 技术人才与的管理人才比较
  3. Redis-简单动态字符串
  4. 元素为指针的vector的使用说明
  5. HNOI2004 宠物收养所 (平衡二叉树)
  6. linux大于2T的磁盘格式化
  7. [SP839]Optimal Marks
  8. linux使用收集
  9. bzoj 1997 [Hnoi2010]Planar——2-SAT+平面图的一个定理
  10. [MySQL-MM] 生产环境自动恢复MM中一台M2库的过程,分享从零开始写的自动化重建脚本以及思路 (转)