上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 分层图最短路是指在可以进行分层图的图上解决最短路问题。分层图:可以理解为有多个平行的图。 一般模型是:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。一般将决策前的状态和决策后的状态之间连接一条权值为决策代价的边,表示付出该代价后就可以转换状态了。 一般有 阅读全文
posted @ 2019-07-29 10:59 sparkyen 阅读(741) 评论(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 阅读(227) 评论(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 阅读(242) 评论(2) 推荐(1) 编辑
摘要: 题意:给你一个N×N的矩阵,求最大的子矩阵 满足子矩阵中最大值和最小值之差小于等于m. 思路:这题是求满足条件的最大子矩阵,毫无疑问要遍历所有矩阵,并判断矩阵是某满足这个条件,那么我们大致只要解决两个问题就能搞定这题 (1)如何遍历所有矩阵 (2)如何判断此矩阵满足条件 我们先来看(2) 题目中说的 阅读全文
posted @ 2019-07-26 20:23 sparkyen 阅读(212) 评论(0) 推荐(1) 编辑
摘要: 最近打了三场比赛疯狂碰到单调栈和单调队列的题目,第一,二两场每场各一个单调栈,第三场就碰到单调队列了。于是乎就查各种博客,找单调栈,单调队列的模板题去做,搞着搞着发现其实这两个其实是一回事,只不过利用了容器内元素单调的不同特性,用来加速处理不同的问题。 单调栈解决的是以某个值为最小(最大)值的最大区 阅读全文
posted @ 2019-07-26 17:11 sparkyen 阅读(210) 评论(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 阅读(219) 评论(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 阅读(278) 评论(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 阅读(164) 评论(0) 推荐(1) 编辑
摘要: 单调栈,顾名思义,是栈内元素保持一定单调性(单调递增或单调递减)的栈。这里的单调递增或递减是指的从栈顶到栈底单调递增或递减。既然是栈,就满足后进先出的特点。 应用 用于解决的问题: 可以获取左边第一个或者右边第一个比当前位大或者小的数。 具体表现为: 1.最基础的应用就是给定一组数,针对每个数,寻找 阅读全文
posted @ 2019-07-25 11:22 sparkyen 阅读(399) 评论(0) 推荐(1) 编辑
摘要: Largest Rectangle in a Histogram http://poj.org/problem?id=2559 题意:给出若干宽度相同的矩形的高度(条形统计图),求最大子矩形面积 解题思路 单调栈的经典题(嫌弃字多可以先看后面的示例再来看这个思路) 显然,最终的子矩形高度一定和某一个 阅读全文
posted @ 2019-07-23 15:32 sparkyen 阅读(306) 评论(0) 推荐(1) 编辑
摘要: A.Eddy Walker 题意: 给你长度为n的圈(共有n个点(0~n-1),按顺序形成一个环), 每次随机的向左走一步或者向右走一步, 问你最后将所有点走过至少一遍,最后一步停留在m点的概率是多少。 思路:这题主要是很少有人能把题目读懂,像篇阅读理解一样的,看懂后就会发现你会发现落在0到n-1上 阅读全文
posted @ 2019-07-22 15:50 sparkyen 阅读(213) 评论(0) 推荐(1) 编辑
摘要: 对于正整和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。 逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为。 推导过程如下 (费马小定理:在p是素数的情况下,对任意整数x都有xp ≡ x (mod p)。其中如果x无法被p整除,我们有xp-1 ≡ 1 (m 阅读全文
posted @ 2019-07-22 15:03 sparkyen 阅读(132) 评论(0) 推荐(1) 编辑
摘要: gcd(a, b)用于求解自然数a,b的最大公约数 extgcd(a, b, x, y)用于求解方程ax+by = 1的一组解,并返回a,b的最大公约数 暂不给出证明过程,有时间再回来补,不过多半是没时间。。。 阅读全文
posted @ 2019-07-22 14:55 sparkyen 阅读(152) 评论(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 阅读(103) 评论(0) 推荐(1) 编辑
摘要: int heap[MAX_N], sz = 0; void push(int x) { int i = sz++; while (i>0) { int p = (i-1)/2; i f(heap(p)<=x) break; heap[i] = heap[p]; i = p; } heap[i] = 阅读全文
posted @ 2019-06-27 08:28 sparkyen 阅读(185) 评论(0) 推荐(1) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页