概述



AcWing211. 计算系数

#include <bits/stdc++.h>
using namespace std;
const int mod = 10007 ;
int ksm(int a, int b, int p)
{
int ans = 1%p;
a = a%p;
while(b)
{
if(b&1) ans = (long long)ans * a % p;
a = (long long)a*a%p;
b>>=1;
}
return ans;
}
int jie(int n)
{
int ans = 1;
for(int i = 1; i <= n; i++)
{
ans = (long long)ans * i %mod;
}
return ans;
}
int niyuan(int x)
{
return ksm(x, mod-2, mod);
} int main()
{
int a,b,k,n,m;
cin >> a >> b >> k >> n >> m;
int fenzi = jie(k);
int fenmu = jie(k-m)*jie(m) % mod;
int CC = fenzi * niyuan(fenmu)%mod;
int asn = ksm(a, n, mod)*ksm(b, m, mod)%mod*CC%mod;
printf("%d", asn);
return 0;
}

多重集

AcWing212. 计数交换



Lucas定理

古代猪文

先对合数进行分解的代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 999911658;
for(int i = 2; (long long)i*i <= x; i++)
{
if(x % i==0)
{
printf("%d\t", i);
int cnt = 0;
while(x%i==0)
{
x /= i;
cnt ++;
}
printf("%d\n", cnt);
}
}
if(x > 1)
printf("%d\t1\n", x);
return 0;
}

运行结果

2	1
3 1
4679 1
35617 1

Catalan定理

证明如下:

证明要点:

  • 从反方向来进行考虑
  • 把一个不好计数的集合与一个已知的可计数的集合建立一一映射

容易得到:

总共有 \(C^n_{2n}\) 种情况。

现在思考不成立的情况:

建立映射:

P(不合法情况集合) Q(有n-1个0,n+1个1)
找到一个最短的前缀,不满足条件。(这个前缀里面有1的个数比0的个数多1) 然后把其他部分取反,得到q 同左,找到最短的前缀,使得前缀里面有1的个数比0的个数多1 然后把后面取反

容易证明:

已知一个不合法的原情况,可以映射到Q。

而在Q中,也可以映射到P。

说明两个集合相互包含,进而得到两个集合相等。

故个数相等。

所以不合法的情况有 \(C^{n-1}_{2n}\) 种。

相减,得到Katalan数列的个数。

\({C^{n}_{2n}}\over{n+1}\)

算法竞赛进阶指南0x36组合计数的更多相关文章

  1. 算法竞赛进阶指南 0x52 背包

    背包问题是线性背包中的一类重要问题. 0/1背包 模型: 给定N个物品,每一个物品具有两种属性,一个是体积 \(v_i\) ,另一个是容积 \(w_i\) . 有一个容积为M的背包,求一种方案,使得选 ...

  2. 算法竞赛进阶指南 0x43 线段树

    目录 线段树简介 线段树的简单代码实现 建树代码 修改操作 查询操作 线段树的查询操作的时间复杂度分析: AcWing245. 你能回答这些问题吗 思路 代码[时间复杂度:\(O( \space(N+ ...

  3. 《算法竞赛进阶指南》0x10 基本数据结构 Hash

    Hash的基本知识 字符串hash算法将字符串看成p进制数字,再将结果mod q例如:abcabcdefg 将字母转换位数字(1231234567)=(1*p9+2*p8+3*p7+1*p6+2*p5 ...

  4. 《算法竞赛进阶指南》1.4Hash

    137. 雪花雪花雪花 有N片雪花,每片雪花由六个角组成,每个角都有长度. 第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,-,ai,6. 因为雪花的形状是封闭的环形,所以从任何一 ...

  5. bzoj 1787 && bzoj 1832: [Ahoi2008]Meet 紧急集合(倍增LCA)算法竞赛进阶指南

    题目描述 原题连接 Y岛风景美丽宜人,气候温和,物产丰富. Y岛上有N个城市(编号\(1,2,-,N\)),有\(N-1\)条城市间的道路连接着它们. 每一条道路都连接某两个城市. 幸运的是,小可可通 ...

  6. POJ1639 算法竞赛进阶指南 野餐规划

    题目描述 原题链接 一群小丑演员,以其出色的柔术表演,可以无限量的钻进同一辆汽车中,而闻名世界. 现在他们想要去公园玩耍,但是他们的经费非常紧缺. 他们将乘车前往公园,为了减少花费,他们决定选择一种合 ...

  7. 算法竞赛进阶指南 0x00 基本算法

    放在原来这个地方不太方便,影响阅读体验.为了读者能更好的刷题,另起一篇随笔. 0x00 基本算法 0x01 位运算 [题目][64位整数乘法] 知识点:快速幂思想的灵活运用 [题目][最短Hamilt ...

  8. 算法竞赛进阶指南--快速幂,求a^b mod p

    // 快速幂,求a^b mod p int power(int a, int b, int p) { int ans = 1; for (; b; b >>= 1) { if (b &am ...

  9. 算法竞赛进阶指南0x51 线性DP

    AcWing271. 杨老师的照相排列 思路 这是一个计数的题目,如果乱考虑,肯定会毫无头绪,所以我们从1号到最后一个依次进行安排. 经过反复实验,发现两个规律 每一行的同学必须是从左向右依次连续放置 ...

随机推荐

  1. 服务器 CPU 100% 异常排查实践与总结

    一个执着于技术的公众号 问题背景 昨天下午突然收到运维邮件报警,显示数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就 ...

  2. 拖动元素调换位置——sortable.js

    使用简介: https://github.com/SortableJS/Sortable https://segmentfault.com/a/1190000008209715 /**! * Sort ...

  3. 关键字 global和nonlocal

    globale 表示从全局把一个变量(比如a)引入局部,后面的变量全是此变量a 使用   globale 变量名 # 全局变量一般是不能随意的修改的 # a = 10 # def func(): # ...

  4. 关于前端ajax请求获取数据成功之后无法操作数据的原因及解决方法

    前言:做项目的时候我用ajax请求json数据,遍历使用数据时却发现页面无响应.关于这个问题今天有个朋友又问了我一次,记录一下.由于我没有记录,这里用我朋友的图片. 代码现象: 这里他是使用alert ...

  5. ThreadLocal夺命11连问

    前言 前一段时间,有同事使用ThreadLocal踩坑了,正好引起了我的兴趣. 所以近期,我抽空把ThreadLocal的源码再研究了一下,越看越有意思,发现里面的东西还真不少. 我把精华浓缩了一下, ...

  6. 2021夏季学期华清大学EE数算OJ1:算数问题

    第一次写博客,有点紧张... 也许格式也没有特别丑吧 先看原题( 此题做法众多,这里仅仅介绍蒟蒻的一种很复杂的思路(但最后还是喜提0ms的好成绩) 读完这道题,不难发现,此题不过是一个质因数分解+一堆 ...

  7. 使用 awk 命令统计文本

    2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...

  8. java-去除html中的标签或者元素属性(正则表达式/jsoup)

    业务场景: 如一篇使用富文本编辑器编辑的新闻稿,需要在列表页面截取前200字作为摘要,此时需要去除html标签,截取真正的文本部分. /** * 删除Html标签 */public static St ...

  9. java基础内存分配介绍

      java内存分配介绍 栈 堆 方法区 本地方法栈 寄存器   方法区:字节码文件加载时进入的内存. 栈内存:方法运行时所进入的内存,变量也在这里. 堆内存:new出来的东西在这块内存中开辟空间并且 ...

  10. @vue/cli3+配置build命令构建测试包&正式包

    上一篇博客介绍了vue-cli2.x配置build命令构建测试包和正式包,但现在前端开发vue项目大多数使用新版@vue/cli脚手架搭建vue项目(vue create project-name) ...