摘要:
① 设两个数为m,n(m>n),它们的最大公约数为k,易得 m = a*k, n = b*k,其中a,b均与k不存在约数关系(k=1除外) ②gcd中"m%n"是一步关键操作,设 c = m%n = (a-t*b)*k,其中t属于正整数,然后重复gcd(n,c). ③ 可以发现(a - t*b)在不 阅读全文
摘要:
①乘法逆元 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define e exit(0) #define re register #define LL long long LL n,M; in 阅读全文
摘要:
①DJ #include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; #define e exit(0) #define re register #define inf 21474 阅读全文
摘要:
①并查集 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define e exit(0) #define re register const int M = 10005; int n,m,fa[ 阅读全文
摘要:
短暂的一年OI学习将要告别,回想一年DP从无到有,想总结一番. DP:最优子结构+阶段状态转移. ①:区间DP 其实感觉挺套路的,枚举区间长,L,R,即可. T1:石子合并 sol:从这个题学习到了两点,一个就是拆环为链的技巧,二个就是我们发现要先枚举len,在枚举L,R,len从小到大,这就体现了 阅读全文
摘要:
①:给定正整数N,求满足a+b≤N,a+b|a*b,数对(a,b)的个数,N≤1e14. 我们设d = gcd(a,b).那么a = a'*d,b = b'*d,易得gcd(a',b') == 1. 将a = a'*d与b = b'*d代入a+b | a*b,易得(a'+b' ) | a'b'd. 阅读全文
摘要:
①:给定序列A,求出序列A中本质不同的子序列. sol:①考试中用了容斥,我们发现之所以会产生本质不同的子序列是因为序列中存在相同的数字.用f[i]表示A区间[1,i]本质不同子序列的个数.我们用la[i]表示上一个与val[i]相同的位置.考虑转移,f[i] = f[i-1]+f[i-1]+1.第 阅读全文
摘要:
①前置知识 静态二维前缀和: ①:预处理递推:f[ i ][ j ] = f[ i - 1 ][ j ] + f[ i ][ j -1 ] - f[ i - 1][ j - 1] + val[ i ][ j ]. ②:左上角( X1 , Y1 ),右下角( X2 , Y2),这一段的区间和:f[ X 阅读全文
摘要:
没有太多时间总结,主要是在dalao的这篇博客学习的:传送门. 阅读全文
摘要:
Kruskal Prim DJ: Spfa Trie: LCA( bz ) Treearray: Treearraycf: RMQ: Invfm: Invexgcd: Invdt: Tyfc: bdfc: CRT: jzqsm: prime: GJadd: GJsubtraction: 阅读全文