数学知识
青衫客36
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Acwing 891. Nim游戏
显然,ai ^ x < ai(因为x的最高一位1在第k位),两者异或后,把ai的第k位1给消成0了。③ a1 ^ a2 ^ ... ^ an = 0,不管怎么去拿,拿完之后所有数的异或值一定不是0。然后,我们在ai那一堆拿走ai - (ai ^ x)个石子,此时这一堆剩余ai ^ x个石子。① 当一个石子都没有(每一堆石子都是0时),0 ^ 0 ^ 0 ^ ... ^ 0 = 0。所以,必然存在一种方式,拿完一堆石子后,使得剩下的所有数异或起来为0。假设x的二进制表示中,最高一位1在第k位,由此推出,原创 2022-09-24 08:47:06 · 813 阅读 · 0 评论 -
Acwing 893. 集合-Nim游戏
设G1, G2, ..., Gm 是m个有向图游戏。定义有向图游戏G,它的行动规则是任选某个有向图游戏Gi,并在Gi上行动一步。G被称为有向图游戏G1, G2, ..., Gm的和。在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1, y2, ..., yk,定义。mex(S) = min{x}, x属于自然数,且x不属于S。设S表示一个非负整数集合。,即SG(G) = SG(s)。原创 2022-09-24 22:09:02 · 214 阅读 · 0 评论 -
Acwing 892. 台阶-Nim游戏
①当后手移动偶数台阶上的石子时,先手只需将对手移动的石子继续移到下一个台阶,这样奇数台阶的石子相当于没变,于是留给后手的又是奇数台阶异或为0的状态。先手时,如果奇数台阶异或非0,根据经典Nim游戏,先手总有一种方式使奇数台阶异或为0,于是先手留了奇数台阶异或为0的状态给后手。②当后手移动奇数台阶上的石子时,留给先手的奇数台阶异或非0,根据经典Nim游戏,先手总能找出一种方案使奇数台阶异或为0。因此无论后手如何移动,先手总能通过操作把奇数异或为0的情况留给后手,当奇数台阶全为0时,只留下偶数台阶上有石子。转载 2022-09-25 10:26:16 · 226 阅读 · 0 评论 -
Acwing 894. 拆分-Nim游戏
因此需要存储的状态就是sg(b[i])^sg(b[j])(与集合-Nim的唯一区别)相比于集合-Nim,这里的每一堆可以变成小于原来那堆的任意大小的两堆。即a[i]可以拆分成(b[i],b[j]),相当于一个局面拆分成了两个局面,原创 2022-09-25 11:02:57 · 763 阅读 · 0 评论 -
组合数学-鸽巢原理
中国剩余定理证明笔记。原创 2023-01-29 12:15:10 · 237 阅读 · 0 评论 -
Acwing 890. 能被整除的数
对于{S1 U S2 U S3 U ... U Sn}中的任意一个元素x,证明在等式右侧只被计算一次。每一个交集的元素个数,计算时的时间复杂度是O(k),因为要做k次乘法。上述证明中假设x属于k个集合,推出x会被计算的次数。使用容斥原理的时间复杂度是O(2^m)注:Si是指1~n中i的倍数的个数。注:|S|表示集合S中的元素个数。原创 2022-09-24 11:43:43 · 273 阅读 · 0 评论 -
Acwing-3132. 食物
【代码】Acwing-3132. 食物。原创 2023-01-28 16:07:45 · 111 阅读 · 0 评论 -
Acwing-4729. 解密
如果dt小于0,或者r不是整数,或者m - r是奇数的话(m - 2 与 m + 2 的奇偶性相同),那么方程无解,输出NO。原创 2023-01-23 21:46:03 · 129 阅读 · 0 评论 -
Acwing-4644. 求和
观察题目中的公式,我们发现该式可扩充为(a1 + a2 + a3 + ... + an) ^ 2 这种完全平方的形式,然后减去扩充的那部分即为题中所求公式的值。应用前缀和的思想,让a[i]乘以它前面的所有数即可,即。暴力解法,TLE了hh~原创 2023-01-08 22:40:41 · 114 阅读 · 0 评论 -
Acwing-4366. 上课睡觉
我们可以枚举每一个cnt的取值能否取到,然后在所有可以取到的范围里面,找到一个操作数量方案最少的一个,最后每一堆石子的个数是cnt个的话,则一共有sum / cnt 堆,初始的时候有n堆,每操作一次会减少一堆,所以我们最终的操作数量是n - (sum / cnt),我们希望这个数越小越好,所以应该让cnt越小越好,所以本题我们就是要找到一个最小的cnt(cnt为最终每一堆石子的数量),使得可以取到。假设最终答案为每堆石子均为cnt个,cnt一定可以整除sum(石子的总数),我们可以依次枚举答案。原创 2023-01-04 19:45:05 · 142 阅读 · 0 评论 -
4261. 孤独的照片
我们发现要枚举的子串它其中有一个字母只出现一次,所以,我们可以去枚举只出现一次的字母是哪个,假设在第i个位置的字母为G,我们要枚举包含这个字母的,且只包含一个G的,且长度大于等于3的子串的数量,依次统计每个位置,然后累加起来就是答案。每一个满足要求的字符串它一定只包含一个只出现一次的字母,所以,我们枚举只出现一次的字母就可以不重不漏的涵盖每一个要统计的答案。① 假设左右两边至少包含一个H,左边可以包含1-L个H,右边可以包含1-R个H,根据乘法原理,共L * R个。原创 2023-01-02 21:13:06 · 199 阅读 · 1 评论 -
Acwing-873. 欧拉函数
【代码】Acwing-873. 欧拉函数。原创 2022-12-13 21:16:06 · 145 阅读 · 0 评论 -
Acwing-877. 扩展欧几里得算法
【代码】Acwing-877. 扩展欧几里得算法。原创 2022-12-13 20:32:03 · 217 阅读 · 0 评论 -
Acwing-872. 最大公约数
【代码】Acwing-872. 最大公约数。原创 2022-12-13 19:55:50 · 444 阅读 · 0 评论 -
Acwing-870. 约数个数
【代码】Acwing-870. 约数个数。原创 2022-11-17 17:08:46 · 183 阅读 · 0 评论 -
Acwing-869. 试除法求约数
从小到大判断,如果当前数能整除这个数的话,说明这个数是当前这个数的约数,可以用类似试除法的思路进行优化,如果d能整除n的话,那么(n/d)也能整除n,所以,一个数的约数是成对出现的,那么我们在枚举时,就只枚举较小的那一个约数就可以了,较大的那个约数可以直接算。原创 2022-11-17 16:32:13 · 237 阅读 · 0 评论 -
Acwing-52. 数组中出现次数超过一半的数字(摩尔投票法)
从前往后遍历,每次遇到一个数,若cnt=0,则把cnt置为1,把val置为这个数;如果cnt不为0的话,如果当前数nums[i]与val相同,就把cnt++;如果当前数nums[i]与val不同,就把cnt--我们使用两个变量,val表示当前这个数,cnt表示这个数出现了多少次。走到最后时,val存的就是要求的那个数。此算法名为摩尔投票法。原创 2022-11-14 16:29:49 · 197 阅读 · 0 评论 -
Acwing-27. 数值的整数次方
时间复杂度:假设指数是 n,则一共会循环 O(logn)次,所以时间复杂度是 O(logn)。注意当指数是负数时,我们需要先取指数的绝对值,最后将乘积的倒数作为答案。由于本题的指数是int范围,可能很大,所以需要用快速幂求解。原创 2022-10-27 15:46:33 · 163 阅读 · 0 评论 -
Acwing-875. 快速幂
先预处理出来,每一个数都是上一个数的平方模p,所以我们从前往后平方k次就能把这logk个数预处理出来了。预处理完之后,我们就把a^k分成前面这若干个数的乘积就可以了。其实就是把k拆成若干2的次幂相加(也就是看一下k的二进制表示里面哪些位是1,把这些1对应的位,乘起来就可以了)。我们的目标是把a^k拆成前面预处理出来的若干数的乘积,(就是把k拆成若干2的次幂之和)快速幂的核心是反复平方法。原创 2022-10-27 15:30:44 · 413 阅读 · 0 评论 -
LeetCode-剪绳子
本题可以抽象为整数划分的问题,给我们一个整数,然后我们把它划分为更小的若干个正整数的和,使得划分出来的这些正整数乘积最大。结论:将整数N把它分成尽量多的3,如果最后剩下一个2的话,就拆分出来一个2,如果剩下两个2的话就拆分为两个2。如果N%3==0,那就把它拆分为若干个3,如果N%3==1,先拆出两个2,剩下的全部分成3,如果N%3==2,先拆出一个2,剩下的全部分成3。原创 2022-10-27 13:52:13 · 250 阅读 · 0 评论 -
Acwing 868. 筛质数
如果 p 大于 i 的最小质因数,那 i 还是 t 的最大因数嘛?显然不是,任何一个合数都能唯一分解为有限个质数的乘积,除去这其中最小的质因数,其他的都乘起来就是最大因数 i。对于任意一个数p而言,如果它没有被删掉,就意味着从2~p-1中的任何一个数都没有把p删掉,说明p不是2~p-1中任何一个数的倍数,说明2~p-1中不存在任何一个p的约数,所以说,p是一个质数。因为如果 p 是合数,那么 i 就一定不是 t 的最大因数,因为 p可以再拆成若干素数相乘,这些素数再与 i 相乘会使因数更大。转载 2022-09-29 15:09:31 · 298 阅读 · 0 评论 -
Acwing 867. 分解质因数
答:i如果是合数的话,合数可以分解成多个质数相乘,而这多个质数一定比i小且都为n的因子,但比i小的数在之前就应该被除掉了,所以i一定是一个质数。(合数会被质数筛掉)由于n中最多只包含一个大于sqrt(n)的质因子(反证法,如果有两个大于n的质因子,则乘积大于n,矛盾,所以最多只包含一个)上述代码需要注意一点:为什么i是从2循环到n呢?不应该是找所有的质数嘛?由此,我们可以将时间复杂度由O(n)降低到O(sqrt(n))原创 2022-09-29 12:39:54 · 308 阅读 · 0 评论 -
Acwing 866. 试除法判定质数
sqrt函数的话,运行效率有点低,i * i原创 2022-09-29 12:04:55 · 182 阅读 · 0 评论
分享