上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页
摘要: 思路 不得不说,罗穗骞太厉害了 他写的论文比哪一篇博客都好 去看吧,也别看我的了 里面有这题目详解 "论文" 代码 cpp // 不得不说,罗穗骞nb哇,%%%%%%%%% / 0 0 1 1 2 2 3 3 4 10 1 2 3 4 5 1 2 3 4 5 差分 1 1 1 1 0 1 1 1 1 阅读全文
posted @ 2018-12-20 14:35 ComplexPug 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 前言 其实就是个后缀数组模板题 可还是有几个的地方不太明白 思路 先将子串复制一遍,组成长度为2 n的子串 给出的子串一定会在前n个后缀 而且后面的优先级不会影响前面的相对大小 然后求得sa输出就好 输出的时候把没有必要输出的忽略掉就好 代码 cpp include define FOR(i,a,b 阅读全文
posted @ 2018-12-18 20:07 ComplexPug 阅读(121) 评论(0) 推荐(0) 编辑
摘要: [TOC] 前置 纯属博主虎的的 "罗穗骞2009NOI集训队论文" 还是原版的最明白啊 先了解基数排序和倍增求sa思想 并且有一定的看别人博客的基础(对,没错,就是这么不要脸) 基数排序= "博客" 这里主要说一下代码的理解及重要点 重点及其目标 根据后缀子串,他们一定是两两不同的 rk和sa也是 阅读全文
posted @ 2018-12-18 17:11 ComplexPug 阅读(130) 评论(2) 推荐(0) 编辑
摘要: 基数排序 无人问津的优秀算法 在这个被stl的sort独霸的c++世界(毕竟stl的sort太过好用) 似乎所有普通排序算法都被挤到了一边,但毕竟各有各的优点 这个排序算法还是不错的 但最近学习后缀数组的时候遇到了这个算法,就简单学习一下吧 介绍 多关键字排序中有两种方法:最高位优先法(MSD)和最 阅读全文
posted @ 2018-12-18 11:43 ComplexPug 阅读(1059) 评论(0) 推荐(0) 编辑
摘要: 前言 考试的时候居然想错了区间贡献,mdzz 思路 题目看着很方啊,难道要树套树? 但数据范围提醒我们,是nlogn的复杂度 Sort(S)的定义是不是很鬼畜 但我们~~不动脑子的~~打表容易发现 连续区间[1,n]内$a_i^2 a_{i 1}^2$为连续的奇数 (其实这里直接用初中的完全平方公式 阅读全文
posted @ 2018-12-17 10:34 ComplexPug 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目 树上求子树内出现次数 =1且在区间【l,r】内的数 题解 这道题的最初版本是询问子树不同颜色个数, 是一道很经典的 “树比序列容易” 的题. 在树上可以这样做: 对于每一种颜色, 将这种颜色的点提取出来按 DFS 序排序; 令每个点的贡 献为 1, 相邻点的 LCA 的贡献为 −1, 于是问题 阅读全文
posted @ 2018-12-15 18:35 ComplexPug 阅读(110) 评论(2) 推荐(0) 编辑
摘要: 思路 序列中 |i | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| | | | | | | | | | | | | |a[i]| a| b| c| L| d| e| f| R| g| h| 现逆序对为ans,要交换L,R 则$[1,3],[9,10]$这两段区间的都不会被他俩影响 阅读全文
posted @ 2018-12-14 20:23 ComplexPug 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 思路 模拟就好 左偏树合并 并查集寻找 代码 cpp include define FOR(i,a,b) for(int i=a;i'9'||s='0'&&sval[y]) swap(x,y); ch[x][0]=merge(ch[x][0],y); if(dis[ch[x][0]] 阅读全文
posted @ 2018-12-13 10:37 ComplexPug 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 思路 合并时候统计逆序对贡献 代码 cpp include define FOR(i,a,b) for(int i=a;i'9'||s='0'&&s 1; if(k 阅读全文
posted @ 2018-12-13 09:26 ComplexPug 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 思路 又是强制在线 主席树 每一次操作建一棵树 但实际用的的rt只有n个 所以实际内存是n 2 30 我见到只开n 30的,不会, 错误 debug 以为每一秒建立一颗树 第一次 query没有递归 第二、三次 权值线段树的查询处理,就是到叶子节点的处理 代码 cpp // luogu judger 阅读全文
posted @ 2018-12-12 16:27 ComplexPug 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 思路 强制在线 主席树 以1为root建主席树 (就是在树上建树,差不多) rt[i]就是1到i的路径上的一棵树的root 其实我感觉,主席树之间的运算差不多于加减 类似lca的运算 root(1到x)+root(1到y) root(lca) root(fa[lca]) 查询他们的第k小就OK 错误 阅读全文
posted @ 2018-12-12 10:41 ComplexPug 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 思路 区间内x出现次数大于一半 区间内排序,则x一定会在(一半+1)的位置上出现 找到那个数,再检查一下就好 错误 快读写错了、、,又浪费了1h 代码 cpp include define FOR(i,a,b) for(int i=a;i='9'||s='0'&&s 1; if(k 1; if(to 阅读全文
posted @ 2018-12-12 09:28 ComplexPug 阅读(143) 评论(2) 推荐(0) 编辑
摘要: 前置知识: 普通主席树,树状数组 大概 待修主席树 和静态的一样 只不过还要加一颗树 来维护你修改的值 这棵树就是是树状数组,每个节点上再维护一颗动态开点线段树 (就是所说的树套树,不过没啥可怕的,就是麻烦一丢丢) 查询的时候老样子 不过要多加上树状数组中的值罢了 代码还算好些,如果 主席树,树状数 阅读全文
posted @ 2018-12-11 21:58 ComplexPug 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 思路 若opt=1 则为操作1,之后有三个数l,r,k 表示查询k在区间[l,r]的排名 若opt=2 则为操作2,之后有三个数l,r,k 表示查询区间[l,r]内排名为k的数 若opt=3 则为操作3,之后有两个数pos,k 表示将pos位置的数修改为k 若opt=4 则为操作4,之后有三个数l, 阅读全文
posted @ 2018-12-11 12:28 ComplexPug 阅读(259) 评论(0) 推荐(0) 编辑
摘要: [TOC] 思路 每个节点维护一课线段树(当然是动态开点) 线段树的作用是统计这个节点有多少种粮食型号,以及最多的粮食型号 然后树上差分,u和v点 +1,lca(u,v)和f[lca(u,v)] 1(不显然就画图喽) 并不用转化为dfs序 只需要dfs一边,自底向上合并就好 优化 删除节点不必建树 阅读全文
posted @ 2018-12-10 21:53 ComplexPug 阅读(155) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页