07 2019 档案

摘要:RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s、t(s<=t<=n),返回区间[s,t]中的最值。 基于线段树的方法实现的话,建树O(n),查询O(logn),相比ST,适合用于n更大,m较小的情况。 void built(int 阅读全文
posted @ 2019-07-31 16:22 sparkyen 阅读(336) 评论(0) 推荐(0) 编辑
摘要:位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。优先级从高到低,依次为~、&、^、|1. 按位与操作 0&0=0; 0&1=0; 1&0=0; 1&1=1(有0则0) 例子:10&9: 0000 1010 & 0000 1001 = 0000 1000 = 8负数按补码形式 阅读全文
posted @ 2019-07-30 15:44 sparkyen 阅读(2239) 评论(0) 推荐(1) 编辑
摘要:>传送门< 题意:求树的直径 思路:就是道模板题,两遍dfs就求出来了 Code #include <cstdio> #include <iostream> #include <algorithm> #include <vector> using namespace std; typedef pai 阅读全文
posted @ 2019-07-30 14:17 sparkyen 阅读(156) 评论(0) 推荐(1) 编辑
摘要:>传送门< 题意:n给城市有n-1条路相连,每两个城市之间的道路花费为1,有k个人在k个城市,问这k个人聚集在同一个城市的最小花费 思路:(官方给的题解写的挺好理解的) 考虑距离最远的两个关键点,设它们的距离为d,d/2上取整即为答案。 必要性:这两个人要碰面,必然要走至少d/2步。 充分性:我们取 阅读全文
posted @ 2019-07-30 13:41 sparkyen 阅读(230) 评论(0) 推荐(0) 编辑
摘要:>传送门< 题意:求最少需要多少个3的倍数按位或后可以得到数字a 思路:利用3的倍数对应的二进制数的性质来先选出一个x,然后根据数字a再配一个y出来 首先,我们都知道十进制中,任意一个数只要每一位相加的和能被3整除,那么这个数就能被3整除。 这是为什么? 因为十进制中每一个位都会10^k次方,那么仅 阅读全文
posted @ 2019-07-29 17:43 sparkyen 阅读(247) 评论(0) 推荐(1) 编辑
摘要:分层图最短路是指在可以进行分层图的图上解决最短路问题。分层图:可以理解为有多个平行的图。 一般模型是:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。一般将决策前的状态和决策后的状态之间连接一条权值为决策代价的边,表示付出该代价后就可以转换状态了。 一般有 阅读全文
posted @ 2019-07-29 10:59 sparkyen 阅读(779) 评论(1) 推荐(1) 编辑
摘要:>传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Code #include <bits/stdc++.h> using namespace std; struct 阅读全文
posted @ 2019-07-28 22:28 sparkyen 阅读(238) 评论(0) 推荐(1) 编辑
摘要:>传送门< 题意:给你一个字符串s,求出其中能整除300的子串个数(子串要求是连续的,允许前面有0) 思路: 》动态规划 记f[i][j]为右端点为i,满足mod 300 = j的子串个数,可以容易的转移 则状态转移方程为:f[i][(10*j+num[i]) %300] = f[i][(10*j+ 阅读全文
posted @ 2019-07-28 14:53 sparkyen 阅读(251) 评论(2) 推荐(1) 编辑
摘要:题意:给你一个N×N的矩阵,求最大的子矩阵 满足子矩阵中最大值和最小值之差小于等于m. 思路:这题是求满足条件的最大子矩阵,毫无疑问要遍历所有矩阵,并判断矩阵是某满足这个条件,那么我们大致只要解决两个问题就能搞定这题 (1)如何遍历所有矩阵 (2)如何判断此矩阵满足条件 我们先来看(2) 题目中说的 阅读全文
posted @ 2019-07-26 20:23 sparkyen 阅读(216) 评论(0) 推荐(1) 编辑
摘要:最近打了三场比赛疯狂碰到单调栈和单调队列的题目,第一,二两场每场各一个单调栈,第三场就碰到单调队列了。于是乎就查各种博客,找单调栈,单调队列的模板题去做,搞着搞着发现其实这两个其实是一回事,只不过利用了容器内元素单调的不同特性,用来加速处理不同的问题。 单调栈解决的是以某个值为最小(最大)值的最大区 阅读全文
posted @ 2019-07-26 17:11 sparkyen 阅读(218) 评论(0) 推荐(1) 编辑
摘要:思路:用单调队列分别维护行与列。 具体实现方法:是先用单调队列对每一行的值维护,并将a[][]每个区间的最大值,最小值分别存在X[][]和x[][]中。 那么X[][]与x[][]所存储的分别是1×n的长方形内的最大值,最小值。X[i][j]存储第i行第j~j+n-1列的长方形中的最大值。同理,x[ 阅读全文
posted @ 2019-07-26 13:27 sparkyen 阅读(234) 评论(0) 推荐(1) 编辑
摘要:我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{ a(i-k+1),a(i-k+2),..., a(i) },i = 0,1,...,N-1 问题的另一种描述就是用一个长度为k的窗在整数数列上移动,求窗里面所包含的数 阅读全文
posted @ 2019-07-26 11:11 sparkyen 阅读(287) 评论(0) 推荐(1) 编辑
摘要:A .Equivalent Prefixes 这题有几种不同的方法,目前只会单调栈的写法 题意:给定两个长度均为n的数组a和b,求最大的p使得(a1,ap)和(b1,bp)等价,等价的定义为其任意子区间的最小值下标相等。 思路:用递归思想,假设前k个元素等价,即(a1,ak)和(b1,bk)等价,现 阅读全文
posted @ 2019-07-25 11:52 sparkyen 阅读(169) 评论(0) 推荐(1) 编辑
摘要:单调栈,顾名思义,是栈内元素保持一定单调性(单调递增或单调递减)的栈。这里的单调递增或递减是指的从栈顶到栈底单调递增或递减。既然是栈,就满足后进先出的特点。 应用 用于解决的问题: 可以获取左边第一个或者右边第一个比当前位大或者小的数。 具体表现为: 1.最基础的应用就是给定一组数,针对每个数,寻找 阅读全文
posted @ 2019-07-25 11:22 sparkyen 阅读(410) 评论(0) 推荐(1) 编辑
摘要:Largest Rectangle in a Histogram http://poj.org/problem?id=2559 题意:给出若干宽度相同的矩形的高度(条形统计图),求最大子矩形面积 解题思路 单调栈的经典题(嫌弃字多可以先看后面的示例再来看这个思路) 显然,最终的子矩形高度一定和某一个 阅读全文
posted @ 2019-07-23 15:32 sparkyen 阅读(312) 评论(0) 推荐(1) 编辑
摘要:A.Eddy Walker 题意: 给你长度为n的圈(共有n个点(0~n-1),按顺序形成一个环), 每次随机的向左走一步或者向右走一步, 问你最后将所有点走过至少一遍,最后一步停留在m点的概率是多少。 思路:这题主要是很少有人能把题目读懂,像篇阅读理解一样的,看懂后就会发现你会发现落在0到n-1上 阅读全文
posted @ 2019-07-22 15:50 sparkyen 阅读(222) 评论(0) 推荐(1) 编辑
摘要:对于正整和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。 逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为。 推导过程如下 (费马小定理:在p是素数的情况下,对任意整数x都有xp ≡ x (mod p)。其中如果x无法被p整除,我们有xp-1 ≡ 1 (m 阅读全文
posted @ 2019-07-22 15:03 sparkyen 阅读(147) 评论(0) 推荐(1) 编辑
摘要:gcd(a, b)用于求解自然数a,b的最大公约数 extgcd(a, b, x, y)用于求解方程ax+by = 1的一组解,并返回a,b的最大公约数 暂不给出证明过程,有时间再回来补,不过多半是没时间。。。 阅读全文
posted @ 2019-07-22 14:55 sparkyen 阅读(158) 评论(0) 推荐(1) 编辑
摘要:typedef long long ll; ll mod_pow(ll x, ll n, ll mod) { ll res = 1; while (n>0) { if (n&1) res = res*x%mod; //如果二进制的最低位为1, 则乘上x^(2^i) x = x*x%mod; //将x 阅读全文
posted @ 2019-07-21 17:00 sparkyen 阅读(106) 评论(0) 推荐(1) 编辑

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