上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 21 下一页
摘要: 紫薯例题 阅读全文
posted @ 2019-07-30 09:59 jrltx 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个n个点m条边的有向图,每条边有个长度,可以花费等同于其长度的代价将其破坏掉,求最小的花费使得从1到n的最短路变长。 解法:先用dijkstra求出以1为源点的最短路,并建立最短路图(只保留d[v]=d[u]+e[i].c的边(u,v)),跑个最大流即可。 Dinic: 1 #inclu 阅读全文
posted @ 2019-07-29 10:31 jrltx 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个序列,一开始所有的元素都是ai,你可以选择两个长度相等的区间,如果某个元素被一个区间覆盖,那么变为bi,如果被两个区间都覆盖,那么变为ci。问所有区间的选择方法中产生的第k小的元素总和。 首先很容易想到的是二分答案,枚举一个区间,然后用线段树或树状数组查询另一个区间使得元素总和小于等于答 阅读全文
posted @ 2019-07-29 09:57 jrltx 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 后缀数组: 后缀自动机: 阅读全文
posted @ 2019-07-22 17:13 jrltx 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意:一个马在无限大的棋盘中跳,问跳n步能跳到多少个不同的格子。 首先写个打表程序打一下n比较小的时候的表: 打印结果: 把元素差分两次后,成了这个亚子: 发现了什么?当n比较大的时候,经过二次差分后的数组的每一项都是28!因此可以猜测答案是一个关于n的二次多项式,现在要做的是把这个多项式 阅读全文
posted @ 2019-07-13 21:04 jrltx 阅读(364) 评论(0) 推荐(1) 编辑
摘要: 维护一个01序列,一共四种操作: 1.插入一个数 2.删除一个数 3.反转一个区间 4.查询两个后缀的LCP 用Splay或者Treap都可以做,维护哈希值,二分求LCP即可。 注意反转序列的时候序列的哈希值也会改变,因此需要维护正反两个哈希值,在交换左右儿子的时候顺便交换两个哈希值即可。 还有就是 阅读全文
posted @ 2019-07-08 17:30 jrltx 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目链接 三种操作:区间加,区间开根号,区间求和。 修改的时候判断区间内的最大值和最小值是否相等或者差1,如果相等则变为区间赋值,否则再判断开根号之后的最大值和最小值是否相等,如果相等则区间赋值,否则区间加法。 这题的数据也忒恶心了点吧?本来直接判断相等就能解决的问题,非要加上一个玄学的优化才能过掉 阅读全文
posted @ 2019-06-28 14:30 jrltx 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个怪物和k种属性,当且仅当你的每种属性都大于等于怪物的属性才可以击杀它,且击杀怪物可以提升你一定的属性值。求可击杀怪物的最大数量以最终的属性值。 这不就是银行家算法里的安全性检验么? 本题的时限比较严,需要用fread来加速读入 第一种做法是对每种属性建一个优先队列,每个优先队列里存放怪物 阅读全文
posted @ 2019-06-28 08:20 jrltx 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题目链接 感谢Dream_Lolita的题解,经过无数次失败的尝试之后终于AC了... 线段树是维护区间信息的强大工具,但它的形态是固定的,只支持修改和删除操作,不支持插入、反转、复制、分裂合并等操作,而treap支持。这道题有个区间复制的操作,因此只能用treap来代替了。 注意几个坑点: 1.对 阅读全文
posted @ 2019-06-27 16:15 jrltx 阅读(586) 评论(0) 推荐(1) 编辑
摘要: 题目链接 文艺平衡树的可持久化版,可以使用treap实现。 作为序列使用的treap相对splay的优点如下: 1.代码短 2.容易实现可持久化 3.边界处理方便(splay常常需要在左右两端加上保护结点以防越界,而treap一般不用) 可以分裂合并的treap一般称作无旋treap或FHQ-tre 阅读全文
posted @ 2019-06-27 15:44 jrltx 阅读(197) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 21 下一页