摘要: 题面 1、定义有效子矩形为内部不包含任何障碍点且边界与坐标轴平行的子矩形。如图所示,第一个是有效子矩形(尽管边界上有障碍点),第二个不是有效子矩形(因为内部含有障碍点)。 2、极大有效子矩形:一个有效子矩形,如果不存在包含它且比它大的有效子矩形,就称这个有效子矩形为极大有效子矩形。(为了叙述方便,以 阅读全文
posted @ 2019-09-23 13:57 神之右大臣 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题面 康托展开: 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆的。 X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0! A[i] 指的是位于位置i后面的 阅读全文
posted @ 2019-09-23 11:56 神之右大臣 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题面 “我有个愿望,我希望穿越一切找到你。” 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y)): 1、我可以走到(x+1,y) 2、我可以走到(x,y+1) 3、我可以走到(x+1,y+1) 阅读全文
posted @ 2019-09-21 16:17 神之右大臣 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题是一道贪心+DP的好题: 首先排序是一定要干的事情。 然后我们分情况处理: 1.如果剩一个人,让最小的回来接他 2.如果剩两个人,让最小的回来接,剩下的那两个人(即最大的两个人)过去,让次小的回来,最小的两个过去 以上的两个方法一定是最优的,因为最大的人要不让最小的送,要不带一个次大的; 阅读全文
posted @ 2019-09-21 16:06 神之右大臣 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 矢量矢量加减法: 设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 )。 则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 ),同样的,矢量减法定义为: P - Q = ( x1 - x2 , y1 - y2 )。 矢量的点乘: P=(x1, y1),Q= 阅读全文
posted @ 2019-09-20 20:38 神之右大臣 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题是KMP的模板。 KMP需要注意的细节有很多,所以把这篇文章发上来供参考; 阅读全文
posted @ 2019-09-20 19:27 神之右大臣 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题需要用到一个神奇的知识点:log(n*m)=log(n)+log(m); 所以对所有边权取个log,然后算log的最短路的同时维护乘积即可 阅读全文
posted @ 2019-09-20 16:06 神之右大臣 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题是一道标准的种类并查集: 种类并查集是给每个结点一个权值。然后在合并和查找的时候根据情况对权值来进行维护。 通过将原有的区间范围变大使并查集可以维护种类的联系: 阅读全文
posted @ 2019-09-20 15:02 神之右大臣 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题面 k==1时,快速幂就好了; k==2时,exgcd就好了,但要注意取模范围的控制; k==3时,BSGS可以解决高次同余方程: 然后就可以开心的A掉了,但要注意特殊情况的特判 阅读全文
posted @ 2019-09-20 11:36 神之右大臣 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是上面的算法并不好实现,所以可以将两边同时乘上-1,使式子变为∑i=1t​(mid∗Tim[ei​]−Fun 阅读全文
posted @ 2019-09-18 20:06 神之右大臣 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题面 结论:gcd(F[n],F[m])=F[gcd(n,m)];F[n]=a和F[n+1]=bF[n+2]=a+b,F[n+3]=a+2b,…F[m]=F[m?n?1]a+F[m?n]bF[n]=a,F[n+1]=b,F[m]=F[m?n?1]a+F[m?n]F[m]=F[m?n?1]?F[n]+ 阅读全文
posted @ 2019-09-18 18:02 神之右大臣 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题面 一句话题意:找一个点使得,使得从这个点出发作为源点,发出的流量最大,输出这个最大的流量 这道题是换根法+二次扫描的模板; 首先若确定1为原点,那么可以写出dp方程:当v的度是1时, g[u]+=g[v];否则g[u]+=min(g[v],star[i].w); 但以上仅仅是有原点的做法,那么如 阅读全文
posted @ 2019-09-18 13:46 神之右大臣 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1.dilworth定理:在一个序列中,最长下降子序列的个数(下降子序列的最小划分)就等于其最长不下降子序列的长度。 2.floor(),ceil(),round()三个函数的返回值都是一个浮点数,floor()是把浮点数向下取整,ceil()是把浮点数向上取整,round()是把浮点数四舍五入; 阅读全文
posted @ 2019-09-16 13:41 神之右大臣 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 现有n个Zack,每个Zack有一个一个能力值,从这n个Zack中选出k个,使他们的最大公约数的值最大 【输入格式】 第一行有一个整数n,代表有n个Zack 第二行n个整数ai,代表每个Zack的能力值 【输出格式】 一共n行,第n行为k=i情况下的能力值的最大公因数 【样例输入】 4 1 2 3 阅读全文
posted @ 2019-09-15 16:20 神之右大臣 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 求最小生成树的两种算法: 1.Kruskal算法(本质是贪心) 1. 把图中的所有边按代价从小到大排序; 2.按权值从小到大选择边,所选的边连接的两个顶点ui,viui,vi,应属于两颗不同的树,则成为最小生成树的一条边,并将这两颗树合并作为一颗树。 这种做法可以通过并查集来维护连通性,总体复杂度是 阅读全文
posted @ 2019-09-15 15:51 神之右大臣 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题是一道典型的排序dp a[i]−b[i]∗(t+c[i])+a[j]−b[j]∗(t+c[i]+c[j]) a[j]−b[j]∗(t+c[j])+a[i]−b[i]∗(t+c[i]+c[j])a[j]-b[j]*(t+c[j])+a[i]-b[i]*(t+c[i]+c[j])a[j]−b 阅读全文
posted @ 2019-09-15 15:37 神之右大臣 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 题面 Dilworth定理:在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的链描述了任何有限偏序集的宽度。 反链是一种偏序集,其任意两个元素不可比;而链则是一种任意两个元素可比的偏序集。Dilworth定理说明,存在一个反链A与一个将序列划分为链族P的划分,使得划分中链 阅读全文
posted @ 2019-09-15 15:07 神之右大臣 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 简单地说,就是一张图里的所有点可以分为两组(如上图),并且每条边都跨越两组。这样的图就是二分图。 一个图为二分图仅当:没有奇数圈;点色数为 2。 交替路(也叫交错路):从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边……形成的路径叫交替路。 增广路:从一个未匹配点出发,走交替路,以另一个未匹配 阅读全文
posted @ 2019-09-14 15:05 神之右大臣 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题面 很裸的边取模边乘。注意因为进位的原因模数应该比较大; 另外,这道题是一道标准的分块打表例题(那样的话数据就可以更大了),可以用来练习分块打表; 阅读全文
posted @ 2019-09-14 13:58 神之右大臣 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题面 因为所求的是中位数,所以考虑改变原序列。把大于 b 的数全部变为 1,小于 b 的数变为 −1,等于 b 则为 0。问题就变为求存在几个包含 b的区间和为 0 。 根据乘法原理,我们枚举每一个l[i],求出l[i]*r[-i]后累加到ans上; 因为数组的下标不能是负数,所以把所有下标都加上1 阅读全文
posted @ 2019-09-11 17:45 神之右大臣 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1)(1+a2+a2^2+……+a2^k2)……*(1+ai+ai^2+……+ai^ki) 利用等比数列 阅读全文
posted @ 2019-09-11 14:39 神之右大臣 阅读(239) 评论(0) 推荐(0) 编辑
摘要: memset0的博客 Siyuan的博客 溪水瑶的博客 M_SEA的博客 洛衣的博客 M_sea的博客 --> 阅读全文
posted @ 2019-09-10 20:01 神之右大臣 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 八皇后问题一般情况下朴素的深搜就可以了,但可以对其进行二进制优化(这大概是目前最优的深搜算法): 用二进制表示状态.1表示该点不能放(与其他位置的皇后排斥或初始状态就不能放).0表示该点可以放皇后; dfs保存四个参数:之前所有行的状态,从左上到右下对角线的状态,从右上到左下对角线的状态,当前为第几 阅读全文
posted @ 2019-09-10 19:20 神之右大臣 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 首先来看一下定义: 看不懂?那么用循环思想来解释一下; 首先你要知道,只有在第一个矩阵的列数和第二个矩阵的行数相同时乘法才有意义。 那么,对于答案C在(i,j)上的元素,可以理解为A的第i行和B的第j列上的乘积和~; 所以在进行矩阵加速的时候,可以通过枚举i,j,k来进行计算; 下面以著名的斐波那契 阅读全文
posted @ 2019-09-10 16:41 神之右大臣 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 这是基于分块的思想: 分块打表的思想:提前在计算机计算好一部分的值,例如:提前计算好N mod1000000 = 0的值的数据,然后运算时直接取出对于的值开始运算,如:N = 2000001的时候,就取出2000000的值接着运算,减少运算量。 最优的情况下,可以处理sqrt(N)的表,然后以sqr 阅读全文
posted @ 2019-09-09 19:49 神之右大臣 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 01分数规划,即给定模型求sum(ai)/sum(bi)的最值; 我们可以改变一下式子的形态: sum(ai)/sum(bi)>=L =sum(ai)-L*sum(bi)>=0 所以我们可以通过二分判断L的取值; 标准的二分代码: 阅读全文
posted @ 2019-09-09 19:22 神之右大臣 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 题面 裸的杨辉三角前缀和,但 在求前缀和的时候有可能得到一个负数(由于取模的原因),所以一定要加上模数后再取模!!!! 阅读全文
posted @ 2019-09-09 18:52 神之右大臣 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 这个玩意是可以动态维护第k大的值,每次操作logn。 大根堆Q1 q1:维护集合中较小值的部分的最大值。 小根堆Q2q q2:维护集合中较大值的部分的最小值。 听不懂?没关系,接着看 为了方便,我们用鸡和凤来比喻这两个堆 换句话来说,以鸡头凤尾来比喻这两个堆,q1的堆顶就是鸡头,q2的堆顶就是凤尾; 阅读全文
posted @ 2019-09-09 17:24 神之右大臣 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题面 对于每一个开关,我们可以看成一个0/1串,初始是一个全部为0的串,要求经过这些开关的操作后,出现的不同的0/1串的个数 建模就是存在一些数,这些数异或起来是0(等价于没有操作)。那么需要求一个集合,满足集合中元素相互异或不会出现0. 线性基派上用场了。 接下来就是线性基的基本插入操作和统计一下 阅读全文
posted @ 2019-09-09 17:06 神之右大臣 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 线性基三大性质 1.原序列里面的任意一个数都可以由线性基里面的一些数异或得到 2.线性基里面的任意一些数异或起来都不能得到; 3.线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的 一、定义 首先什么是线性基呢?对于一组数 A1...An,他们的线性基为 P1...Pm ,其中 P 阅读全文
posted @ 2019-09-07 16:19 神之右大臣 阅读(116) 评论(0) 推荐(0) 编辑