随笔分类 -  基础数据结构

摘要:注意:本题解仅供参考学习,请勿直接抄袭代码,否则造成的后果和笔者无关。 第一题: 题意: 对n个数升序排序。 题解: 快排,不解释。 代码(省略了输入输出函数,下同): 1 val n = getInt (); 2 val l = getIntTable (n); 3 fun qsort [] = 阅读全文
posted @ 2019-11-11 11:49 YuanZiming 阅读(1509) 评论(0) 推荐(0)
摘要:bzoj2288【POJ Challenge】生日礼物 题意: 给一个序列,求不超过m个连续的部分,使元素和最大。序列大小≤100000 题解: 先把连续的正数和负数合并起来,接着如果正数个数小于m则全选,否则需要确定去掉那个正数或合并哪个正数。初始ans设为所有正数和,将所有的数按绝对值大小放入堆 阅读全文
posted @ 2016-09-11 14:36 YuanZiming 阅读(162) 评论(0) 推荐(0)
摘要:bzoj1150[CTSC2007]数据备份Backup 题意: n个地方,在其中找k对地方,每个地方只属于一对。定义一对的费用为两个地方的距离,求最小费用总和。 题解: 把所有相邻地方距离放入一个集合中,每次取出最小的那个距离x,然后将相邻两边的距离l,r合并成l+r-x。如果这个x缺一边相邻,则 阅读全文
posted @ 2016-09-04 16:06 YuanZiming 阅读(252) 评论(0) 推荐(0)
摘要:bzoj3940[Usaco2015 Feb]Censoring 题意: 有一个S串和一大堆T串,不断地在S串里找最早出现的T串,然后将其删除。S串≤100000,T串总长度≤100000。 题解: 对所有T串建AC自动机,然后同bzoj3942。注意,本题的AC自动机必须利用所有fail函数建成一 阅读全文
posted @ 2016-09-04 14:52 YuanZiming 阅读(286) 评论(0) 推荐(0)
摘要:bzoj3942[Usaco2015 Feb]Censoring 题意: 有一个S串和一个T串,不断地在S串里匹配T串,然后将其删除。S串、T串长度≤1000000。 题解: 用1、2两个栈,每次将S串的当前字符压入1栈,当前匹配到T串的位置压入2栈,如果匹配出一个T串,则让1、2栈中匹配T串的子串 阅读全文
posted @ 2016-08-26 19:38 YuanZiming 阅读(240) 评论(0) 推荐(0)
摘要:bzoj1106[POI2007]立方体大作战tet 题意: 给定玩家一个有2n个元素的栈,这些元素拥有n个不同的编号,每个编号正好有两个元素。玩家每次可以交换两个相邻的元素。如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除,所有在他们上面的元素都会掉落下来并且可以导致连锁反应。求最少的 阅读全文
posted @ 2016-08-14 08:27 YuanZiming 阅读(191) 评论(0) 推荐(0)
摘要:bzoj1483[HNOI2009]梦幻布丁 题意: N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色。 题解: 给每个颜色建一个链表。先预处理出答案,然后每次修改颜色时将两个链表合并,同时将修改后颜色对答案的贡献重新计算(如果两个节点的位置相 阅读全文
posted @ 2016-07-09 22:16 YuanZiming 阅读(278) 评论(0) 推荐(0)