数据结构
文章平均质量分 85
nndxy
永不丧失对生活的热情,人生就是要不停地战斗!
展开
-
hihoCoder_#1066_无间道之并查集
#1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗、阳光明媚、鸟语花香,空气中弥漫着春天的气息……额,说远了,总之,小Hi和小Ho决定趁着这朗朗春光出去玩。 但是刚刚离开居住的宾馆不久,抄近道不小心走入了一条偏僻小道的小Hi和小Ho就发现自己的前方走来了几个彪形大汉,定睛一看还都是地地道原创 2015-08-01 22:49:45 · 1100 阅读 · 0 评论 -
POJ_4002 && HDU_4122 Alice's mooncake shop(RMQ)
题意: Alice开了一个24小时营业的月饼店,从2000年1月1号0点开始营业,营业M个小时。 Alice只在整点时刻做月饼,做月饼不花时间。 每一个时刻做月饼的成本不一样,每个月饼的保质期为T,月饼的存储费用是每块月饼每小时花费S。 现在又N个订单,问完成这些订单需要花费的最少成本。 分析: RMQ预处理即可。此题关键是对表达式化简,假设点餐时间是nowT,若在 i 时间做月饼,那么一个月饼的花费是 cost[i] + (nowT - i) * S,化简得(cost[i] - i * S)原创 2015-11-10 17:14:19 · 1126 阅读 · 0 评论 -
HDU_4123 && POJ_4003 Bob’s Race (dfs / bfs + RMQ + 尺取)
题意:一棵树上有 N 个节点、N - 1 条边,现在给每个询问一个Q,在节点区间 [ 1, N ] 内找出一个最大的区间,使得以里面节点为起点的最长路径的极差小于等于Q。 分析:该题就是三个算法的结合。 1)预处理出每个节点能到达的最长路径,这个由三次 dfs 或 bfs 即可得到(树上每个节点的最长路径求法:点击这里); 2)用RMQ预处理出区间的最大值以及最小值; 3)用尺取法求得最大区间。设定两个指针 s、t 分别指向数组头,然后开始往后扫,如果区间的max[s, t] - min[s, t] <=原创 2015-11-10 16:57:33 · 808 阅读 · 0 评论 -
hihoCoder_#1069_最近公共祖先·三(RMQ-ST模板)
分析:LCA的在线算法,RMQ-ST算法。留存作为模板。 从树的根节点开始进行深度优先搜索,每次经过某一个点——无论是从它的父亲节点进入这个点,还是从它的儿子节点返回这个点,都按顺序记录下来。这样,就把一棵树转换成了一个数组。而找到树上两个节点的最近公共祖先,无非就是找到这两个节点第一次出现在数组中的位置所囊括的一段区间中深度最小的那个点。所以,方法也就出来了。 步骤: 1)dfs计算出每个节点的深度depth[],每个节点第一次出现的位置first[]。id[]数组保存当前节点。 2)RMQ-ST原创 2015-08-07 17:26:05 · 1382 阅读 · 0 评论 -
uva_11732_"strcmp()" Anyone?(字典树)
题意:对给定的字符串,问任意两个字符串进行strcmp()函数语句一共执行了几次。 分析:字典树问题,边插入边统计。可以想到的是,如果两个字符串不相同,那么一定是奇数次;如果两个字符串完全相同,那么则是这两个单词比较次数是偶数即2*(len+1)次;而处理两个单词是完全相同,则在字典树加一个tail标记结尾即可,并可直接使用tail统计结尾个数以便于计算比较次数。此题数据量比较大,用指针操作字典树超时了,改成结构体数组过了,还有uva用%lld!切记!切记!!!原创 2015-09-08 21:28:00 · 548 阅读 · 0 评论 -
hihoCoder_#1068_RMQ-ST算法
分析:用pre_calc[L, Len]表示左边界为L,长度为Len的区间中的最小值——那么对于一个询问[Li, Ri],我只要找到小于这个区间长度的最大的2的非负整数次幂——T,那么这个区间中的最小值就是min{pre_calc[Li, T], pre_calc[Ri-T+1, T]}。 对于对于所有的i满足1<=i<=N, pre_calc[i, 1]就是代表标号为i的物品重量weight_i;那么对于,所有的i, j满足1<=i<=N, 1<2^j<=N,pre_calc[i, 2^j]=min{p原创 2015-08-05 16:35:34 · 1733 阅读 · 0 评论 -
NYOJ_119_士兵杀敌(三)(RMQ-ST)
分析:RMQ-ST算法模板题。原创 2015-08-05 23:52:50 · 961 阅读 · 0 评论 -
POJ_2503_Babelfish(map or 字典树)
题意:就是对应翻译,如果没有找到翻译就输出“eh”。原创 2015-03-29 23:50:05 · 703 阅读 · 0 评论 -
HDU_2846_Repository(字典树)
题意:给定P个字符串,然后有Q个询问,每次询问给出一个字符串,问给定的P个串中有多少个串包含了它。原创 2015-03-25 20:25:33 · 666 阅读 · 0 评论 -
2015 ACM Arabella Collegiate Programming Contest(F题)
题意:给你一个字符串,串中只能出现小写字母和‘?’。'?'可以代替任何小写字母。现在给你m对(x,y),必须使得第x个字符和第y个字符相同,并且该字符串必须为回文串。现在问组成回文串的方案数。原创 2015-05-04 14:12:10 · 1585 阅读 · 0 评论 -
HDU_1671_Phone List(字典树)
题意:判断给定号码中是否存在某个号码是其他某号码的前缀,存在输出“NO”,否则输出“YES”。原创 2015-03-25 01:23:38 · 724 阅读 · 0 评论 -
HDU_4287_Intelligent IME(字典树)
题意:手机英文输入法九宫格键盘中,2~9数字各自代表了自己的字母,求给出的几个数字串分别能够打出下列几个英文单词。原创 2015-03-27 00:32:53 · 979 阅读 · 0 评论 -
HDU_1075_What Are You Talking About(字典树)
题意:作者遇到了美腻的Mars小姐,但是苦逼的是他听不懂她说的话,于是Mars小姐给他一本Mars-English字典。现在给出好多对English-Mars单词对,要你把Mars句子翻译 成英文。Space(' '), tab('\t'), enter('\n')还有标点符号不要翻译,还有不能翻译的火星文也不要翻译。原创 2015-03-27 00:51:15 · 748 阅读 · 0 评论 -
POJ_2001_Shortest Prefixes(字典树)
题意:求给出的每个单词的“标志前缀”,即此前缀只能在此单词中有,而其他单词不拥有,所以叫做标志前缀。原创 2015-03-29 23:46:29 · 681 阅读 · 0 评论 -
HDU_1247_Hat’s Words(字典树)
题意:问给定的单词中,输出可以由另外两个单词拼成的单词,按照字典序输出。原创 2015-03-25 22:08:31 · 650 阅读 · 0 评论 -
HDU_1251_统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Submission(s): 20365 Accepted Submission(s): 8878 Problem Description Ignatius最近遇到一个难题,老师交给他很原创 2015-03-24 01:59:39 · 669 阅读 · 0 评论 -
POJ_2823_Sliding Window(RMQ / 单调队列)
题意:有n个数,每次从左到右选取k个数,第一行选取每个区间中的最小值输出,第二行每次选取区间中的最大值输出。 分析:RMQ或单调队列求解。 RMQ:题目数据量比较大,如果用一般的二维数组显然是要MLE的,由于此题是固定的区间长度,所以只要用一维数组即可,第二维可以省略。 单调队列:数组模拟队列,用deque会超时。原创 2015-08-21 22:32:36 · 914 阅读 · 2 评论