数学
Ray.C.L
不开longlong见祖宗
展开
-
Dual Prime(线性筛+前缀和)
思路:这个题在预处理的时候先用线性筛求出1——1e6的素数,然后枚举(O(n^2))所有可能的x,用个桶求存储,然后对桶求个前缀和,最后对给出的区间进行O(1)的查询 #pragma GCC optimize(2) #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #i.原创 2020-08-28 18:43:33 · 612 阅读 · 0 评论 -
HDU-Clockwise or Counterclockwise
题意:给出3个点左边判断,按ABC的方向走判断是顺时针还是逆时针。 矢量叉积: 计算矢量叉积是与直线和线段相关算法的核心部分。设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P × Q = x1y2 - x2y1,其结果是一个标量。显然有性质 P × Q = - ( Q × P ) 和 P × ( - Q ) = - ( P × Q )。一般在不加说明的情况下,本文下述算法中所有的点都看作矢量,两点原创 2020-08-13 17:41:19 · 212 阅读 · 0 评论 -
素数回文 (Miller-Rabin素数测试算法)
朴素算法能过 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #include<queue> #include<stack> #include<bits/stdc++.h> using namespace std; typedef .原创 2020-08-11 23:05:41 · 321 阅读 · 1 评论 -
HDU——6803 Blow up the Enemy(贪心)
题目链接 思路:要算出张三的最优胜率,那就是1-张三失败的概率,张三失败的话说明张三他爸拿的最优武器和张三同归于尽,那么这个概论就是(最优武器的数量)/(武器总数量)* 0.5 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #include<queue>原创 2020-08-03 10:57:05 · 250 阅读 · 0 评论 -
素数判断(试除法求质因数)
思路:试除法求素数 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #include<queue> //#include<bits/stdc++.h> using namespace std; typedef long long ll; #de.原创 2020-07-25 14:56:55 · 349 阅读 · 0 评论 -
大水题(简单容斥原理)
思路:我们吧是2 5 11 13的倍数减去就是答案,算 2 5 11 13的倍数总数用容斥原理奇加偶减 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #include<queue> //#include<bits/stdc++.h> usin.原创 2020-07-17 12:28:13 · 232 阅读 · 1 评论 -
牛牛去牛市旅游(并查集+数学)
思路:首先我们看无解的情况,当一个点的度大于等于3或者形成环此时无解(因为每条边只能走一次),然后我们去看有几个联通块,对这n个连通块进行排列组合是n!,之后每个连通块内的点的数量如果大于2那么我们我们就需要选择是从A到B还是从B到A,此时还有乘上2^x(x为点大于1的连通块),我们用并查集去判断是否形成环,和有几个联通块。 #include <cstdio> #include <cstring> #include <algorithm> #include <se.原创 2020-07-13 11:37:13 · 351 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math(数学)
题目链接 思路:偶数直接除2就是他的lcm的最小情况,奇数时求暴力求他因子计算lcm的最小情况 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #include<bits/stdc++.h> using namespace std; typedef long原创 2020-07-12 10:02:30 · 138 阅读 · 0 评论 -
牛牛的零食(容斥原理)
思路:用一组样例 5,6,9 区间1——100 答案是 100/8 - 100/lcm(5,8) - 100/lcm(8,6) - 100/lcm(8,9) + 100/lcm(8,6,5) + 100/lcm(8,6,9) + 100/lcm(8,5,9) - 100/lcm(8,5,6,9) 容斥原理,奇数个元素加,偶数个元素减。 #include <cstdio> #include <cstring> #include <algorithm> #include &.原创 2020-07-07 17:25:35 · 253 阅读 · 0 评论 -
奇妙拆分
思路:从小到大枚举数,如果是因数就除去,看最多有多少个。 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' ') #def.原创 2020-06-14 22:14:00 · 196 阅读 · 0 评论 -
AcWing 889 满足条件的01序列(卡特兰数)
思路:将本题转化为从(0,0)坐标起(n,n)为终点坐标的路径中要求每个点的横坐标要大于纵坐标,这样的路径有几条。其为卡特兰数 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar.原创 2020-05-12 17:02:26 · 325 阅读 · 0 评论 -
AcWing 887组合数3(卢卡斯定理)
思路:用卢卡斯定理一直分解到modp对a,b没有影响 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' ') #define enter putchar('\n') ty..原创 2020-05-11 21:52:26 · 203 阅读 · 0 评论 -
AcWing 886(组合数2)
思路:根据上面的公式我们求出n,m的阶乘再利用逆元即可(逆元有个性质简单说一下(不是很专业)假设x是a的逆元,y是b的逆元那么ab的逆元就是xy) #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define sp..原创 2020-05-11 19:37:56 · 345 阅读 · 0 评论 -
AcWing 885(组合数1)
思路:预处理 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' ') #define enter putchar('\n') typedef pair<int ,in.原创 2020-05-11 19:01:40 · 324 阅读 · 0 评论 -
AcWing204. 表达整数的奇怪方式(中国剩余定理)
推导过程 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' ') #define enter putchar('\n') typedef pair<int ,int&.原创 2020-05-10 12:57:36 · 217 阅读 · 1 评论 -
AcWing878(线性同余方程)
思路:ax=b(mod m)=>ax=my+b 此时令y’=-y得ax+my’=b是不是很眼熟呢,可以用扩展欧几里得做了。此时我们用扩展欧几里得算出d=ax+m*y若此时b是d的倍数那么满足条件反之不满足。 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; .原创 2020-05-09 15:42:15 · 281 阅读 · 0 评论 -
AcWing 877(扩展欧几里得)
思路:裴蜀定理,拓展欧几里得 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' ') #define enter putchar('\n') typedef pair<.原创 2020-05-09 13:14:59 · 169 阅读 · 0 评论 -
AcWing 874. 筛法求欧拉函数
思路:质数ii的欧拉函数即为phi[i] = i - 1:1 ~ i−1均与i互质,共i−1个。 phi[primes[j] * i]分为两种情况: ① i % primes[j] == 0时:primes[j]是i的最小质因子,也是primes[j] * i的最小质因子,因此1 - 1 / primes[j]这一项在phi[i]中计算过了,只需将基数N修正为primes[j]倍,最终结果为ph...原创 2020-05-08 12:04:16 · 213 阅读 · 0 评论 -
AcWing 873. 欧拉函数
思路:根据公式去写 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putch...原创 2020-05-08 10:37:56 · 228 阅读 · 0 评论 -
AcWing 871(约数之和)
思路: 根据这个公式去写 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space pu...原创 2020-05-07 12:48:58 · 310 阅读 · 0 评论 -
AcWing 870 约数个数
思路:一个数可以表示有质因数p1^a1* p2^a2 *…pi^ai这个数约数的个数就可以表示为(a1+1)(a2+1)+…(ai+1) #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> usi...原创 2020-05-07 12:32:48 · 216 阅读 · 0 评论 -
AcWing869(试除法求约数)
思路:和试除法求素数是一样的 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space ...原创 2020-05-07 11:39:38 · 231 阅读 · 0 评论 -
Acwing868(素数筛)
埃氏筛 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define space putchar(' '...原创 2020-05-07 11:22:28 · 181 阅读 · 0 评论 -
AcWing867分解质因数
思路:根据算术基本定理,不考虑排列顺序的情况下,每个正整数都能够以唯一的方式表示成它的质因数的乘积。 n=p1^a1 * p2^a2 *p3^a3 … pn^an 这里有个性质:n中最多只含有一个大于sqrt(n)的因子。 #include <cstdio> #include <cstring> #include <algorithm> #include &...原创 2020-05-06 12:07:55 · 388 阅读 · 0 评论