上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 39 下一页
摘要: 题目大意:给定一个 N 个顶点的无向图,边有边权,如果存在,求出该无向图的最小环,即:边权和最小的环,并输出路径。 题解:由于无向图,且节点数较少,考虑 Floyd 算法,在最外层刚开始遍历到第 K 号节点时,$d[i][j]$ 中记录着经过前 k 1 个点,从 i 到 j 的最短距离。因此,可以依 阅读全文
posted @ 2018-11-18 00:47 shellpicker 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 题目大意:维护一个长度为 N 的序列,支持区间修改、区间查询两种操作。 update on 2019.4.3 线段树分为指针式线段树和堆式线段树。指针式线段树的优点是空间较小,可以进行可持久化操作。堆式线段树的优点是可以不必记录左右儿子,缺点是区间要开到四倍,且不能可持久化,不过对于树套树的外层线段 阅读全文
posted @ 2018-11-18 00:22 shellpicker 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 题目大意:维护一个 N 个数组成的序列,支持区间加、区间乘、单点询问。 题解:在每一个块中维护两个标记,即:整块加和的标记和整块乘积的标记。不过由于有两个标记,涉及到计算区间总和的顺序问题。 一个指定块的区间加标记为 $atag$,区间乘标记为 $mtag$,区间除去标记的和为 $sum$。 第一种 阅读全文
posted @ 2018-11-18 00:04 shellpicker 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个由 N 个数组成的序列,维护两种操作:单点询问,单点插入。N using namespace std; const int maxn=2e5+10; inline int read(){ int x=0,f=1;char ch; do{ch=getchar();if(ch==' ' 阅读全文
posted @ 2018-11-16 22:04 shellpicker 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目大意:维护一个有 N 个数组成的序列,支持查询区间元素和、区间元素向下取整的开方操作。 题解:由于序列中维护的数最大不超过整数的范围,而对于整数范围内的数来说,一个数在开方 5 次及以上时,结果不是 0 就是 1。 因此,可以在维护块内元素大小之和的同时,也维护一个标记,即: 若块内所有元素大小 阅读全文
posted @ 2018-11-16 18:06 shellpicker 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个 N 个数组成的串,可以在串中插入 M 个乘号,求乘积最大是多少。N using namespace std; const int maxn=50; struct node{ int t[110],len; node(){this clear();}//构造函数需要初始化 void 阅读全文
posted @ 2018-11-16 17:26 shellpicker 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个有 N 个正整数的序列,从其中拿走一些数,使得剩下的数满足严格单峰性,即先严格递增后严格递减,允许单调增和单调减,求最少需要拿走多少数。 题解:先考虑严格单调的情况,最少需要拿走多少数字意味着最多需要留下多少数字,使得这些留下的数字保持单调性,显然这是一个 LIS 问题。 那么,对 阅读全文
posted @ 2018-11-15 21:43 shellpicker 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个有 N 个数的序列,求其最长下降子序列的长度,并求出有多少种不同的最长下降子序列。(子序列各项数值相同视为同一种) update at 2019.4.3 题解:求最长下降子序列本身并不难,是一道非常经典的线性dp问题,关键在于dp计数部分。这道题跟一般的状态转移计数不同,这里并不是 阅读全文
posted @ 2018-11-15 18:34 shellpicker 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题目大意:维护 N 个数组成的序列,支持两种操作:区间加、区间查询某个值的前驱(小于该值的最大值,若无前驱,输出 1)。 题解1:可以像分块2一样,维护每个块内元素的一个有序序列,每次查询时二分查找即可。 代码如下 阅读全文
posted @ 2018-11-15 11:46 shellpicker 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 题目大意:分块维护一个有 n 个数字的序列,有两种操作:区间加,区间查询小于某个数的元素个数。n using namespace std; const int maxn=5e4+10; const int maxb=800; inline int read(){ int x=0,f=1;char c 阅读全文
posted @ 2018-11-14 20:18 shellpicker 阅读(212) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 39 下一页