07 2019 档案

摘要:理论基础 轮换与对换 概念:把 S 中的元素 i1 变成 i2i2 变成 i3 ... ik 又变成 i1,并使 S 中的其余元素保持不变的置换称为循环,又称轮换,记为 (i1,i2,...,ik)k 称为循环长度,特别地,循环长度为2 阅读全文
posted @ 2019-07-31 22:09 Rogn 阅读(820) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个整数 P109p114),设其前一个质数为 Q,求 Q! %P. 分析 暴力...说不定好的板子能过。 根据威尔逊定理,如果 p 为质数,则有 (p1)!p1(mod p). $\displayst 阅读全文
posted @ 2019-07-30 22:40 Rogn 阅读(447) 评论(0) 推荐(0) 编辑
摘要:概念 在初等数论中,威尔逊定理给定了判定一个数是否为素数的充分必要条件。即:当 p 为素数时,(p1)!1 (mod p)。等价的写法有 (p1)!p1 (mod p)p(p1)!+1. 由于阶乘是呈爆炸式增长,其结 阅读全文
posted @ 2019-07-30 21:44 Rogn 阅读(779) 评论(0) 推荐(0) 编辑
摘要:有时候我们想快速的知道一个数是不是素数,而这个数又特别的大导致 O(n) 的算法也难以通过,这时候我们可以对其进行 Miller-Rabin 素数测试,可以很大概率测出其是否为素数。 两个理论基础 (1)费马小定理:当 p 为质数,有 $a^{p-1}\equiv 1(mod \ 阅读全文
posted @ 2019-07-30 19:27 Rogn 阅读(1211) 评论(0) 推荐(0) 编辑
摘要:问题 链接 给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。(1n50,0ai250) 分析 异或和本来没有单调性,但是从高到低遍历线性基是单调的。考虑第 i 位时,如果当前答案 xi 位为0, 阅读全文
posted @ 2019-07-30 14:51 Rogn 阅读(907) 评论(0) 推荐(0) 编辑
摘要:题意 链接 给定 p, a, b, x1,现有一数列 xi+1(axi+b) mod p 求最小的 i 满足 xi=t 分析 代码 发现BZOJ还能下测试数据:https://darkbzoj.tk/data/ 参考链接:htt 阅读全文
posted @ 2019-07-30 13:25 Rogn 阅读(250) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个 n 个整数的数列,从中至多选取 k 个上升子序列(一个元素最多被选一次),使得选取的元素和最大。 分析 考虑这个问题和经典网络流问题“最长不下降子序列”相似,我们考虑对这个建图并用网络流解决。因为求得费用和,则使用费用流做法。 具体建图见代码,主要考虑拆点和建立超级源点和超级 阅读全文
posted @ 2019-07-29 22:53 Rogn 阅读(313) 评论(0) 推荐(0) 编辑
摘要:费用流 假设每条边除了有一个容量限制外,还有一个单位流量所需的费用(cost)。该网络中花费最小的最大流称为最小费用最大流,即总流量最大的情况下,总费用最小的流。 和 Edmonds-Karp 算法类似,但每次用 Bellman-Ford 算法而非 BFS 找增广路。只要初始流是该流量下的最小费用可 阅读全文
posted @ 2019-07-29 22:39 Rogn 阅读(817) 评论(0) 推荐(0) 编辑
摘要:题意 链接 定义 f(x) 为满足以下条件的有序二元组 (a,b) 的方案数(即 (a,b)(b,a) 被认为是不同的方案): x=ab ab 均无平方因子(即因子中没有除1之外的完全平方数) 求 $\displaystyle \sum_{i=1}^n 阅读全文
posted @ 2019-07-29 11:10 Rogn 阅读(335) 评论(0) 推荐(0) 编辑
摘要:介绍 基是线性代数中的一个概念,而在现行OI中,通常利用基在异或空间的一些特殊性质来解决问题,而这类问题涉及的知识被称为【线性基】 异或运算下的基: 对于数 a0,a1,...,anai 的二进制表示成 (b0,b1,...bn)2 可看作一个向量,异或运算下的 阅读全文
posted @ 2019-07-29 00:27 Rogn 阅读(643) 评论(0) 推荐(1) 编辑
摘要:题意 一张无向图,每条边有权值,可以选择不超过 k 条路使其权值变成0,求 ST 的最短路。(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路,这是分层图最短路的模板题。 建立 0 k 层相同的图,每层之间相邻的节点之间也用权值为0的边相 阅读全文
posted @ 2019-07-28 19:39 Rogn 阅读(285) 评论(0) 推荐(0) 编辑
摘要:题意: 一颗 n 个节点的树上标有 k 个点,找一点使得到 k 个关键结点的最大距离最小。 分析: 问题等价于求树的直径,最小距离即为直径除2向上取整。 有两种求法,一是动态规划,对于每个结点,把所有子结点的 d(i) (表示根为 i 的子树中根到叶子的最大距离)都求出来,设 $ 阅读全文
posted @ 2019-07-28 15:55 Rogn 阅读(444) 评论(0) 推荐(0) 编辑
摘要:题意: 用 A(n) 表示第 n 个只由1组成分整数,现给定一个素数 p,求满足 1in,1jm,A(ij)0(mod p)(i,j) 对数。 分析: $11...11 = \frac{10^n-1} 阅读全文
posted @ 2019-07-28 14:14 Rogn 阅读(346) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出两个 n 位10进制数x和y,求x*y(详见 洛谷P1919) 分析 假设已经学会了FFT/NTT。 高精度乘法只是多项式乘法的特殊情况,相当于x=10 时。 例如n=3,求123*111 123=x2+2x+3 111=x2+x+1 阅读全文
posted @ 2019-07-25 09:24 Rogn 阅读(280) 评论(0) 推荐(0) 编辑
摘要:问题描述 求一个满足 K 阶齐次线性递推数列 ai 的第 n 项,即:an=i=1kfi×ani. 分析 首先写成矩阵快速幂 $$\left( \begin{bmatrix} f_1 &f_2 &f_3 &f_4 & \cdots & 阅读全文
posted @ 2019-07-24 11:04 Rogn 阅读(570) 评论(0) 推荐(0) 编辑
摘要:问题描述 给定一个 n次多项式 F(x) 和一个 m 次多项式 G(x),请求出多项式 Q(x)R(x),满足以下条件: Q(x) 次数为 nmR(x) 次数小于 m F(x)=Q(x)G(x)+R(x) 所有运算在模998244353 阅读全文
posted @ 2019-07-24 09:49 Rogn 阅读(745) 评论(0) 推荐(0) 编辑
摘要:问题描述 P4328 给定一个多项式 F(x),请求出一个多项式 G(x),满足 F(x)G(x)1(mod xn)。系数对998244353998244353取模。 分析 理论基础 这是一个递推式且呈平方倍增加,就可以用倍增求多项式逆元,从 x1阅读全文
posted @ 2019-07-23 22:14 Rogn 阅读(761) 评论(0) 推荐(0) 编辑
摘要:也许不叫问题吧,也可能是编译器的特性。 我的codeblock选择的编译器: 编写.cpp文件时,floatl类型输入输出都是 %f,double类型输入只能是 %lf,输出只能是 %f。 但是在codeblock建立.c文件和在VS建立.cpp文件,double类型的输出 %f, %lf 都行 好 阅读全文
posted @ 2019-07-23 14:07 Rogn 阅读(630) 评论(0) 推荐(0) 编辑
摘要:具体步骤: 1、补0:在两个多项式最前面补0,得到两个 2n 次多项式,设系数向量分别为 v1v2。 2、求值:用FFT计算 f1=DFT(v1)f2=DFT(v2)。这里得到的 f1f2 分别是两个输入多项式在 2n 次单位根处 阅读全文
posted @ 2019-07-23 13:46 Rogn 阅读(1389) 评论(0) 推荐(0) 编辑
摘要:普通莫队概念 莫队:莫涛队长发明的算法,尊称莫队。其实就是优化的暴力。 普通莫队只兹磁询问不支持修改,是离线的。 莫队的基本思想:就是假定我得到了一个询问区间[l,r]的答案,那么我可以在极短(通常是O(1))的时间复杂度内得到[l+1,r]的答案——于是对于区间查询类的题目,我可以一次性读完所有询 阅读全文
posted @ 2019-07-17 22:01 Rogn 阅读(311) 评论(0) 推荐(0) 编辑
摘要:概念 分块算法实质上是一种是通过分成多块后在每块上打标记以实现快速区间修改,区间查询的一种算法。其均摊时间复杂度为 O(n) 分块的基本思想是通过适当的划分,预处理一部分信息并保存下来,用空间换取时间,达到时空平衡。事实上,分块更接近于“朴素”,效率往往比不上树状数组和线段树,但是它 阅读全文
posted @ 2019-07-17 21:36 Rogn 阅读(962) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:给定一个数X,输出一个等差数列,使得和为X。 分析 由等差数列的定义,可见一个数就是等差数列,两个数也是等差数列 (只能靠做做水题过日子了... 阅读全文
posted @ 2019-07-17 18:43 Rogn 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:给出x数列的定义: T0=a T1=b Tn=Tn2Tn1 求第 n 项( 0a,b,c1018) 分析 n 这么大,肯定是常数时间复杂度。 打表找 阅读全文
posted @ 2019-07-17 17:39 Rogn 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:在 105×105 的大网格上,给出 n 的格点的坐标,求联通块数(上下左右及对角线都认为相邻) 分析 DFS需要遍历网格的每个格点,可能会超时? 初始化时,对每个格点建立并查集,遍历每个格点将相邻的合并,最终的集合个数就是联通块的个数。 具体实现时,对 阅读全文
posted @ 2019-07-17 17:10 Rogn 阅读(272) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:给定一个字符串 s,求不同于 s 的字符串 t,使得 Hash(s)=Hash(t),其中 Hash(s)=0len1xi×pi4p,m109m为质 阅读全文
posted @ 2019-07-17 11:20 Rogn 阅读(357) 评论(0) 推荐(0) 编辑
摘要:题目 链接 给你一个圆锥(位于坐标原点,告诉你高h 和底面半径 r),和一个点(x,y,z)并告诉你这个点的速度, 让你求点和圆锥相撞的最小时间(保证一定相撞) 分析 易知,将直线的参数方程与圆锥曲面的方程联立,但是可能产生增根,具体情形如下: 其实我们不必区分具体情况,只需交点在曲面上的时间的最小 阅读全文
posted @ 2019-07-17 10:29 Rogn 阅读(333) 评论(0) 推荐(0) 编辑
摘要:概念 可持久化线段树又叫主席树,之所以叫主席树是因为这东西是fotile主席创建出来的。 可持久化数据结构思想,就是保留整个操作的历史,即,对一个线段树进行操作之后,保留访问操作前的线段树的能力。 最简单的方法,每操作一次,建立一颗新树。这样对空间的需求会很大。而注意到,对于点修改,每次操作最多影响 阅读全文
posted @ 2019-07-16 20:26 Rogn 阅读(533) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:给出一个长度为 n 的数列 Ai,问是否能将这个数列分解为两个长度为n/2的子序列,满足: 两个子序列不互相重叠(是值不能有共同元素,但位置可以交错)。 两个子序列中的数要完全一样,{1, 2} = {1, 2},{1, 2} ≠ {2, 1}。 分析 用两个队列,正反扫 阅读全文
posted @ 2019-07-15 20:48 Rogn 阅读(292) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:一个n个数字的序列,最多去掉其中k个,使得连续相同数字序列的长度尽量长 分析 如果不考虑去掉元素,就是普通的尺取。考虑到去元素,则只需做一点修改。 先离散化,再把每种元素的位置用vactor存下来。尺取的时间复杂度只有 O(n),但是离散化之前需要排序,就成了 $O(n \lo 阅读全文
posted @ 2019-07-15 19:08 Rogn 阅读(304) 评论(0) 推荐(0) 编辑
摘要:题目 链接 Reki 在课余会接受一些民间的鹰眼类委托,即远距离的狙击监视防卫.。Reki 一共接收到m份委托,这些委托与 n 个直线排布的监视点相关。第 i 份委托的内容为:对于区间 [ri, ji] 中的监视点,至少要防卫其中的 ki 个点。Reki阅读全文
posted @ 2019-07-15 17:09 Rogn 阅读(273) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:给定 n 个整数,去掉其中一个数使得剩下数字的gcd最大,求最大的gcd.(3n100000) 分析 枚举每一个位置,显然每次枚举都计算所有数的gcd存在大量的重复计算,所以先计算出gcd前缀和gcd后缀。$pre \_ gcd[i] = gcd(a 阅读全文
posted @ 2019-07-15 15:44 Rogn 阅读(301) 评论(0) 推荐(0) 编辑
摘要:差分法 我们令 St(n)=k=0nkt,易得 St(n)+(n+1)t=k=0n(k+1)t ,可以用二项式定理化简为 $\displaystyle \sum_{k=0}^n \ 阅读全文
posted @ 2019-07-15 15:24 Rogn 阅读(1214) 评论(0) 推荐(0) 编辑
摘要:求 1..n 之间每个数的逆元,如果都用费马小定理或者扩展欧几里得算,那么复杂度将会达到 O(nlogp) 。利用一些递推式,可以线性地求出1..n中每个数的逆元,从而复杂度可以减少一个log。常用的一个递推公式是 $$i^{-1} = -\left\lfloor \frac{p}{i} 阅读全文
posted @ 2019-07-15 14:58 Rogn 阅读(1672) 评论(0) 推荐(0) 编辑
摘要:差分算子 首先,有一个关于”算子“的定义:如果一个运算作用在函数上,则我们称这个运算为“算子”。 显然,多项式的卷积、狄利克雷卷积等都是算子。 在迈入高等数学的大门时,我们遇到过一个强劲的算子:微分算子。$\text Df(x) = \displaystyle \lim _{h \to 0}\fra 阅读全文
posted @ 2019-07-15 14:25 Rogn 阅读(1701) 评论(0) 推荐(2) 编辑
摘要:题目 链接 题意:在一个网格图上,给出n个点的坐标,用一个多边形包围这些点(不能接触,且多边形的边只能是对角线或直线),求多边形的最小周长. 分析 对于每个点,我们考虑与之相邻的4个点。一共由 4×N 个点,然后求凸包。对凸包上每对相邻的点,优先走对角线,然后走直线。累加长度即 阅读全文
posted @ 2019-07-13 20:34 Rogn 阅读(473) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:对于一个n×m的矩阵的最外一圈,问是否能用k×1的方块填满 分析 考虑左右两边的情况,分类讨论,切记考虑所有可能的情形。 阅读全文
posted @ 2019-07-13 20:14 Rogn 阅读(328) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:求满足0xyzmxj+yj=zj, j=2n的三元组的对数 分析 由费马大定理:整数n>2时,关于x,y,z的方程 xn+yn=zn 没有正整数解。 因此,我 阅读全文
posted @ 2019-07-13 19:25 Rogn 阅读(287) 评论(0) 推荐(0) 编辑
摘要:题目 链接 大意:有一个容量为c的背包,有ns1类物体,价值都为k1,体积分别为s1,1,s1,2,,s1,n,有ms2类物体,价值都为k2体积分别为s2,1,s2,2,,s2,m 阅读全文
posted @ 2019-07-13 18:21 Rogn 阅读(276) 评论(0) 推荐(0) 编辑
摘要:题目 链接 有n只青蛙,有m块石头,编号为0~m-1,第i只青蛙每次可以跳ai, 刚开始都在0,问,青蛙总共可以跳到的石头之和为多少。其中t20,1n104,1m109,1ai109. 分析 根据裴蜀定理知,对于一个有n个点的环,每个循环节的长度为n/gc 阅读全文
posted @ 2019-07-13 18:14 Rogn 阅读(313) 评论(0) 推荐(0) 编辑
摘要:定义 设正整数N按照算术基本定理分解质因数为N=p1c1p2c2Pmcm,定义函数: $$\mu(N)= \left\{\begin{matrix}0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ c_i \geq 1 \\ 1 \ \ 阅读全文
posted @ 2019-07-12 11:40 Rogn 阅读(1196) 评论(0) 推荐(0) 编辑
摘要:题目 链接 有50000次查询,对于给定的整数a,bd,有多少正整数对xy,满足xayb,并且gcd(x,y)=d1ka,b50000. 分析 求有多少对(x,y)满足xa阅读全文
posted @ 2019-07-12 10:54 Rogn 阅读(369) 评论(0) 推荐(0) 编辑
摘要:引理一 a,b,cZ,abc=abc 略证: \ 阅读全文
posted @ 2019-07-12 08:43 Rogn 阅读(393) 评论(0) 推荐(0) 编辑
摘要:题目 给定一个n×m01矩形,选择其中为1的位置,要求互不相邻,问方案数。 解决方案 直接dp因为状态较多,数组很难直接表示出来,我们采用二进制状态压缩存储。 用dp[i][j]表示第ij状态的方案数,不难写出状态方程$dp[i][j] += dp[i-1] 阅读全文
posted @ 2019-07-11 18:50 Rogn 阅读(285) 评论(0) 推荐(0) 编辑
摘要:题目描述 链接 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 阅读全文
posted @ 2019-07-11 12:39 Rogn 阅读(201) 评论(0) 推荐(0) 编辑
摘要:概念 树剖就是将一棵树暴力拆成几条链,然后对于这样一个序列,我们就可以套上资瓷区间处理的一些东西qwq(比如说线段树,树状数组 可以解决的问题: 将树从xy结点最短路径上所有节点的值都加上z 求树从xy结点最短路径上所有节点的值之和/最大值 将以x为根节点的子树内所有节点 阅读全文
posted @ 2019-07-11 12:28 Rogn 阅读(411) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:对一个数列进行以下两种操作: 给[l,r]中的每个数开平方(下取整) 询问[l,r]中各个数的和 解决方法 显然,区间开平方不满足区间可加性,所以对区间中每个数开平方不能通过标记完成,只能使用暴力的单点修改。因为1e12的数开方6次就变成了1,所以需要修改的次数实际上很少。 阅读全文
posted @ 2019-07-08 17:25 Rogn 阅读(384) 评论(0) 推荐(0) 编辑
摘要:题目 题目链接 大意:维护一个数列,有两种操作: 查询操作Q L:查询当前数列中末尾L个数中的最大的数 插入操作A n:将n加上t再对D取模,将所得值插入数列末尾 解决方案 由题意知,只有两种操作:单点修改、区间查询 阅读全文
posted @ 2019-07-07 00:15 Rogn 阅读(258) 评论(0) 推荐(0) 编辑
摘要:add无序,set有序。规定同时有两个标记时,表示先执行set再执行add。 1. 更新操作: 此操作中需要维护标记,这里保证了不会出现先有add再有set,这种情况只会保留set。 值得注意的是,标记下推时左右子树都需要维护,其中递归进入的子树会在递归结束时自然调用maintain函数,而另一个子 阅读全文
posted @ 2019-07-05 21:56 Rogn 阅读(493) 评论(0) 推荐(0) 编辑
摘要:考虑将正整数n拆分成几个不同的平方数之和,比如30=1^2 + 2^2 + 5^2=1^2 + 2^2 + 3^2 + 4^2,而8不存在这样的拆分。 只有31个数无法分解:2,3,6,7,8,11,12,15,18,19,...,108,112,128,在10^18内只有31个,更大的没有验证。 阅读全文
posted @ 2019-07-05 20:20 Rogn 阅读(1313) 评论(0) 推荐(0) 编辑
摘要:题目 链接 给出方程组:{11x+13y+17z=247113x+17y+11z=2739已知 xyz 均为正整数,请你计算x,$y 阅读全文
posted @ 2019-07-04 23:08 Rogn 阅读(406) 评论(0) 推荐(0) 编辑
摘要:题目 链接 题意:一个1n的序列被去掉空格,需要将其还原。例如4111109876532可还原成4 1 11 10 9 8 7 6 5 3 2。字符串的长度在1100之间。 解决方法 由于是1到n的序列,根据长度可以求出n。 由于长 阅读全文
posted @ 2019-07-04 22:16 Rogn 阅读(307) 评论(0) 推荐(0) 编辑
摘要:题目 链接 在一个n×m方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。 现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把 阅读全文
posted @ 2019-07-04 21:06 Rogn 阅读(372) 评论(0) 推荐(0) 编辑
摘要:题目 链接 在蒜国的海岸线上有一排由西向东的瞭望塔,这些瞭望塔由于建造的地面高度不同,所有瞭望塔的高度也是不能不一样的。 这个时候蒜国国王来问蒜头君,每个瞭望塔向东能看到几个瞭望塔?这里需要注意在A塔东边有B塔,B塔的高度高于或等于A塔的高度,那么B塔后面的塔都看不到。 解决方案 由题意知,求左边第 阅读全文
posted @ 2019-07-04 13:49 Rogn 阅读(344) 评论(0) 推荐(0) 编辑
摘要:今天在编译一段C源程序时,遇到编译错误提示 error: variably modified 'data' at file scope。原因在于代码头部有这样几行: 在C语言中,const不是一个真真正正的常量,其代表的含义仅仅是只读。使用const声明的对象是一个运行时对象,无法使用其作为某个量的 阅读全文
posted @ 2019-07-04 13:25 Rogn 阅读(9323) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示