摘要: 解法参考进阶指南 题意:找一条1到n的路径使得路径上选2个点使得之前经过的那个点的权值减之后经过的那个点的权值的值最大。 可以用SPFA维护(维护方法与POJ-3662相似)点1到点$i$的路径上所有点的最小值$D[i]$,再维护一个$i$到$n$的最大值$F[i]$(等价于建个反图维护$n$到$i 阅读全文
posted @ 2020-10-08 11:44 Kimyon 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 解法参考进阶指南 题意:算1到N的路径上把K条边的边权变为0后路径中边权的最大值最小。(无向图中找一条1到N的路径,使得K+1大的边权尽量小。) 解法1:分层图最短路。SPFA维护DP。 设$f[i][j]$表示从1号点到$i$号点路径上把$j$条边变为0后最大边权的最小值。 对于一条边而言,要么把 阅读全文
posted @ 2020-10-08 11:32 Kimyon 阅读(238) 评论(0) 推荐(0) 编辑
摘要: P6492 [COCI2010-2011#6] STEP(线段树) 题目描述 给定一个长度为 n 的字符序列 a,初始时序列中全部都是字符 L。 有 q 次修改,每次给定一个 x,若 $a_x$为 L,则将 \(a_x\) 修改成 R,否则将 \(a_x\) 修改成 L。 对于一个只含字符 L,R 阅读全文
posted @ 2020-10-03 19:52 Kimyon 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 【单调栈模板详解】POJ-2559 Largest Rectangle in a Histogram 题意:给定一系列宽度为1高度不定的长条,在$O(n)$时间内计算出面积最大的矩形。 首先我们看样例的这幅图,红色指针指向的这一位向右拓展了1位,使得该绿色的矩形成为了最优解。 由此启发,我们发现,如 阅读全文
posted @ 2020-10-02 20:23 Kimyon 阅读(178) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round #672 (Div. 2) A. Cubes Sorting 题意:问是否用$\frac{n(n-1)}{2}-1$以内次交换相邻元素的操作把序列排好序。 解析:可以发现这就是一个冒泡排序的过程,而$\frac{n(n-1)}{2}\(是冒泡排序的最坏复杂度,所以当 阅读全文
posted @ 2020-09-25 21:15 Kimyon 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一个长度为$n$的字符串$S$,令$T_i$表示它从第$i$个字符开始的后缀。求 \[ \sum_{1≤i<j≤n}len(T_i)+len(T_j)-2×lcp(T_i,T_j) \] 其中,len(a)表示字符串$a$的长度,lcp(a,b)表示字符串$a$和字符串$b$的最长公共前 阅读全文
posted @ 2020-09-11 11:23 Kimyon 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题意:有一块高*宽为h*w的牌子,n次操作输入一个val,每次操作贴一个1*val的牌子,贴法要求采用贪心策略:1.尽可能往上。2.在1的前提下尽可能往左。如果当前牌子不能贴上去就输出-1,否则输出当前牌子贴的位置的高度。 分析:线段树维护一下区间最大值,初始全部为设为w。考虑-1的情况,如果整个区 阅读全文
posted @ 2020-09-10 22:13 Kimyon 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 大致步骤: 一:Trie插入 { 遍历字符串,有节点就进入节点,没有节点就创建节点后进入节点。 } 二:构建fail指针 { fail指向当前Trie中含有的最长后缀字符串。 BFS遍历每一层 动归思想:{ 对当前这一层的某个节点x,找到其父节点的fail所指的节点y (这样可以保证x前面一段的最长 阅读全文
posted @ 2020-08-30 00:14 Kimyon 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 算法步骤: 一.求next数组: 双指针假设从0开始,如果前后一样就让next[j]的值变成已经匹配好的数目i+1。 如果不一样则前指针不断动归跳已经算出来的next如果能继续匹配就继续,直到如果跳到开头还是和末尾匹配不上就让末尾j++。 二.主串和模式串匹配: 双指针一个j指向主串t一个i指向模式 阅读全文
posted @ 2020-08-24 21:44 Kimyon 阅读(173) 评论(0) 推荐(0) 编辑
摘要: /* 使用前先调用 : H.init() 读入 : H.read() 获得 [l, r] 的hash值: H.get(l,r) (范围是unsigned long long, 要统计请使用map<unsigned long long, int>) 判断两个子串是否相等 : H.equals(l1, 阅读全文
posted @ 2020-07-23 20:18 Kimyon 阅读(156) 评论(0) 推荐(0) 编辑