bzoj 1225 dfs + 一点点数论】的更多相关文章

思路:有一个公式  如果 x = a1 ^ b1 * a2 ^ b2 * ...... * an ^ bn 其中ai为质数,那么总共的因子个数为 (b1 + 1) * (b2 + 1) *....* (bn + 1), 可得最多只和前16个质数有关,那么我们dfs暴力枚举每个质数的指数个数,注意因为值很大,所以比较过程用了log,后面上个大数输出. import java.math.BigInteger; import java.util.*; public class Main { stati…
15 < log250000 < 16, 所以不会选超过16个质数, 然后暴力去跑dfs, 高精度计算最后答案.. ------------------------------------------------------------------------------ #include<cstdio> #include<algorithm> #include<cstring> #include<cmath>   using namespace…
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 题解: 可以证明,$1 \sim N$ 中最大的反质数,就是 $1 \sim N$ 中约数个数最多的数中,最小的那个. 证明:假设 $1 \sim N$ 中最大的反质数 $x$ 不是 $1 \sim N$ 中约数个数最多的,那么必然存在至少一个不等于 $x$ 的数字 $y$,它是 $1 \sim N$ 中约数个数最多的数中最小的,显然有 $g(y) > g(x)$. 那么,分类讨…
中国剩余定理+原根+扩展欧几里得+BSGS 题解:http://blog.csdn.net/regina8023/article/details/44863519 新技能get√: LL Get_yuangen(LL p,LL phi){ ; ;i*i<=phi;i++) ) f[++c]=i,f[++c]=phi/i; ;;g++){ int j; ;j<=c;j++) ) break; ) return g; } ; } 求原根 void Split(int x){ num=; ;i*i&…
3505: [Cqoi2014]数三角形 Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits   Description…
这个题多了一个操作难度直线上升,看完题解才会写 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a .操作 3 :询问某个节点 x 到根的路径中所有点的点权和. 按照题意:记录其DFS序,然后进栈是正,出栈为负,利用线段树进行更新 #include <stdio.h> #include <string.h> #include <iost…
3834: [Poi2014]Solar Panels Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 367  Solved: 285[Submit][Status][Discuss] Description Having decided to invest in renewable energy, Byteasar started a solar panels factory. It appears that he has hit the go…
2819: Nim Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2045  Solved: 795[Submit][Status][Discuss] Description 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取.谁不能取谁输.这个游戏是有必胜策略的.于是vfleaking决定写一个玩Nim游戏的平台来坑玩家. 为了设计漂亮一点的…
首先我们可以做一遍dfs,用一个队列记录每个点进出的顺序,当每个点访问的时候que[tot++]=x,记为in[x],当结束dfs的时候que[tot++]=x,记为out[x],这样处理出来的队列,如果我们将一个数的进队赋值为1,出队赋值为-1,那么假设我们需要询问1-x的链中共有多少个点,答案就是这个队列前int[x]项,所以我们开始dfs1处理出来in,out数组,然后用树状数组维护这个队列,就行了. /*******************************************…
题意 \(T\)组数据,每次询问第\(k\)个无平方因子的数(\(1\)不算平方因子),\(T\leq 50,k\leq 10^9\) 题解 \(k\)的范围很大,枚举肯定不行,也没什么奇妙性质,于是可以想到二分. 二分的话我们需要实现一个函数\(f(n)\)表示\(n\)以内的数中无平方因子的数个数 这十分经典,相当于求\(f(n)=\sum_{i=1}^n\mu^2(i)\) 解法就是:我们考虑一个质数\(p\),\(p^2\)的倍数都不满足要求,也就是说答案得减去\(\lfloor \fr…