欧拉筛法
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj2186【Sdoi2008】沙拉公主的困惑 数论:欧拉筛法,线性逆元
求在1到n!范围内,与m!互质的数的数量,由于答案太大,只需计算答案对R取模之后的答案即可,保证R是一个质数 对于30%的数据,n<=10,T<=30 对于60%的数据n<=3000000,T<=10000 对于100%的数据n<=10000000,T<=10000 保证R为质数,m<=n,n < R 题意很简单,,看见n<=10000000就知道要预处理。。 ans=phi(m!)*n原创 2016-08-14 21:20:22 · 327 阅读 · 0 评论 -
bzoj2190 SDOI2008仪仗队
分析:我觉得这题肯定有公式,但是没推出来。。 正解是求解欧拉函数,因为所有能被看见的点横纵坐标必定互质。。#include<iostream>#include<cstring>#include<cstdio>using namespace std;int N,ans;int p[80000],phi[80000],prime[80000];inline void getphi(){原创 2017-04-10 15:50:50 · 301 阅读 · 0 评论 -
bzoj1700[Usaco2007 Jan]Problem Solving 解题
简单但是不错的dp题。 设f[i][j]表示这个月选了i,j的最小月数。 那么可以推导出两种式子: f[j][i]=min(f[k][j-1]+2); f[j][i]=min(f[k][j-1]+1);(满足选完k,j-1以后下个月还可以选j,i) 用前缀和优化一下就好了。#include<cstdio>#include<cstring>#include<iostream>#incl原创 2017-05-30 15:06:45 · 496 阅读 · 0 评论 -
bzoj1718[Usaco2006 Jan] Redundant Paths 分离的路径 边双连通分量
这题想到一半了,最后缩点以后的统计答案挂了= =。。。 题意就不说了,问你加入多少条边能使得所有边都是一个边双。 n有点小了,怀疑有n^2水法。 求出边双以后缩点比较显然,然后我就有点蒙逼了,不知道怎么统计答案。。 想了dp和二分等奇怪姿势,然而好像都没用。 后来看了一波题解才发现是结论= =一棵树,要让他任意两点之间有超过1条路径相连,答案是(叶子节点个数+1)/2。 为啥呢?因为,一原创 2017-06-17 09:50:33 · 588 阅读 · 0 评论 -
bzoj1025[SCOI2009]游戏 DP 置换 筛法
题意:给你一个长度为n的排列,指定每一个数的对应关系,问能有多少种排法。很明显不能直接做,转换成图论模型很显然,直接把对应关系看成边,然后求的就是所有环长度的lcm总数,然后。。。然后我就不是很懂怎么转化了= = 其实这个东西就等价于求一个和为n的数列的lcm种数。。因为环的总长度一定为n。。(其实也可以转化为置换的模型) 那么对于一个排数x,验证他的方法就是对x进行质因数分解,即x=p1a1∗原创 2017-09-26 13:01:55 · 184 阅读 · 0 评论 -
bzoj2705[SDOI2012]Longge的问题 欧拉函数
题意:求∑i=1ngcd(i,n)\sum^{i=1}_{n} gcd(i,n) 这种题目居然也是省选题qwq.. 考虑到n<=1e9,于是不可能直接暴力搞。 直接求出每一种约数的贡献然后直接乘起来就可以了 问题就转化成求每一个约数出现的次数,即∑gcd(i,j)=d\sum gcd(i,j)=d 继续转化就是gcd(i/d,j/d)=1,那么贡献为phi(max(i,j)/d). 但是原创 2017-10-03 14:39:39 · 186 阅读 · 0 评论