经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
BZOJ1856: [Scoi2010]字符串(组合数)
来源:cnblogs  作者:自为风月马前卒  时间:2018/12/17 9:47:45  对本文有异议

题意

题目链接

Sol

\(30 \%\)dp:

\(f[i][j]\)表示放了\(i\)\(1\)\(j\)\(0\)的不合法方案

  1. f[0][0] = 1;
  2. cin >> N >> M;
  3. for(int i = 1; i <= N; i++) {
  4. f[i][0] = 1;
  5. for(int j = 1; j <= i; j++) {
  6. f[i][j] = add(f[i - 1][j], f[i][j - 1]);
  7. }
  8. }
  9. cout << f[N][M];

我们可以把\(1\)看做是\((+1, +1)\), \(0\)看做是\((+1, -1)\),根据折射原理,不合法的方案为\(C_{n+m}^{n+1}\)

详细点的题解可以看这里

  1. #include<bits/stdc++.h>
  2. #include<algorithm>
  3. #define LL long long
  4. #define ull long long
  5. using namespace std;
  6. const int MAXN = 2e6 + 10, mod = 20100403;
  7. inline int read() {
  8. char c = getchar(); int x = 0, f = 1;
  9. while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
  10. while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  11. return x * f;
  12. }
  13. int add(int x, int y) {
  14. if(x + y < 0) return x + y + mod;
  15. return x + y >= mod ? x + y - mod : x + y;
  16. }
  17. int mul(int x, int y) {
  18. return 1ll * x * y % mod;
  19. }
  20. int fp(int a, int p) {
  21. int base = 1;
  22. while(p) {
  23. if(p & 1) base = mul(base, a);
  24. a = mul(a, a); p >>= 1;
  25. }
  26. return base;
  27. }
  28. int N, M, fac[MAXN], ifac[MAXN];
  29. int C(int N, int M) {
  30. return mul(mul(fac[N], ifac[M]), ifac[N - M]);
  31. }
  32. main() {
  33. cin >> N >> M; int Lim = N + M;
  34. fac[0] = 1;
  35. for(int i = 1; i <= Lim; i++) fac[i] = mul(i, fac[i - 1]);
  36. ifac[Lim] = fp(fac[Lim], mod - 2);
  37. for(int i = Lim; i >= 1; i--) ifac[i - 1] = mul(ifac[i], i);
  38. printf("%d\n", (C(N + M, N) - C(N + M, N + 1) + mod) % mod);
  39. return 0;
  40. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号