Icefox的博客

生活不止眼前的苟且,还有诗和远方。

bzoj4197 [Noi2015]寿司晚宴(数学+状压dp)

首先考虑n<=30怎么做,没几个质因子,状压掉 然后n<=100,状压着有点费劲,各种优化,比如*2>n的质因子肯定是贡献3倍答案,*3>n的质因子可以讨论一下也不压进状态里,然后就可以卡过去了 这启发了我...

2018-06-25 13:26:42

阅读数:23

评论数:0

luogu4714 「数学」约数个数和(组合数学+miller_rabin判素数)

luogu6月月赛E。 当时绝对是脑抽了 其实O(wK)O(wK)O(wK)的暴力递推还是可以写的呀… 令n=∏pqiin=∏piqin=\prod p_i^{q_i} 我们发现可以分开讨论每一个pqiipiqip_i^{q_i},最后乘起来就好了,且只跟次数q有关 设f[k][q]f[...

2018-06-23 17:43:10

阅读数:77

评论数:0

bzoj4522 [Cqoi2016]密钥破解(pollard-rho大数分解+逆元)

其实就是把大数n分解了,再exgcd求个逆元。 #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define ld...

2018-05-28 23:00:12

阅读数:67

评论数:0

bzoj5358 [Lydsy1805月赛]口算训练(分解质因数+主席树/二分)

给定一个序列,求[l,r]的数的乘积是不是d的倍数。 我们考虑给d分解质因数,如果对于每个质因数这个区间内的个数都大于它的次数,那么就是d的倍数。而1e5以内的数最多有6个不同的质因数。 我们考虑给每个数分解质因数,维护区间和即可。我写的主席树。 其实也可以直接对于每种质因数记下它每一次出现...

2018-05-27 22:23:12

阅读数:74

评论数:0

bzoj4891 [Tjoi2017]龙舟(pollard-rho+素数检测)

这题主要问题在于我们要求一个大数对大数的逆元。 我们考虑把大模数分解质因数之后就可以O(mlogV)O(mlogV)的上下约分,然后看分母是否和大模数互质,以判断是否存在逆元。然后这个大数如何质因数分解呢?我们可以用pollard-rho+miller-rabin来做。复杂度O(n1/4)O(n...

2018-04-18 14:48:32

阅读数:99

评论数:0

CF225E Unsolvable(数论)

z需要满足的条件就是z=2t−1z=2^t-1,且t+1t+1是梅森素数。 梅森素数就是满足2p−12^p-1为素数的素数p。

2018-03-10 23:35:12

阅读数:230

评论数:0

CF512C Fox And Dinner(数学+二分图+最大流)

%%%Elijahqi,秒题的神犇。 首先我们发现,如果两个数的和是质数,则一定是一奇一偶,所以环一定是偶环,我们可以根据奇偶性黑白染色,变成一张二分图。题目保证环的大小一定大于等于3,所以每个点的度一定是2。那么我们就可以直接建图跑最大流来判断是否可行了。S向白点建边,容量为2,黑点向T建边,...

2017-12-23 23:07:41

阅读数:177

评论数:0

NOIP2009提高组

2009提高 A.潜伏者(模拟) B.Hankson 的趣味题(素数筛+数论+分解质因数) a1,a2的最大公因数为a0,则对于每一个质因子,他在a0中的指数为a1,a2中的最小值,即反过来,如果a1中的指数为x1,a0中的指数为x0,x1>x0,则a2中的指数x2必为x0.如果x1=...

2017-11-16 17:21:30

阅读数:187

评论数:0

bzoj3751【2014提高】解方程(数论+筛法+枚举)

这题强啊。。。蒟蒻弱到去写带负数的高精度了,结果玩挂。 因为数无比的大,所以我们发现给两边都模个数好了hh。为了更准确些,让他们摸个大质数吧!一个正确性还不太够,多模几个吧!于是诞生了正解。读入的时候就顺道都模了,我这里是用了三个质数。然后枚举x,带入,用秦九韶公式计算,判断是否得0.如果模3个...

2017-10-22 22:58:41

阅读数:95

评论数:0

luogu1125【2008提高】笨小猴(素数)

还脑残的WA一发。。。蒻死了。

2017-09-01 21:34:18

阅读数:153

评论数:0

luogu1218 [USACO1.5] Superprime Rib(搜索+素数判断)

#include <cstdio> #include <cstring> int n; bool isprime(int x){ if(x==1) return false; for(int i=2;i*i<=x;++i) if(x%i...

2017-08-26 17:44:07

阅读数:156

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭