01 2018 档案
摘要:对于带修改的区间求和能做到O(n log n)预处理,O(log n)查询;而不带修改的可以做到O(n)预处理,O(1)查询。那么不带修改的区间最值能做到O(1)查询吗? 区间最值有这样一个性质:对于一段区间的两个子区间,如果它们覆盖了整个区间(可以有重叠部分),那么这两段区间各自的最大(或最小)值
阅读全文
摘要:为了反驳隔壁很对劲的太刀流,并不对劲的片手流将与之针锋相对。 很对劲的斜堆、左偏树简明教程-> 它们是可并堆的两种实现方式。 (还是假装二叉堆只包括小根堆。) 斜堆的缺点在于,每次合并的堆大小不同,无条件交换左右子树可能遇到某些坑孙子的数据,复杂度会变得玄学。 左偏树是在斜堆上有所改进的。根据斜堆的
阅读全文
摘要:为了反驳隔壁很对劲的太刀流,并不对劲的片手流将与之针锋相对。 很对劲的斜堆、左偏树简明教程-> 它们是可并堆的两种实现方式。 (假装二叉堆只包括小根堆。) 二叉堆该如何合并?先想一种暴力的。 现在有根的键值较小的二叉堆A,键值较大的二叉堆B。 在合并后,A的根肯定还是根。若A的左、右子树都不为空的话
阅读全文
摘要:顾名思义,就是对于每次操作,将用新的节点替代本应修改的节点。由于每次单点修改只会改log n个节点,所以动态开点可以做到空间是q log n + n的。 这是一棵对劲的线段树,要修改这一串红色的点。普通的线段树是直接修改。 对于可持久化线段树而言,则是新建一些节点,替换掉应该修改的节点。原来的节点不
阅读全文
摘要:并不对劲的片手流在为很对劲的太刀流调树剖时发现线段树写错了的时候整个人都不好了,决定反驳隔壁很对劲的太刀流并与之针锋相对。 很对劲的太刀流在这里-> 听上去像是熟练剖粪。 一棵树可以看成是很多条链组成的。那么把这些链拼成一条线,在树上进行区间操作时就可以将每次操作的部分拆成很多段连续的部分。这样就可
阅读全文
摘要:俗话说的好,心中有党,常数极小。 1、循环中加寄存器优化for(register int i;i<=n;i++){} 好像在开O2时这个没什么用。 2、函数前inline int f(int x){} 当调用函数本身的时间长度比执行函数的更长时效果会更显著。配合read()、write()使用更佳。
阅读全文
摘要:先膜一波宽神Orz%%%%% 拿到这题的第一反应就是:暴力啊!感觉神奇的钟点并没有什么性质,可能卡常能过吧……所以就写了一个O(22^3*59^3)的暴力。本来想打表,但是发现代码长度有限制,写不下。写完后发现,总共只有127034种神奇的钟点,所以当k特别大时,直接输出-1就可以了。如果数据纯随机
阅读全文
摘要:题意是求一个字符串每个长度的子串出现次数最多的那个出现了多少次,也就是求每个到根的最长路的right集合最大值 。 先建后缀自动机,然后将每个前缀所在的集合的初值设为1,因为所有前缀的right集合肯定不相同,而且它们包含了所有位置。 接下来按到根的最长距离从大到小排序,将right集合累加到par
阅读全文
摘要:Time Limit: 20 Sec Memory Limit: 162 MB Submit: 931 Solved: 509 [Submit][Status][Discuss] Description Z国坐落于遥远而又神奇的东方半岛上,在小Z的统治时代公路成为这里主要的交通手段。Z国共有n座城市
阅读全文
摘要:题目描述 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。 输入输出格式 输入格式: 第 1 行有 2 个正整数 m 和 n,分别
阅读全文
摘要:三倍经验题! ********************题目略长********************** 题目描述 一个餐厅在相继的N天里,第i天需要ri块餐巾(i=l,2,…,N)。餐厅可以从三种途径获得餐巾。 (1)购买新的餐巾,每块需p分; (2)把用过的餐巾送到快洗部,洗一块需m天,费用需
阅读全文
摘要:最小费用最大流肯定要保证最大流,所以它和最大流有一些类似的性质。如果把费用看成边,就可以每次走最短路(保证费用最小),走到不能走为止(保证最大流)。费用流版的ek就是这样。需要注意的是,反向弧的边权为它对应的正向弧的费用的相反数,所以最短路要用spfa来求。 费用流版的dinic,又叫zkw费用流,
阅读全文
摘要:网络流问题可以看成是从一个单位时间流量超级大的水龙头经过一些粗细不一的水管流向下水道的问题,一般情况下是要求合理分配流量,使得单位时间内流向下水道的水量最大。 现在,水龙头开闸放水,假设自己是一个水分子。那么会怎么走呢?当然是找出一条能走到下水道的并且没有被流满的路,然后沿着这条路走到下水道就行了。
阅读全文
摘要:题目略长,就从大视野上复制了。 听上去好像费用流,然而…… ***************************表示略长的题目的分界线************************ 1495: [NOI2006]网络收费 Description 网络已经成为当今世界不可或缺的一部分。每天都有数以
阅读全文
摘要:题意是求多个串的lcs。 这也是道后缀自动机的模板题。对于任意一个字符串建后缀自动机,用其他串查询就行。对于后缀自动机的每个状态要额外记匹配到当前状态的最大长度。 和spoj1811的区别在于这道题不方便后缀数组做。当然,如果不嫌很多个串用奇怪的字符连起来麻烦、判断时常数极大的话,也可以试试。 字符
阅读全文
摘要:题意是求两个字符串的lcs,两个串都只包含小写字母。 本题既可以用后缀自动机,又可以用后缀数组。 对于后缀自动机,就是一道模板题,直接对于一个字符串建后缀自动机再用另一个串查询就行。 对于后缀数组,其实也是一道模板题,但不是后缀数组的模板,而是用后缀数组求同一字符串的两个后缀的最长公共前缀的模板。
阅读全文
摘要:后缀自动机是个好东西,代码短还很快。 这是因为根到一个节点的不同路径表示所有有某种相同性质的不同字符串。 假设对于字符串S建后缀自动机,以下名词的意思是: right(S的子串s):s在S中出现的位置的右端点的集合; 状态:有同样right集合的子串,某状态的right集合是指该状态的所有字符串的r
阅读全文
摘要:后缀数组sa(x)表示排序后第x位在排序前的位置。 这个东西的求法有两种,一种是倍增,时间复杂度o(n log n)或o(n log2n),另一种是用不知道什么方法做到的o(n)。 至于第二种方法是什么,并不对劲的人并不知道,所以只说倍增。 考虑正常地比较两个字符串,都是从头比较到尾: 那么,如果把
阅读全文
摘要:听上去像是破坏植物的暴力行为(并不)。 可以快速查询某个字符串在某个字符串集中出现了几次,而且听上去比字符串哈希靠谱。 把整个字符串集建成树,边权是字符,对于字符串结尾的节点进行特殊标记。 这样一方面合并了前缀,节省空间;另一方面查询很方便,直接按边走就行。 #include<iostream> #
阅读全文
摘要:俗话说得好:心中有党,常数极小。 但有时只凭思想觉悟是无法减小常数的,而有些思想觉悟低的题非要卡常。 这时就可以采用读入/输出优化了。
阅读全文
摘要:这像是能解决所有问题的样子(并不)。AC自动机之所以叫AC自动机是因为它能解决所有AC自动机的题。 其实只能解决的是很多模式串匹配一个母串的问题。 把kmp中的next数组得到下一次跳转的位置看成特殊的边,把字符串看成链,就会得到一个特殊的图。 一个点u的next连向点v对应的字符串是u最长的后缀,
阅读全文
摘要:这道题在好多测评网站都可以提交。 这次用平衡树维护的不是每个数的值,而是顺序。 至于区间操作,每次把左边界左边的那个点旋转到根,把右边界右边的那个点旋转到根的右儿子。 然后你就会惊讶(并不)地发现:这个区间都被转到蓝色区域去了!(毕竟是l-1<rank<r+1的部分) 这样就可以在这个区间的根节点,
阅读全文
摘要:splay和不加任何旋转一定会被卡的二叉搜索树的唯一区别就是每次操作把当前节点旋转到根。 旋转有各种zig、zag的组合方式,感觉很麻烦,并不对劲的人并不想讲。 其实可以找出一些共性将它们合并。设ls(a)=[点a是其父亲的左儿子],son[a][0]=a的左儿子,son[a][1]=a的右儿子,f
阅读全文
浙公网安备 33010602011771号