数学
Zolrk
这个作者很懒,什么都没留下…
展开
-
Codeforces 664A Gerald and Giant Chess
#include <algorithm>#include <iostream>#include <cstdio>#include <cstring>#include <string>std::string a, b;int main() { std::cin >> a >> b; if(a == b) std::cout << a; else std::cout原创 2017-10-17 20:50:14 · 407 阅读 · 0 评论 -
Noip2016 组合数问题
虽然说通过组合数递推公式可以看出来C(i,j)=C(i−1,j−1)+C(i−1,j)C(i,j)=C(i-1,j-1)+C(i-1,j) 就是杨辉三角公式,但是还是有一个很关键的差别…就是当j=1时这个公式不太管用…比如说C13C_3^1 表示从三个东西里面选一个,有三种选法,这个就需要提前处理了… 只统计每一列满足要求的数的和,求第n行第m列时只要把第n行的前m列加起来就行了#include原创 2017-09-09 09:48:27 · 251 阅读 · 0 评论 -
P1865 A % B Problem - 欧拉筛 - 前缀和
注意筛法的MAXN和MAXNUM之间有差别#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;cstdio&gt;using namespace std;const int MAXN = 1000000 + 100;const int MAXNUM = MAXN - 10;int pri[MAXN],tot...原创 2018-09-06 17:04:00 · 150 阅读 · 0 评论 -
P1373 小a和uim之大逃离 - DP - 同余
抽象出数学表达,题意求的是使k1≡k2mod(k+1)k1≡k2mod(k+1)k1 ≡ k2 \mod (k+1) 成立的方案数 注意模数是k+1啊,都说了k+1时算作0,k+2时算作1了 其实是数学题。。。 那么k1≡k2mod(k+1)k1≡k2mod(k+1)k1 ≡ k2 \mod (k+1) 其实是比较难求的,除非记录状态,那就要多开一维,思考一下,同余还是可以移项的,现在就是求...原创 2018-09-04 21:30:34 · 186 阅读 · 0 评论 -
Lucas定理模板
Cmnmodp=Cm/pn/p∗CmmodpnmodpCnmmodp=Cn/pm/p∗CnmodpmmodpC_n^m mod p = C_{n/p}^{m/p}*C_{nmodp}^{mmodp} 其中m/p n/p可以递归 边界为m = 0 返回1 另外 注意组合数计算时考虑是否存在,当m&gt;n时不存在返回0 处理阶乘一定要从0开始处理 fac0 = 1 不把fac0赋为1,从...原创 2018-08-17 11:23:45 · 169 阅读 · 0 评论 -
【自用】整理(bugs,总结)
这两天被规律题虐得不行 因为我都是那种,通过题意看性质的做法。。 然鹅性质可能过于复杂,看不出来 所以就要打表。。。 就是,真的去把表格列出来,找上下行,不同列的关系 x x x x x x x x x x x x x x x x x x x x x x x x x x x x 这样的 比如说有x次操作,每次操作是ai=ai+aimodn+1ai=ai+aimodn+1a...原创 2018-08-05 16:36:47 · 521 阅读 · 0 评论 -
TJOI2009 洛谷P3868 猜数字 - 中国剩余定理 - 快速乘(爆long long 的处理方法) - 很多细节。。。复习时多看看注释
不知道为什么,但是输入有负数就一定要先转换为正数(总之转换成正数一定不会错,因为重新得到的数在模意义下和原来相同) 然后因为最后乘起来会爆long long 要用快速加边加边模#include &amp;amp;amp;amp;lt;algorithm&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;#include &am原创 2018-08-05 16:20:14 · 383 阅读 · 0 评论 -
HNOI2008 洛谷P3197 越狱 - 快速幂 - 组合数学
做法:乘法原理,每个数可能有几种情况,然后乘起来得到总方案数,然后用总方案数减去不合法方案数(两两不相邻M*(M-1)*(M-1)…)注意减法(负数)取模,因为模意义下减法很有可能出负数 所以 (a-b) % p = (a%p-b%p+p)%p#include <algorithm>#include <iostream>#include <cstdio&g...原创 2018-08-05 11:25:08 · 227 阅读 · 0 评论 -
卡特兰数 斯特林数
卡特兰数Cn2n−Cn−12nC2nn−C2nn−1C_{2n}^n - C_{2n}^{n-1} 第一类斯特林数S(n,k)=(n−1)∗S(n−1,k)+S(n−1,k−1)S(n,k)=(n−1)∗S(n−1,k)+S(n−1,k−1)S(n,k) = (n-1)*S(n-1,k) + S(n-1,k-1) S(n,0)=0&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;(n&amp;amp原创 2018-07-23 16:12:41 · 189 阅读 · 0 评论 -
Codeforces 887A Div. 64
题目大意:给定一个01字符串,可以任意删除其中的字符,问是否通过一定操作后可以使最终字符串所表示的二进制数为64的倍数64的倍数也可以看作2的6次方的倍数,所以将任意数左移6位,这个数就成为64的倍数,于是只要检查字符串中第一个1的后面是否有6个0即可#include <algorithm>#include <iostream>#include <cstring>#include <cstdi原创 2017-11-04 09:18:59 · 525 阅读 · 0 评论 -
Noip 2016 组合数问题 - 矩阵前缀和
Cnm=Cn−1m−1+Cnm−1C_{m}^{n} = C_{m-1}^{n-1}+C_{m-1}^{n} 类似杨辉三角,只不过需要注意C1m=mC_m^1=m这题主要的难度并不在组合数上,而是如何优化查询因为t十分大,我们不能每查询一次就跑一次数组,但是我们可以先做一个预处理,令f(i,j)f(i,j)为第i行的前j个能整除k的组合数数量之和,这样就可以查询每一行f(i,i)f(i,i)的值,原创 2017-10-26 15:04:08 · 474 阅读 · 0 评论 -
Noip 2016 换教室 - 期望DP
期望反映了一个随机变量的平均结果,是所有可能结果的概率乘上结果的和。例如对于一个随机变量x,1/3几率变为1,1/3几率变为2,1/3几率变为3,则x的期望值为 13∗1+13∗2+13∗3=213∗1+13∗2+13∗3=2\frac{1}{3}*1+\frac{1}{3}*2+\frac{1}{3}*3=2期望具有线性性质,我们可以根据加法原理和乘法原理来对期望进行计算可以发现,最终...原创 2017-11-02 11:12:43 · 268 阅读 · 0 评论 -
欧拉函数模板 - 分解质因数 - 筛法
#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;cstdio&gt;using namespace std;const int MAXN = 10000000 + 10;int vis[MAXN], prime[MAXN], cnt,n,m;void init() { for(int i=2; i&原创 2017-11-06 17:23:25 · 744 阅读 · 0 评论 -
Noip 2011 计算系数 - 二项式定理
答案是a∗b∗Cnka*b*C_k^n#include <algorithm>#include <iostream>#include <cstdio>using namespace std;#define debug(x) cerr << #x << "=" << x << endl;const int MAXK = 1000 + 10;const int MOD = 10007;in原创 2017-10-31 19:51:45 · 438 阅读 · 0 评论 -
Codeforces 776B
题目大意: 给定数n,表示有n个物品,每个物品i的价值为i+1 现在要染色,要求是:当a是b的质因数时,a,b颜色不同 求一种颜色总数不同的染色方案这个。。。所有质数都可以染成同一个颜色,同样所有合数也可以都染成同一个颜色,然后答案就出来了,除了1以外的整数要么质数要么合数啊。。。 然而还是要特判n==1和n==2的#include <cstdio>#include <iostream>原创 2017-10-03 23:07:17 · 311 阅读 · 0 评论 -
快速幂
核心思想是二进制转十进制 11的二进制表示为1011 ∵11=23∗1+22∗0+21∗1+20∗1∵11=2^3*1+2^2*0+2^1*1+2^0*1 ∴a11=a23∗a21∗a20∴a^{11}=a^{2^3}*a^{2^1}*a^{2^0} 运用位运算,就可以方便地快速幂 代码是对某一个数取模,洛谷上有相应的模板题#include <cstdio>#include <ios原创 2017-08-20 21:42:22 · 218 阅读 · 0 评论 -
Noip 2012 同余方程
#include <algorithm>#include <iostream>#include <cstdio>using namespace std;const int MAXN = 100010;int a, b, ans;int x,y;int ex_gcd(int a, int b, int &x, int &y) { if(b == 0) { x =原创 2017-10-18 10:48:39 · 289 阅读 · 0 评论 -
埃氏筛法
需要注意的是1既不是质数也不是合数 思想很简单,就是一个质数p的任意整数倍肯定都是合数,然后把这些合数筛掉留下来的就是质数,时间复杂度也不是很高#include <cstdio>#include <cmath>#include <iostream>using namespace std;const int maxn = 10000010;int m;int n;bool prime[原创 2017-08-22 21:29:16 · 334 阅读 · 0 评论