- 博客(18)
- 收藏
- 关注
原创 欧拉函数详解
前言关于这东西,我们都是几百年前就接触了。虽然说这东西现在看来很简单了,但是有些公式的证明也不简单,在此做个详解。定义在数论,对正整数n,欧拉函数(Euler’s totient function)是小于或等于n的正整数中与n互质的数的数目。严谨地,φ(n)=∑ni=1δgcd(i,n)1φ(n)=∑i=1nδgcd(i,n)1\varphi(n)=\sum_{i=1}^...
2018-08-25 17:33:00 1115 1
原创 【JZOJ4732】【NOIP2016提高A组模拟8.23】函数(线筛求欧拉函数+Pollard_Rho大数分解)
Problem定义一个函数f(x),定义域和值域均为N∗N∗N^*,且满足∑d|nf(d)=n∑d|nf(d)=n\sum_{d|n} f(d)=n。现给定N个幸运数字A1,A2,...,AnA1,A2,...,AnA_1,A_2,...,A_n,求∑ni=1f(Ai)∑i=1nf(Ai)\sum_{i=1}^n f(A_i)。HintSolution解谜f(x)...
2018-08-25 16:56:28 253
原创 Pollard_Rho大数分解学习小记
前言该算法用于对大数进行质因子分解。它的核心思想是:对于一个数N,若N不为质数,设N=c*d(c、d均大于1),我们找到一个c,递归分解c和d。生日悖论一个班有k个同学,至少有两名学生的生日是同一天的概率P是多少?正难则反,考虑容斥。P=1-任意两名学生的生日都不同的概率。k=1,P=0k=1,P=0k=1,P=0k=2,P=1−1∗364365k=2,P=1−1∗3...
2018-08-24 16:50:02 756 1
原创 Miller_Rabin素性测试学习小记
问题给出一个正整数n,判断它是不是质数。有一个简单暴力的方法:试除法,从2枚举到n−−√n\sqrt n,如果有一个数能整除n,则表明n为合数。但这么做的时间复杂度是O(n−−√)O(n)O(\sqrt n)的,当n的规模达到1016101610^{16}甚至更高时,基本上就会跑1s以上了。有什么更快的方法?费马小定理通过费马小定理我们知道,对于一个质数p,有:ap−1≡1...
2018-08-24 14:40:50 728
原创 【JZOJ5840】【省选模拟2018.8.22】Miner(思维+欧拉回路)
Problem 给定一张n(≤105)n(≤105)n(≤10^5)个点、m(≤105)m(≤105)m(≤10^5)条边的无向图(可能存在自环和重边,图可能不连通)。小C可任选起点开始,进行以下操作的一个:0 v,选择一条相邻的还未经过的边走到v1 v,传送到点v小C要走一个欧拉路径。求最小传送次数,并给出一种方案。Solution先考虑如何求答案(最少添加多少条边...
2018-08-22 20:02:26 207
原创 【JZOJ5836】【省选&A组模拟2018.8.21】Sequence(DP+贪心+矩阵乘法优化)
ProblemHintSolution算法I:dfs+DP考虑一下暴力怎么做。我们可以O(km)O(km)O(k^m)暴力dfs出后面填的m个数。此时,问题就转化成了快速计算一个序列本质不同的子序列个数。考虑DP。设f[i][j]表示前i个数,以j这个数值结尾的方案数。假设第i位为x,则对于∀j≠x,f[i][j]=f[i−1][j]∀j≠x,f[...
2018-08-21 19:57:20 225
原创 【JZOJ4424】【HNOI2016模拟4.2】道路(DP+组合数学+二项式展开)
Problemn(≤50)个点,初始时没有边。要建造若干边,使得其联通。对于一个方案,若其有k条边,对答案贡献为k2k2k^2。Solution首先,假设对答案贡献为k0k0k^0怎么做(即求方案数)。设f(n)表示n个点,要求联通的方案数;设g(n)表示不要求联通的方案数。显然有:g(n)=2C2ng(n)=2Cn2g(n)=2^{C_n^2}。考虑容斥。f(n)=...
2018-08-20 22:37:28 168
原创 【JZOJ4419】【GDOI2016模拟4.2】hole(四~三维偏序问题)
Problem给出n次事件,每次事件给出三个非负整数x,y,d。d=0表示在点(x,y)打了一个洞;否则表示询问由(x,y),(x+d,y),(x,y+d)三点围成的三角形中洞的个数。Hint30%的数据n<=3333 。 另30% 的数据 GFS只会在DSJ打完洞后才开始询问,xi,yi<=333333 。 100%的数据 1<=n<=88888,...
2018-08-20 21:50:22 371
原创 Codeforces 662C Binary Table(快速沃尔什变换)
Problem给定一个n(≤20)*m(≤100 000)的01矩阵,每次操作可以将一行或一列取反。求最终1的最少个数。Solution前置技能:快速沃尔什变换(FWT)。观察到n较小,考虑O(2n)O(2n)O(2^n)枚举每一行选或不选。不妨设f(x)表示行的操作状态为x时(我们可用一个二进制数表示状态),经过各种列操作后所得到的最少的1的个数。可以O(m)O(m...
2018-08-17 22:39:13 250
原创 快速沃尔什变换——FWT学习小记
用途FWT主要解决这样的问题,给出A(x),B(x),求Ck=∑i⊗j=kAjBkCk=∑i⊗j=kAjBkC_k=\sum_{i\otimes j=k}A_jB_k,其中⊗⊗\otimes表示and(按位与)/or(按位或)/xor(按位异或)运算中的一种。定义首先,A(x)可以表示成一个n维向量(a0,a1,...,an−1)(a0,a1,...,an−1)(a_0,a_...
2018-08-17 19:50:27 599
原创 【JZOJ5821】【NOIP提高A组模拟2018.8.16】 手机信号(set/权值线段树)
ProblemHintSolution这道题就是一道考验你细节处理的题。我们用形如(l,r,v)的三元组表示一个区间的信号站,意为从l到r每隔v有一个信号站。考虑用set/权值线段树维护这些三元组。我们插入一个三元组的时候,若其与其他三元组的区间互不相交,那自然是最好滴,我们直接丢进set/权值线段树即可。不然的话,囿于他保证当前区间[l,r]中不存在信...
2018-08-16 22:47:48 269
原创 启发式合并(堆、set、splay、treap)/线段树合并学习小记
启发式合并刚听到这个东西的时候,我是相当蒙圈的。特别是“启发式”这三个字莫名的装逼,因此之前一直没有学。实际上,这个东西就是一个SB贪心。以堆为例,若我们要合并两个堆a、b,我们有一种极其简单的做法:那就是比较一下它们的大小,将小的堆的每个元素依次插入到大的堆中。不妨设|a|≤|b||a|≤|b||a|≤|b|,则时间复杂度即为:O(|a|∗log2(|a|+|b|))O(|a|∗log...
2018-08-15 21:56:42 1932 1
原创 【JZOJ5813】【NOIP提高A组模拟2018.8.14】 计算(质因数分解+DP+思维)
ProblemHintSolution这道题是妥妥的送了45points。因为100以内的数的约数个数均≤12,我们找出n的约数后,暴力dfs填数即可。时间复杂度O(σ(n)2m)O(σ(n)2m)O(\sigma(n)^{2m})。不过,满分做法还是需要一点思维的。假设我们现在的x数列满足条件I(∀i∈[1,2m],xi∈Z+,xi|n∀i∈[1,2m...
2018-08-14 15:59:04 249
原创 【JZOJ5807】【NOIP提高A组模拟2018.8.13】简单的区间(分治+RMQ+二维偏序问题)
ProblemHint对于 30% 的数据,n ≤ 3000; 对于另外 20% 的数据,数列 a 为随机生成; 对于 100% 的数据,1 ≤ n ≤ 3 × 10^5 , 1 ≤ k ≤ 10^6 , 1 ≤ ai ≤ 10^9。Solution考虑分治。对于区间[l,r],我们找出其中最大值的位置m,则可以计算出左端点在[l,m],右端点在[m,r]的合法区间数...
2018-08-13 19:36:26 423
原创 【JZOJ5798】【2018提高组】模拟A组 树 (并查集+LCA)
Problem我们有一颗从1到n编号的n(<=300000)个结点的树,此外,您将从树中获得M(<=300000)个节点对,形式为(a1,b1),(a2,b2),…(am,bm). 我们需要给每一条边定向,使得每一对节点对存在一条从ai到bi或从bi到ai的路径。 现在要求方案数,对10^9+7取mod即可。Solution刚看这道题,感觉很神仙。仔细分析,对于...
2018-08-12 20:16:02 639
原创 【JZOJ5796】【2018提高组】模拟A组&省选 划分(容斥+扩展中国剩余定理+扩展欧几里得)
Problem 有一个未知的序列x,长度为n。它的K-划分序列y指的是每连续K个数的和得到划分序列,y[1]=x[1]+x[2]+….+x[K],y[2]=x[K+1]+x[K+2]+….+x[K+K]….。若n不被K整除,则y[n/K+1]可以由少于K个数加起来。比如n=13,K=5,则y[1]=x[1]+…+x[5],y[2]=x[6]+….+x[10],y[3]=x[11]+x[12]...
2018-08-10 19:25:41 218
原创 【NOI2018day1】归程(最短路+kruskal重构树+并查集+倍增)
Problem 给定一个n(≤2∗105)n(≤2∗105)n(≤2*10^5)个节点、m(≤4∗105)m(≤4∗105)m(≤4*10^5)条边的无向连通图,用l(≤104)l(≤104)l(≤10^4),a(≤109)a(≤109)a(≤10^9)描述一条边的长度、海拔。 给定Q(≤4∗105)Q(≤4∗105)Q(≤4*10^5)天,每天给出出发节点v和水位线p。所有海拔**不...
2018-08-05 21:07:45 533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人