随笔分类 -  算法-数论

摘要:1、AcWing基础课: 线性筛:(与线性筛质数对应) phi[1] = 1; for (int i = 2; i <= n; i ++) { if (!st[i]) { primes[cnt ++] = i; phi[i] = i - 1; } for (int j = 0; primes[j] 阅读全文
posted @ 2022-09-06 21:45 80k 阅读(45) 评论(0) 推荐(0) 编辑
摘要:https://zhidao.baidu.com/question/367173891541492052.html 结果为C(N+K-1,K) 思想为上面的挨个放入。 或者 将每个箱子都先放入一个球,即N个箱子,放入N+K个小球,箱子非空,然后再使用隔板法,得到C(N+K-1,N-1)。 例题: h 阅读全文
posted @ 2022-09-02 10:46 80k 阅读(67) 评论(0) 推荐(0) 编辑
摘要:题目: https://www.codechef.com/submit/MAKEIT1?tab=statement 题解: https://www.codechef.com/submit/ROCKET_PACK?tab=solution 代码: #include<bits/stdc++.h> #in 阅读全文
posted @ 2022-08-25 18:28 80k 阅读(19) 评论(0) 推荐(0) 编辑
摘要:对于单次查询,可以直接用sqrt(n)遍历。 对于多次查询,每次都遍历会遍历多个无用的数。 可以采用打表法,直接获取数据范围内的全部数据的因子。 代码如下: int N = 100010; vector<int> factor[100010]; for (int i = 1; i <= N; i++ 阅读全文
posted @ 2022-08-22 09:59 80k 阅读(7) 评论(0) 推荐(0) 编辑
摘要:n堆石子,每次可以选择一堆拿走任意颗石子,不能操作的输,问先手还是后手输。 结论:a1^a2^...^an==0则输,否则赢。 参考证明:https://blog.csdn.net/m0_51755720/article/details/120978376 例题:https://www.codech 阅读全文
posted @ 2022-08-11 09:45 80k 阅读(29) 评论(0) 推荐(0) 编辑
摘要:两个数的LCM的常规求法为,两数之积/GCD, 对于多个数也可以分别以此方法求出。 但是对于数据量较大的数,LCM会超过数据范围, 此时可以采用,记录质因子的数量的方法。 用一个数组,记录全部质因子的最大数量。 然后遍历每个数,求出其全部质因子的数量,并更细全局的质因子最大数量。 最后将全部的质因子 阅读全文
posted @ 2022-08-10 12:10 80k 阅读(385) 评论(0) 推荐(0) 编辑
摘要:https://ac.nowcoder.com/acm/contest/38105/D #include<bits/stdc++.h> typedef unsigned long long LL; using namespace std; LL digit = 1e13; LL nums[20001 阅读全文
posted @ 2022-08-05 11:02 80k 阅读(13) 评论(0) 推荐(0) 编辑
摘要:对a/b做上取整 1、转为浮点数(可能会有精度问题) int a=1; int b = 1; int res = int(ceil(double(a) / b)); View Code 2、通过判断能否整除(比较直观) int a=1; int b = 1; int res = a % b ? a 阅读全文
posted @ 2022-08-04 10:55 80k 阅读(75) 评论(0) 推荐(0) 编辑
摘要:若集合中的任意数在三进制下只含有0和1,则有: 对任意集合中三点x、y、z,有y≠(x+z)/2,即2*y≠x+z,即集合中不存在任意两点x、z的平均值。 (因为2*y全部位均为0或2,而x+z至少存在一位为1) https://atcoder.jp/contests/arc145/editoria 阅读全文
posted @ 2022-08-02 20:54 80k 阅读(26) 评论(0) 推荐(0) 编辑
摘要:对于长度为2N的括号序列,合法的数量为C(2N,N)/(N+1) 参考:https://blog.csdn.net/ffmpeg4976/article/details/42340379?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relev 阅读全文
posted @ 2022-08-02 20:14 80k 阅读(22) 评论(0) 推荐(0) 编辑
摘要:可以证明,此最小距离点为全部点坐标的中位数。 阅读全文
posted @ 2022-07-14 16:22 80k 阅读(48) 评论(0) 推荐(0) 编辑
摘要:设有n个位置,k个小球 由于小球完全相同,需要使用隔板法。 n个位置对应n-1个隔板,再加上k个小球,共n+k-1个位置,来放置小球和隔板 答案为C(n+k-1, k) 例题: 2338. 统计理想数组的数目 https://leetcode.cn/problems/count-the-number 阅读全文
posted @ 2022-07-13 10:50 80k 阅读(68) 评论(0) 推荐(0) 编辑
摘要:LL GCD(LL a, LL b) { return b == 0 ? a : GCD(b, a % b); } View Code 此写法可以防止%0出现浮点数错误 阅读全文
posted @ 2022-07-11 20:48 80k 阅读(15) 评论(0) 推荐(0) 编辑
摘要:pair_hash struct PairHash { size_t operator()(const pair<int,int>& p) const { return hash<int>{}(p.first)^ hash<int>{}(p.second); } }; View Code vecto 阅读全文
posted @ 2022-07-09 21:35 80k 阅读(96) 评论(0) 推荐(0) 编辑
摘要:异或与加法同奇偶性 且 两项分别对应不进位的结果和进位的值 阅读全文
posted @ 2022-07-05 10:29 80k 阅读(118) 评论(0) 推荐(0) 编辑
摘要:对于曼哈顿距离存在另一种形式的计算: 等式右边两项分别对应于:x1和x2、y1和y2的大小关系相同和不同的情况。 这样做的好处是,对于多个(x2,y2)点,可以预处理出全部点的最大和最小的x2+y2、x2-y2,这样对于任意其他点,可以在O(1)计算出它和全部点的曼哈顿距离的最大值。 例题: htt 阅读全文
posted @ 2022-07-01 20:09 80k 阅读(399) 评论(0) 推荐(0) 编辑
摘要:如果一个二维网格中数据不重复,可以确定其鞍点最多有一个。 假设鞍点是列极大行极小, 则,与鞍点同行或同列的点显然不是鞍点, 与鞍点不同行列的点z,可以对应,鞍点行列中的两个点x和y 且显然x<y(因为x<鞍点<y) 如果z<x,则z不为列极大,如果z>y,则z不为行极小, 如果x<z<y,则z不为列 阅读全文
posted @ 2022-06-28 16:27 80k 阅读(37) 评论(0) 推荐(0) 编辑
摘要:对于大数,可以使用string存储。 如果要构造最大的大数,注意数的大小首先比较数的长度,然后从首位往后面的位比较。 例题: https://atcoder.jp/contests/abc257/tasks/abc257_e 首先可以计算出,可以构造出的最长位数 然后再从大到小对每一位,贪心的判断是 阅读全文
posted @ 2022-06-28 11:18 80k 阅读(43) 评论(0) 推荐(0) 编辑
摘要:在求组合数时,其除数有阶乘形式,会非常大。 所以需要用除法逆元记录。 有公式1/num=pow(num,P-2)(mod P),P是质数。 其中pow可以用QuickPow算法求出。 在阶乘递推时,可以有n!=(n-1)!*n;从前向后递推 阶乘的逆元在递推时,有1/(n!)=1/((n-1)!)/ 阅读全文
posted @ 2022-06-28 09:52 80k 阅读(138) 评论(0) 推荐(0) 编辑
摘要:组合数与杨辉三角有一一对应的关系: 根据杨辉三角的构造方式,以及组合数的性质:C(n,m)=C(n-1,m)+C(n-1,m-1) 可得杨辉三角的每一行,都对应着一个固定底数的组合数。 例题: https://codeforces.com/contest/1696/problem/E 同时有组合数公 阅读全文
posted @ 2022-06-27 22:12 80k 阅读(386) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示