数论
文章平均质量分 72
IED98
这个作者很懒,什么都没留下…
展开
-
bzoj2190: [SDOI2008]仪仗队 莫比乌斯反演
这不是裸的反演吗。。。。直接上nlogn的方法#include #include #include #include #include using namespace std; #define maxn 41000 int f[maxn],n; int main() { scanf("%d",&n);n--; for(int i=n;i;i--) {原创 2015-03-20 10:56:48 · 863 阅读 · 1 评论 -
bzoj3043: IncDec Sequence 差分
明显要求最后差分数列除第一项都是0的情况。然而为什么答案是只用统计上升和下降的差分呢???? 有个比较牵强的说法,>0的差分其实是指后面连续一段降的话只需要上升的差分这么多。 而 如果你升高的话只能连续升高,或下降的话只能连续下降。因为上升的话后面所有的数都上升了,如果你再下降的话,就会有重复的多余操作。下降同理。 #include #include #include #include #原创 2015-07-13 12:09:21 · 686 阅读 · 0 评论 -
bzoj2877: [Noi2012]魔幻棋盘 树套数+差分
神题,只能膜拜题解。然后发现了差分这个东西,所谓差分就是sigma{a[i]}=b[i]; a[i]=b[i]-b[i-1];(是不是和辗转相减很像。。。。。) 我们再来看一下二维的怎么做。。然后我们换一种维护的方法。因为题目要求一定会查询到守护者a[x, y],所以我们以(x, y)为原点,建立直角座标系。二维的一样是得差分,对于第四象限的点:b[i, j] = a[i, j] - a[i-1原创 2015-07-13 11:41:18 · 1408 阅读 · 0 评论 -
bzoj2876: [Noi2012]骑行川藏 拉格朗日插值
大神题,依然不知道lyp讲的贪心+调整是怎么搞的。所以还是拉格朗日插值+牛顿迭代求解搞,不懂拉格朗日插值的同学请自行百度,估计NOI再不会考这种结论这么强的题目,所以了解一下就好。还有牛顿迭代法,这个可以学一学,还是蛮好用的,精度也很高。#include #include #include #include using namespace std; #define maxn 11000 d原创 2015-07-13 11:13:20 · 1325 阅读 · 0 评论 -
bzoj2432: [Noi2011]兔农 快速幂+数论
不难发现,这个题就是求斐波那契数列改化,由于有一个很强的结论,斐波那契数列取模是一个周期数列,所以我们可以去找循环节,然后找到循环节后把这第一个循环节处理出来。 其实vfk说的很详细了,注意这里mod的数不一定是个质数,我们只能用拓展欧几里得求逆元。。。。 http://vfleaking.blog.163.com/blog/static/174807634201341721051604/ #原创 2015-07-13 10:14:23 · 1942 阅读 · 0 评论 -
bzoj1407: [Noi2002]Savage
这个题,把式子列出来,就不难发现是个拓展欧几里得求线性解,然后分类讨论一下解得情况就可以了。 #include #include #include #include #include using namespace std; int gcd(int a,int b) { if(a<0) a=-a; if(b<0) b=-b; if(b==0) {原创 2015-07-13 10:01:56 · 814 阅读 · 0 评论 -
bzoj3992: [SDOI2015]序列统计 NTT+快速幂
第一次自己切NTT,感觉NTT就是FFT的取模版本,具体可以看 http://blog.csdn.net/acdreamers/article/details/39026505 讲得很清楚 然后系数本来是可以 预处理出来,时间可以缩很多,但我为了模板的简洁还是在想求系数了。 说了那么多废话,下面我们进入正题:题目最简单的dp可以设做dp[i][j]:前i位积mod m 为j的方案数。由于乘法再原创 2015-07-12 20:05:54 · 3216 阅读 · 0 评论 -
bzoj2179: FFT快速傅立叶 FFT裸题
FFT可以看具体数学 和ACdreamer的博客。 模板果然还是黄学长的短#include #include #include #include #include #include using namespace std; #define maxn 1000000 #define pi acos(-1.0) typedef complex E; int n,m,L; char ch[m原创 2015-07-12 21:29:57 · 821 阅读 · 0 评论 -
bzoj2820: YY的GCD 莫比乌斯反演
给定N, M,求1 以前的容斥原理解法必然TLE,这里就得用到莫比乌斯函数(了解莫比乌斯函数请戳这里) 对于这题而言,枚举质数也会是TLE的节奏。。。 #include #include #include #include #include #include #include #include #include #include #include #defin原创 2015-03-20 13:26:01 · 624 阅读 · 0 评论 -
bzoj2301: [HAOI2011]Problem b 莫比乌斯反演
裸的反演+一个区间的容斥 #include #include #include #include #include using namespace std; #define maxn 50100 bool vis[maxn]; int sum[maxn],mu[maxn],prim[maxn],tot; void init() { mu[1]=1; for(int i=原创 2015-03-20 11:41:24 · 558 阅读 · 0 评论 -
bzoj1101: [POI2007]Zap 莫比乌斯反演
裸的反演,公式网上到处都是自行yy。#include #include #include #include #include using namespace std; #define maxn 51000 bool vis[maxn]; int sum[maxn],prim[maxn]; short mu[maxn]; int tot; void init() { mu[1]=1原创 2015-03-20 11:40:06 · 686 阅读 · 0 评论 -
bzoj2005: [Noi2010]能量采集 莫比乌斯反演
直接求出函数值加个系数就可以了。。。#include #include #include #include #include using namespace std; long long f[110000]; int n,m; long long ans; int main() { scanf("%d%d",&n,&m); if(n>m) swap(n,m); f原创 2015-03-20 11:18:41 · 1189 阅读 · 0 评论 -
bzoj1257: [CQOI2007]余数之和sum
直接按取整相同的数分块就可以了,可以证明不会大于sqrt(n)块。 #include #include #include #include #include using namespace std; long long n,k,pos; long long ans; int main() { scanf("%lld%lld",&n,&k); long long tmp=原创 2015-03-20 11:38:17 · 560 阅读 · 0 评论 -
bzoj3629: [JLOI2014]聪明的燕姿 搜索好题
题目大意:令f(x)=Σi (i|x) 给定n,求所有的x,使f(x)=n 首先约数和公式 令n=p1^a1*p2^a2*...*pk^ak 则f(n)=(1+p1+p1^2+...+p1^a1)*(1+p2+p2^2+...+p2^a2)*...*(1+pk+pk^2+...+pk^ak) 于是我们枚举质数p,采取DFS的方式求出所有值#include #include #inclu原创 2015-07-13 12:41:08 · 600 阅读 · 0 评论