~小结论~

Posted thusloop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了~小结论~相关的知识,希望对你有一定的参考价值。

1+1/2+1/3+1/4+1/5+…………+1/n=ln(n)+C (C=0.5772156649)
gcd(lcm(a1,a2),lcm(a1,a3),lcm(a1,a4),…,lcm(a1,an))=lcm(a1,gcd(a2,a3,a4,…,an)
x+y=x|y+x&y
(a^ b)=(a&b)^(a|b)



莫比乌斯反演

(l,r)区间lca是区间dfs序最大的点和区间dfs序最小的点的lca
最小循环节长度 n-Next[n] (kmp)
如果一个图不存在奇数环,那么一定是一个二分图

逆序对:1~n排列 奇数次交换任意2元素逆序对个数为奇,偶数次交换逆序对个数为偶;
交换相邻2元素使其有序的最小交换次数为逆序对个数

若 a%m=b%m 则(a-b)%m==0

长度至少为 5 的序列包含长度为 3 的非递减或非递增子序列

错排:f[1]=0;f[2]=1;f[i]=(i-1)(f[i-1]+f[i-2]);
卡特兰数 f[i]=f[i-1]
(4i-2)/(i+1) C(2n,n)-C(2n,n-1)
默慈金数 f[i]=((2
i+1)f[i-1]+3(i-1)*f[i-2])/(i+2)

若gcd(a,b)=1,则 ax+by最大不能构成的数为a*b-a-b;
重构树: 原图中两个点之间的所有简单路径上最大边权的最小值 = 最小生成树上两个点之间的简单路径上的最大值 = Kruskal 重构树上两点之间的 LCA 的权值。

三角形面积:(xi,yi),(xj,yj),(xz,yz)

vector<int>().swap(v);//释放vector内存
v[x].insert(v[x].end(),v[it].begin(),v[it].end());//2个vector 合并

快速乘

int mul(int a,int b,int p)

	int x=(LD)a*b/p;//#define LD long double
	return ((a*b-x*p)%p+p)%p;//#define int long long

绕点的旋转公式:(例题:Opposite)
圆心(xm,ym)
x=(x0−xm)∗cos(a)−(y0−ym)∗sin(a)+xm
y=(x0-xm)∗sin(a)+(y0−ym)∗cos(a)+ym

LGV (有向无环图)
A集合到B集合路径不相交的种类数
e(Ax,Bx) 为Ax到Bx的路径的种类数

范德蒙行列式


树状数组区间修改


枚举子集

for (int j = x; j>=0; j = (j - 1) & x) 
        // j是x的子集
        if(j==0)break;


int128 输入输出

inline void read(__int128 &X)

	X = 0;
	int w=0; char ch=0;
	while(!isdigit(ch)) w|=ch=='-';ch=getchar();
	while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
	if (w) X = -X;

void print(__int128 x)

	if (!x) return ;//0特判
	if (x < 0) putchar('-'),x = -x;
	print(x / 10);
	putchar(x % 10 + '0');

        int **a;
		a=(int**)malloc(sizeof(int**)*(n+10));
		for(int i=0;i<=n+1;i++)
		
			aa[i]=(int*)malloc(sizeof(int)*(m+10));
		
		for(int i=0;i<=n+1;i++)
		for(int j=0;j<=m+1;j++)a[i][j]=0;

以上是关于~小结论~的主要内容,如果未能解决你的问题,请参考以下文章

省选模拟4

方格计数

Ancient Berland Circus CodeForces - 1C

自定义控件圆形时钟

~小结论~

[合集]数论小结论(五分钟弃坑系列)