随笔分类 - ACM
大二到大三不堪回首的记忆....
摘要:原题链接 考察:容斥原理 迷惑数据,108x15,我寻思这不要高精度?结果网上全是long long就过了... 思路: 观察发现如果能完成任务,那么n+1数字里至少有一对gcd是1,这样不好考虑,但碰到"至少一对"这种词语可以考虑补集思想,即没有一对公约数为1.这样就转化成求M的质因数...然后计
阅读全文
摘要:原题链接 考察:容斥原理 入门题,我WA了两次... 坑点: m集合里有0,请务必看清题目做题 res是集合的最小公倍数,if判断条件也要改成最小公倍数... 其他的就是acwing的模板题改改部分代码即可 1 #include <iostream> 2 #include <algorithm> 3
阅读全文
摘要:原题链接 考察:容斥原理 思路: 很容易想到筛质数,然后枚举质数2k 3k 5k ...但是如果从指数的取值范围考虑,最小是2,那么最大取到109 这样必定会TLE. 换个思路,如果从指数方面考虑,x2 x3 x5 .那么1~N中,最多有N1/k 个k√ N 个取到k次方的数.因为260 > 1e1
阅读全文
摘要:原题链接 考察:暴力枚举 完全是因为有容斥原理才做了这题,结果这题和容斥原理有啥关系... 思路: dfs枚举所有可能性 1 #include <iostream> 2 #include <algorithm> 3 #include <set> 4 #include <vector> 5 using
阅读全文
摘要:原题链接 考察:容斥原理+埃氏筛+质因数分解 思路: gcd(x,y) = k 等价于gcd(x/k,y/k) = 1.设 u = x/k,v= y/k.找出范围内u与v互质的对数. 这里可以用欧拉函数做,枚举1~d/k每一个数i.如果i在b/k范围内就是欧拉函数值,如果>b/k就是该欧拉函数值-b
阅读全文
摘要:原题链接 考察:欧拉降幂+中国剩余定理+lucas求组合数 思路: 本道题的答案求出幂后快速幂一下即可,所以主要是求幂,由欧拉降幂可知,我们的幂是需要%phi[mod]的.但mod=999911659,是一个质数,mod-1后是一个合数.设此合数为M,我们需要找的就是组合数和%M.但本题直接求组合数
阅读全文
摘要:原题链接 思路全是看算法竞赛进阶指南,我自己是不会做这题的... 很详细的题解GO 解释一下为什么答案要乘上多重集排序的公式. 假设一个序列 2 3 4 5 6 1. 我们将5和 3互换,就可以得到 2 5 6 1和 4 3两个自环,答案的Fx*Fy是将这两个自环整理为有序的序列.形成 1 2 5
阅读全文
摘要:原题链接 考察:卡特兰数 错误思路: 将答案当成卡特兰数的前缀和.这种答案是到达i点后,机器人完全不动,但此时可能步数还未用完 正确思路: 机器人向右是卡特兰数的向右,机器人向左是卡特兰数的向上.这就是模拟进出栈,y=x上方代表出栈数>入栈数.但这里我们还需要计数不走的方法数 设我们向右走了a步,总
阅读全文
摘要:原题链接 考察:卡特兰数 错误思路: 利用Cn2n /n+1 的公式求解.本蒟蒻没搞懂Y总推的公式,这个公式是在取模意义下,求(n+1)的逆元再求.而不是求完组合数/n+1... 如果是累加的话,需要每个都求n+1的逆元.但是这道题,不能用这个公式,因为与100一起求exgcd的数未必gcd=1,如
阅读全文
摘要:原题链接 考察:高斯消元or递推+枚举 写过这种基本一样的题的题解= = ,看了大佬博客还能用高斯消元写,虽然是入门题但这操作我属实没想到= = 思路: 如果要用高斯消元写,首先我们需要构造系数矩阵.较容易想到解就是按灯的次数.那么系数就是按这个灯对当前灯是否有效.等式右边是原灯状态.因为按灯效果要
阅读全文
摘要:原题链接 考察:枚举+质数筛 错误思路: 通过观察很容易发现指数必须是合数,筛出质数,用质数为底数快速幂求幂后的结果insert进set 这个思路有几个错误点: 合数也可以是底数 如68 这个用质数快速幂是求不出来的(思路不完全...) 不能用快速幂求结果,这样不能判断是否溢出 正确思路: 一个一个
阅读全文
摘要:原题链接 基本是抄lnj老师的代码,这种方法本蒟蒻就是被打死都想不出来= = 错误思路: 枚举每一种组合,代入模板求解,将解排序输出 这种思路主要错在两个地方: k<=100,C<=9.最多有1009种枚举方式.TLE 枚举的组合数<要求输出的解数.此时我们需要对解+res直到解足够.但解必须是有序
阅读全文
摘要:原题链接 考察:中国剩余定理+龟速幂(这个用不用均可) 是裸题,记录一下关于中国剩余定理的坑点 最后相乘有爆long long的可能 龟速幂要注意b不能为负的问题 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 u
阅读全文
摘要:原题链接 考察:扩展中国剩余定理 关于本题的exgcd(a1,-a2)与exgcd(a1,a2).得到的解和最小公倍数不同.但得到的解*(m2-m1)/gcd(a1,a2)最后结果又会化为相同. 如果用exgcd(a1,-a2),下面求a1就需要将他fabs,求解需要a1来得到最小正整数解. 个人理
阅读全文
摘要:原题链接 考察:思维+二分 错误思路: 根据分析可以发现当n为5的倍数时,n!会多>=1个0.如果n能分解k个5.那么会在(n-5)!的基础上多k个0.看到这里可能会想到前缀和预处理,但是当n=1e8时,它的0还未到1e8个.如果用数组存储会MLE. 正确思路: 不能预处理只能每个每个地算,但是每次
阅读全文
摘要:原题链接 考察:高精除 为什么在数论题单看见这道题... 坑点: 本蒟蒻WA一次的原因可能是存在多个负号的坑爹数据,改了这个AC了..不太清楚是不是因为改了别的地方 1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4
阅读全文
摘要:原题链接 考察: 质数筛+分解质因数 但我觉得考察的应该是分情况处理的能力 n>0,被唯一的质数分解 直接输出答案即可 n>0,被多个质数分解(完全没想到还有这种数据) 输出的答案应该是最小的指数 n<0,被唯一质数分解. 且指数为奇数. 这正好处理了负号问题,直接输出即可 n<0,被唯一质数分解.
阅读全文
摘要:原题链接 考察:打表+思维 直接开1e8的数组预处理会MLE. 所以需要压缩打表.每100存储一次. 预处理的时候看大佬有更好的方法,eg:用一个变量接收1~99之间的和,到%100==0时再赋值给数组 1 #include <iostream> 2 #include <algorithm> 3 #
阅读全文

浙公网安备 33010602011771号