定理

1.Chicken McNugget Theorem:两个互质的数n,m。
x = a ∗ m + b ∗ n 。 a > = 0 , b > = 0 x=am+bn。a>=0,b>=0 x=a∗m+b∗n。a>=0,b>=0
其中不能构造的最大的数是 n ∗ m − n − m ,大于 n ∗ m − n − m 的数,都可以通过m和n构造出来。

2.计算矩形个数:n * (n + 1) * m * (m + 1) / 4

3.计算集合中任意两数之差的总和:
(需要递增排序)(求曼哈顿距离总和时可以用到)
for(int i = 2; i <= n; i ++)
{
ans += (i - 1) * (a[i] - a[i - 1]); //(i - 1)是指前面有多少个数, (a[i] - a[i - 1])是当前数减去后面一个数
}

如:x1,x2,x3,x4;
求和后为 (x4 - x1) + (x4 - x2) + (x4 - x3) == |x1 - x2| + |x1 - x3| + |x1- x4| + |x2 - x3| + |x2 - x4| + |x3 - x4|

4.计算数列中逆序对总数:n! / 2 * (数列中不同对儿数)
如全排列的逆序对数:n! / 2 * n * (n - 1) / 2

posted @ 2022-10-29 16:32  nobodyL  阅读(148)  评论(0)    收藏  举报