
数据结构
文章平均质量分 75
yunyouxi0
这个作者很懒,什么都没留下…
展开
-
POJ 1201 Intervals (差分约束系统, 贪心+线段树)
题目类型 Dijkstra算法的运用题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i]原创 2014-09-11 23:10:09 · 1029 阅读 · 0 评论 -
POJ 2774 Long Long Message (后缀数组)
题目类型 后缀数组题目意思问两个最长 1e5 的字符串的最长公共子串解题方法在第一个字符串后添加一个区别于输入的所有字符的字符(例如 '#') 后再把第二个字符串添加在后面 构成一个新的字符求这个新字符串的 height 数组二分最长公共子串的长度然后判断是否可行 假设当前判断的长度为 mid 判断方法是 从小到大扫一次原创 2015-04-12 19:36:40 · 713 阅读 · 0 评论 -
POJ 3691 DNA repair (AC自动机+dp)
题目类型 AC自动机+dp题目意思给出最多 50 个最长 20 的不好的字符串 问给出一个最长 1000 的字符串至少要修改多少个字符才可以使这个字符串不包含不好的字符串字符串只含有(A,G,C,T)这四种字符解题方法用输入的 不好的字符串 构造ac自动机 (结点数不会超过 1000) 然后进行普通的匹配过程, 简单地理解为在ac自动机上进行原创 2015-04-07 20:21:44 · 692 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes (字典树)
题目类型 字典树题目意思给出最多 1000 个最长 20 的字符串 问每个字符串可以准确识别的最短识别长度对应的字符串是什么准确识别长度的意思是如果前这个长度的字符都匹配的话那么就肯定是这个字符串了(即没有其他字符串符合这个要求 除非那个字符串就只由这么多字符组成)解题方法字典树 记录每个结点被遍历的次数 查询的时候当某个结点遍历次原创 2015-03-18 21:58:06 · 588 阅读 · 0 评论 -
POJ 3461 Oulipo (简单kmp)
题目类型 kmp题目意思问一个最长 10000 的串在一个最长 100 0000 的串中出现了多少次 (可重叠)解题方法kmp的基本用法 理解清楚失配函数的定义即可参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#include #include #include using namespace std原创 2015-03-18 23:50:45 · 567 阅读 · 0 评论 -
POJ 1442 Black Box (数据结构)
题目类型 数据结构题目意思给出最多30000个数 并最多问30000次当考虑前 x 个数时第 y 小的数是多少 其中 y 从 1-> 30000, 对应的 x 输入给出解题方法可以用线段树, treap, splay 等数据结构做参考代码 - 有疑问的地方在下方留言 看到会尽快回复的treap#include原创 2015-02-13 20:48:35 · 612 阅读 · 0 评论 -
POJ 3481 Double Queue (数据结构)
题目类型 数据结构题目意思给出一系列指令 其中指令 1 插入一个优先级为 B 值为 A 的人指令2 去掉优先级最高的人并输出这个人的值指令3 去掉优先级最低的人并输出这个人的值解题方法很多方法都可以做 例如 优先队列 线段树 treap 伸展树等参考代码 - 有疑问的地方在下方留言 看到会尽快回复的原创 2015-02-12 20:16:35 · 643 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (线段树)
题目类型 线段树 - 区间修改题目意思给出最多100000个数 现在有最多100000个操作操作1 把 区间 [L,R]中的数加上一个数c操作2 询问区间 [L,R]中的数的和是多少解题方法区间修改的线段树注意懒惰标记的使用就行了参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#includ原创 2014-12-01 21:38:24 · 601 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (打表+线段树)
题目类型 打表+线段树题目意思有最多500000个人按顺时针排成一个圈,每个人拥有一个数,刚开始第k个人出去,下一个出去的人根据上一个出去的人手中的数决定 如果那个数是正数A 则表示上一个出去的人顺时针方向第A个人是下一个出去的人 如果是负数A表示上一个出去的人逆时针方向第-A个人是下一个出去的人 如果一个人是第p个出去的人那么他将获得 f(p)块糖果,f(p)表示能原创 2014-12-01 20:48:24 · 543 阅读 · 0 评论 -
POJ 3667 Hotel (线段树)
题目类型 线段树题目意思给出最多50000个房间 最多有50000个操作操作1 安排x个连续的空房间 (尽量安排靠前的,如果不能安排输出0) 并输出安排的第1个房间的编号操作2 把房间 [x, x+d-1] 置空解题方法用 nmax[rt] 表示rt这棵线段树中最长的连续房间数量是多少 lmax[rt]表示rt这棵线段树原创 2014-12-01 22:28:03 · 538 阅读 · 0 评论 -
POJ 2481 Cows (线段树)
题目类型 线段树题目意思给出最多100000头牛的两个属性S和E 对于牛i 和牛j 如果 Si = Ej && Ei - Si > Ej - Sj 则牛i比牛j强壮现在问对于所有的牛 比它强壮的牛有多少头解题方法从题目的条件可以发现 如果 Ei >= Ej && Si = Ej - Sj 也会成立 所以就两个值都相同的情况特殊一点而已原创 2014-11-29 15:25:19 · 616 阅读 · 0 评论 -
POJ 3368 Frequent values (RMQ)
题目类型 RMQ题目意思给出最多包含100000个数的非递减数列 有最多100000次询问 每次询问 第 L 个数到第 R 个数之间最长的每个数都相同的连续子序列是多长解题方法可以使用ST算法首先预处理 把原数列连续相同部分压缩成一个整数 例如 1 1 1 2 2 3 3 3 3 压缩成 3 2 4 并记录压缩后每个数对应的原子序列的开原创 2014-11-29 15:09:14 · 554 阅读 · 0 评论 -
POJ 1330 Nearest Common Ancestors (LCA)
题目类型 简单的LCA题目意思给出一棵树 问其中一对点的LCA是哪个结点解题方法可以使用 tarjan 算法参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#include #include #include #include using namespace std;const int maxn原创 2014-11-25 17:35:49 · 527 阅读 · 0 评论 -
POJ 3666 Making the Grade (dp, 数据结构[左偏树, 划分树, 函数式线段树等])
题目类型 dp, 数据结构[左偏树, 划分树, 函数式线段树等]题目意思给出一个最多包含 2000 个在 [0, 1e9] 范围内的数的数列 问把这个数列修改成一个非递增或非递减数列的最小代价代价=原数列的每一个元素和修改后的数列的相应位置的元素的差的绝对值的和解题方法1. dp (离散化)dp[i][j] : 前 i 个元素组成一原创 2015-03-18 20:29:43 · 1144 阅读 · 0 评论