
数学
文章平均质量分 56
1
追随远方的某R
世界在等待我所寻找的答案
展开
-
组合数学(下)
组合数学整篇其实提供了的很多是数学的公式和抽象的模型用来解题。原本打算谢谢母函数和特殊计数可是母函数现在的认识还是太浅了,所以就先写个特殊计数的stirling和catalan计数。1.catalan计数公式:第n项为C(n,2n)/n+1抽象模型:1.设将n个1和n个0排成一排,要求如下:在任意前k个数中1的个数总要大于等于0的个数,或者说0的个数总要大于等于1的个数,这样的排列方案有多少种。2.假设有一个n*n的网格,我们要求从左上角走到右下角,只能往下走或者往右走,求不过对角线的情况下我原创 2021-10-24 22:04:27 · 317 阅读 · 0 评论 -
组合数学(上)
鸽笼原理定理:将n+1个物品放进n个盒子至少一个盒子含有2个及以上的物品。抽象:将n个物品进行k次划分产生k+1个区间至少有n-k个区间含有n/k个物品(高中排列组合里的隔板法)比如:有1500人过生日,至少5人同生日;n个人握手,一定有两人握手次数相同HDU1205“分糖”思路:设总糖数位sum,找出n种中数目最大的哪一种,数目设为max。根据鸽笼原理,把max视为挡板的话。如果满足max数小于sum-max<max-1那么说明必定有两个数目最大种类的糖放在一起了。否则,必定可以。原创 2021-10-19 22:43:05 · 178 阅读 · 0 评论 -
简单数论学
本次内容包括:快速幂,拓展欧几里得,同余逆元,埃氏筛法快速幂背景:求a的n次幂常规方法:循环累乘 复杂度O(n)数论方法:快速幂,使用二进制拆分或分治。复杂度对数级二进制拆分:将n从二进制角度去看,不断二进制右移,当末位为1则乘,每次右移都会改变乘数1 2 4 8。代码:int fastpow(int a,int n){ int base=a; int ans=1; while(n) { if(n&1) {原创 2021-10-16 12:24:24 · 198 阅读 · 0 评论 -
拓展欧几里得算法
背景欧几里得(gcd)用来求最小公约数用的程序就一句话:int gcd(int a,int b){return b==0?a:gcd(b,a%b)}拓展欧几里得算法当我们遇到了二元一次方程形如 ax+by=n时,可以用来确定这个方程的整数解分以下几个步骤第一步贝祖定理判断是否有整数解当且仅当有 ax+by=n*gcd(a,b)时才有整数解,也就是说ax+by=n中等式右边的n必须是gcd(a,b)的整数倍第二步递归求出特解重点!这是整个拓展欧几里得算法最难的部分,解决这一步这个算法就没啥原创 2021-10-13 21:37:37 · 300 阅读 · 0 评论 -
二进制拆分优化
之前在学多重背包(涉及三重循环)时曾经大佬教过二进制拆分,今天看到快速幂用了两个方法:分治,二进制拆分。突然就联想到了多重背包,但是想到二进制拆分时又忘记咋做了,特此总结复习。首先看看多重背包的二进制拆分。 我们知道多重背包的每种物品有p[i]个,二进制拆分就是要这些个物品按照二进制的方式拆分,然后转化为0-1背包问题求解,不难想到其实应该有一个1 2 4 8…的系数在进行作用。这个系数具体来讲可以说是一个满足 p[i]-pow(2,k)+1>0最大k值形成系数:1,2,4,…,pow(2,原创 2021-10-12 23:47:43 · 485 阅读 · 0 评论