随笔分类 - 数据结构-树状数组
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3594 【题目大意】 给出一个数列,选出k个区间使得区间内数全部加1, 求k次操作之后最长的不下降子序列 【题解】 我们发现,每次的区间右端点一定贪心选到最右端才是最优的, 那么在用树状数
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2738 【题目大意】 给出一个方格图,询问要求求出矩阵内第k小的元素 【题解】 我们对答案的大小进行整体二分,用二维树状数组维护二维区间和, 将超过数量的分治到左区间,不满足的分治到右区间
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2683 【题目大意】 给一张二维表,要求支持两种操作,查询矩阵和以及增加单个格子的数值 【题解】 对于区间询问拆点 1.读入询问,按x排序 2.将[L,R]中的数分为前部分操作,后部分操作
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2789 【题目大意】 给出两个字符串,通过A字符串相邻之间字符的交换得到B字符串, 求最小的交换次数 【题解】 最小交换则对于同个字符来说前后顺序不变,我们得到B序列的字符在A序列中的位置
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3289 【题目大意】 求静态区间逆序对。 【题解】 我们对查询进行莫队操作,对于区间的删改我们可以计算出改变量对于逆序对的贡献, 利用树状数组维护即可。 【代码】
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3790 【题目大意】 问最少用几个回文串可以构成给出串,重叠部分可以合并 【题解】 我们先用manacher处理出每个位置最长的回文串, 那么题目就转化为求最少的线段来覆盖全区间,那就是经
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3378 【题目大意】 给出一个序列,求序列中长度等于5的LIS数量。 【题解】 我们发现对于每个数长度为k的LIS有dp[k][i][a[i]]=dp[k-1][i-1][0~a[i]-1] 我们用5个树状数组维护不同长度的LIS,
阅读全文
摘要:【题目链接】 http://codeforces.com/problemset/problem/380/C 【题目大意】 给出一个括号序列,求区间内左右括号匹配的个数。 【题解】 我们发现对于每个右括号,其匹配的左括号是固定的, 我们保存每个右括号匹配的左括号位置, 对区间询问进行线扫描,将扫描的区
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1109 【题目大意】 Mary在她的生日礼物中有一些积木。那些积木都是相同大小的立方体。 每个积木上面都有一个数。Mary用他的所有积木垒了一个高塔。 妈妈告诉Mary游戏的目的是建一个塔
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1106 【题目大意】 给定玩家一个有2n个元素的栈,元素一个叠一个地放置。 这些元素拥有n个不同的编号,每个编号正好有两个元素。 玩家每次可以交换两个相邻的元素。如果在交换之后,两个相邻的
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1878 【题目大意】 给出一个数列,给出m个查询,每次查询一个区间中不相同的数字个数 【题解】 我们记录每一个位置上下一个相同相同元素的位置,当扫描线扫过当前点时 我们消除这个点的影响,并
阅读全文
摘要:【题目链接】 http://codeforces.com/contest/786/problem/C 【题目大意】 给出一个数列,问对于不同的k,将区间划分为几个, 每个区间出现不同元素个数不超过k时最少的区间划分数量。 【题解】 我们可以用树状数组+扫描线求出一个区间不同元素的数量, 我们记录每一
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=2155 【题目大意】 要求维护两个操作,矩阵翻转和单点查询 【题解】 树状数组可以处理前缀和问题,前缀之间进行容斥即可得到答案。 【代码】
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3109 【题目大意】 在一个棋盘上放满白子,现在把一些白子变成黑子, 如果一个白子上下左右都有黑子,就会变成黑子,问最终黑子个数 【题解】 首先我们在每列的开头和结尾做标记,之后对行线扫描, 如果是列的开头,那么在该列中标记,如果是
阅读全文
摘要:【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5773 【题目大意】 给出一个非负整数序列,其中的0可以替换成任意整数,问替换后的最长严格上升序列长度。 【题解】 由于0的任意性,因此,最后的答案,将0全部选上,是最优的,因此我们只需知道在0之间可
阅读全文
摘要:【题目链接】 http://codeforces.com/contest/703/problem/D 【题目大意】 给出一个数列以及m个询问,每个询问要求求出【L,R】区间内出现次数为偶数的数的异或和。 【题解】 显然,我们很容易求出区间内出现次数为奇数的数的异或和,那么如果我们可以求出区间内出现的
阅读全文
摘要:【题目链接】 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4959 【题目大意】 给出一些飞船的位置,每艘飞船用绳子和序号相邻的飞船相连,
阅读全文
摘要:【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5877 【题目大意】 给出一棵带权有根树,询问有几对存在祖先关系的点对满足权值相乘小于等于k。 【题解】 我们沿根节点开始将点权加入权值树状数组,每次处理完子树就回溯,保证每个节点的答案统计是在只包括
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1103 【题目大意】 给出一棵树,每条边的经过代价为1,现在告诉你有些路不需要代价了, 以A x y形式给出,表示x到y的路不再需要代价,同时还有查询操作W x, 查询1到x的路径需要多少
阅读全文