【BZOJ 3643】Phi的反函数 数搜索】的更多相关文章

这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝. #include <cstdio> #include <cmath> typedef long long LL; int n; ; const LL Inf=0x7fffffff; LL ans; int len,prime[N]; bool isnot[N]; inline void getprime(){ ; ;i<=lim;i++){ if(!isnot[i])prime[++len]=i; ;p…
我承认开这篇文章只是因为好笑…… 估计Zky神看见3737会很郁闷吧. http://www.lydsy.com/JudgeOnline/problem.php?id=3643 本来想直接交3737改的,后来为了常数党的尊严还是补了最优性剪枝.另有一些若当前n+1是质数了,就直接返回当前值*(n+1)…… 然后又把顺搜改成倒搜,最后20ms…… 毕竟双倍福利. 话说上回好声音在学校边上办演唱会各种打扰,然后某节晚自习突然似乎好像听到一个熟悉的solo. 上厕所的时候飘来一句“Running ov…
3643: Phi的反函数 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 141  Solved: 96[Submit][Status][Discuss] Description Input Output Sample Input 4 Sample Output 5 HINT Source By Zky Solution 首先答案和N一定是同阶的,所以,可以很暴力的线筛扫一遍求解. 然后根据欧拉函数的式子,我们实际上是可以爆搜的. 爆搜他的质因子然…
[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数刚好为K的选取方案有多少个.由于方案数较大,你只需要输出其除以1000000007的余数即可. \[N,K,L,H \leq 10^9,H-L \leq 10^5\] 分析 \(\because \gcd(ka,kb)=k\gcd(a,b)\),我们先把\(L,R\)除以\(K\),然后问题就变成了…
http://www.lydsy.com/JudgeOnline/problem.php?id=3643 因为\[\varphi(n)=\prod_i p_i^{k_i-1}(p_i-1),n=\prod_ip_i^{k_i}\] 直接根据这个式子暴搜即可. #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef l…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3643 [题解] n = p1^a1*p2^a2*...*pm^am phi(n) = p1(p1-1)^(a1-1)*p2(p2-1)^(a2-1)*...*pm^(am-1) 最多有10个不同的质因数就超过maxint了,这告诉我们可以搜索 我们假设p1<p2<p3<...<pm 那么我们处理出<sqrt(n)的质数,因为我们只会用到这些质数来搜(因为其他平方完就爆炸…
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a-1] 的答案.这样就化繁为简了. 具体过程见代码中的注释. 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath>…
题目链接 : BZOJ 1085 题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧. 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS 验证在当前枚举的步数之内能否到达目标状态. 如果不能到达,就枚举下一个步数,重新搜索,即使某些状态在之前的 DFS 中已经搜索过,我们仍然搜索. 并且在一次 DFS 中,我们不需要判定重复的状态. 在 IDA* 中,重要的剪枝优化是 估价函数 ,将一些不可能存在可行解的枝条剪掉. 如果估价函数写得…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1-ret 那么此时的ANS(神秘数)= ret+1 然后考虑,如果此时存在另一个数小于等于 ANS,(设该数为 x) 则一定可以在原来的1-ret的基础上拼出 1-ret+x 即 ANS 可以更新为 ret+x+1 所以具体的操作就是: 每次查询区间内小于ANS的数的和(SUM),然后如果SUM大于A…
Description 小蛇是金融部部长.最近她决定制造一系列新的货币.假设她要制造的货币的面值为x1,x2,x3… 那么x1必须为1,xb必须为xa的正整数倍(b>a).例如 1,5,125,250就是一组合法的硬币序列,而1,5,100,125就不是.不知从哪一天开始,可爱的蛇爱上了一种萌物——兔纸!从此,小蛇便走上了遇上兔纸娃娃就买的不归路.某天,小蛇看到了N只可爱的兔纸,假设这N 只兔纸的价钱分别是a1,a2…aN.现在小蛇想知道,在哪一组合法的硬币序列下,买这N只兔纸所需要的硬币数最少…