随笔分类 -  算法合集 / 数学

摘要:线性丢番图方程定理 设 a,b 是整数且 gcd(a,b)=d. 如果 d 不能整除 c , 那么方程 ax+by=c 没有整数解, 如果d 可以整除 c, 则存在无穷个解. 另外, 如果 (x0,y0) 是方程的一个特解, 那 阅读全文 »
posted @ 2024-08-06 20:27 o-Sakurajimamai-o 阅读(61) 评论(0) 推荐(0) 编辑
摘要:定义 线性基用于解决类似于: "给定 n 个数, 取任意个数, 使得异或值最大"此类问题 本质上还是求出多个数最大和最小的异或和,由于给出的数目较大, 如果直接一一比较的话时间复杂度较大,可以通过线性基优化, 假如有 n 个, 其中最大的数二进制位数为 m 位, 那么线性基可 阅读全文 »
posted @ 2024-07-30 03:04 o-Sakurajimamai-o 阅读(16) 评论(0) 推荐(0) 编辑
摘要:定义 高斯消元方法 摘自here 给定 n 元一次方程组 \[\begin{cases} a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\ a_{2,1}x_1+a_{2,2}x_2+\cdots+a_{2,n}x_n=b_2\ \cdots\ 阅读全文 »
posted @ 2024-07-25 23:11 o-Sakurajimamai-o 阅读(94) 评论(0) 推荐(0) 编辑
摘要:容斥原理的基本原理是根据集合之间的交来求集合之间的并,以下仅为容斥原理的部分相关习题 https://codeforces.com/problemset/problem/803/F 题意了然,即求出所有符合公共最小公约数为1的序列数目,那么考虑一种特殊情况:只有数字i,很明显他们的最小公约数一定是i 阅读全文 »
posted @ 2024-06-04 14:56 o-Sakurajimamai-o 阅读(59) 评论(0) 推荐(0) 编辑
摘要:这是我做 AtCoder 的时候发现的一个问题,有感而发: 首先,对于任何一个数,我们都能给它做质因数分解,也就是把他们分成一个个质因数的平方乘 现在考虑一个非完全平方数,就假如它分解质因数之后的形式为: 25∗34∗57 那么我们把他的平方数进行模 2 操作之后就变成了: 21∗30∗52 阅读全文 »
posted @ 2024-05-27 21:15 o-Sakurajimamai-o 阅读(29) 评论(0) 推荐(0) 编辑
摘要:扩展欧几里得: 最大公约数 - OI Wiki (oi-wiki.org) int exgcd(int a,int b,int &x,int &y){ if(!b){ x=1,y=0; return a; } int d=exgcd(b,a%b,y,x); int tmp=x; x=y; y=tmp 阅读全文 »
posted @ 2024-04-15 20:58 o-Sakurajimamai-o 阅读(5) 评论(0) 推荐(0) 编辑
摘要:文章借用: 浅谈数论分块 - 洛谷专栏 (luogu.com) 求 i=1nni,其中 n 为常数。 为了方便我们的研究,我使用绘图软件画出了 f(x)=7x(1x7) 的图像,也就是 阅读全文 »
posted @ 2024-03-26 13:00 o-Sakurajimamai-o 阅读(14) 评论(0) 推荐(0) 编辑
摘要:对于矩阵快速幂,其作用能够达到快速递推公式的作用 这里先定义一个矩阵 struct martix{ int x[105][105]; martix(){memset(x,0,sizeof x);} }; 首先看如何进行矩阵计算,由线性代数知: martix cacl(martix a,martix 阅读全文 »
posted @ 2024-03-03 18:24 o-Sakurajimamai-o 阅读(12) 评论(0) 推荐(0) 编辑
摘要:裴蜀定理内容: ax+by=c,xZ,yZ成立的充要条件是gcd(a,b)|cZ表示正整数集。 设s=gcd(a,b),显然s|a,并且s|b 又因为x,yZ 所以s|ax,s|by显然要使得之 阅读全文 »
posted @ 2024-02-29 20:24 o-Sakurajimamai-o 阅读(39) 评论(0) 推荐(0) 编辑
摘要:尼姆(nim)游戏: P2197 【模板】Nim 游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 对于博弈论游戏,如果当前的选手具有控制权的话,那么当前选手是必赢的,也就是当前选手做出的这步选择后,之后的局面都是在其预料之中的,换句话说,先掌握了控制权即赢. 考虑什么情况 阅读全文 »
posted @ 2024-01-29 17:46 o-Sakurajimamai-o 阅读(12) 评论(0) 推荐(0) 编辑
摘要://容斥原理 //时间复杂度O(2^n-1) #include<bits/stdc++.h> #define int long long using namespace std; const int N=2e6+10; int n,m,res,p[N]; signed main() { cin>>n 阅读全文 »
posted @ 2023-08-30 12:21 o-Sakurajimamai-o 阅读(45) 评论(0) 推荐(0) 编辑
摘要://组合数 // O(n^2),预处理递推 //n 1~2e3 #include<bits/stdc++.h> using namespace std; const int N=1e3+10,mod=1e9+7; int n,m,c[N][N]; int main() { cin>>n; for(i 阅读全文 »
posted @ 2023-08-21 18:59 o-Sakurajimamai-o 阅读(63) 评论(0) 推荐(0) 编辑
摘要:E-Math Problem ## 题面翻译 **【题目描述】** 给定两个正整数 nk,您可以进行以下两种操作任意次(包括零次): - 选择一个整数 x 满足 0x<k,将 n 变为 kn+x。该操作每次花费 a 枚金币。每次选择的整数 阅读全文 »
posted @ 2023-08-18 17:06 o-Sakurajimamai-o 阅读(95) 评论(0) 推荐(0) 编辑
摘要:比普通幂运算更快,只需要预处理一些数就可以 普通幂: 1 int res=1; 2 for(int i=0;i<k;i++) 3 res=res*n; 4 return res; 快速幂: //快速幂:https://www.luogu.com.cn/problem/P1226 #include < 阅读全文 »
posted @ 2023-06-21 14:25 o-Sakurajimamai-o 阅读(9) 评论(0) 推荐(0) 编辑
摘要:欧拉函数:指从1-n中与n互质的数的个数 首先要知道,一个数 n 分解质因数之后会变成这样一个形式: np1k1 + p2k2+ ... + pnkn 而欧拉函数: φ= n * (1-1/p1) * (1-1/p2) * ... * (1-1/pn). 证明: 1 阅读全文 »
posted @ 2023-06-21 14:05 o-Sakurajimamai-o 阅读(21) 评论(0) 推荐(0) 编辑
摘要:考试的时候看到这道题一眼前缀和,但是想了想要枚举每个区间是不是复杂度有点高,还是交上去了 不出意外的 TLE 了,想了十来分钟还是没想到怎么优化,考完问了一下大佬,原来用等差数列1ms就能过,听说双指针0ms(蒟蒻的我呜呜) 众所周知等差数列的前 N 项和是 S =a1 *n+(n*(n 阅读全文 »
posted @ 2023-06-20 13:10 o-Sakurajimamai-o 阅读(11) 评论(0) 推荐(0) 编辑
摘要:思路:找规律情况一: 尾数为5或0 为5时进行一次操作变成0的情况。而尾数是 0 时操作无意义,所有数必须相等。情况二:尾数为 1,3,7,9可进行一次操作变成情况三。情况三:尾数为 2,4,6,8我们通过找规律发现: 2⇒4⇒8⇒16⇒22 4⇒8⇒16⇒22⇒24 6⇒12⇒14⇒18⇒26 8 阅读全文 »
posted @ 2023-06-20 11:47 o-Sakurajimamai-o 阅读(38) 评论(0) 推荐(0) 编辑
摘要:C. Even Number Addicts time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Alice and Bob are 阅读全文 »
posted @ 2023-06-14 17:26 o-Sakurajimamai-o 阅读(19) 评论(0) 推荐(0) 编辑
摘要:比较难,没怎么看懂 //约数: //如果一个数d是n的一个约数,即d能整除n,那么n/d也能整除n: //求所有约数(除法求约数,o(sqrt(n))) #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,x; 阅读全文 »
posted @ 2023-06-13 19:53 o-Sakurajimamai-o 阅读(53) 评论(0) 推荐(0) 编辑
摘要:// 最基本求一个素数(on),(osqrt(n)) #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; for(int i=2;i<n;i++)//o(n) if(n%i==0){ cout<<"no"; 阅读全文 »
posted @ 2023-06-13 14:09 o-Sakurajimamai-o 阅读(16) 评论(0) 推荐(0) 编辑

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