
+数据结构
文章平均质量分 71
hcbbt
这个作者很懒,什么都没留下…
展开
-
HDU 1247 Hat's words(Trie)
HDU 1247 Hat's words(Trie)ACM题目地址: HDU 1247 Hat's words题意: 给些单词,问每个单词是否能用另外两个单词拼出。分析: 直接保存到trie里面,然后暴力切割查询即可。代码:/** Author: illuz * File: 1247.cpp* Crea原创 2014-09-24 15:33:31 · 1562 阅读 · 0 评论 -
HDU 1166 敌兵布阵(线段树入门,单点更新)
HDU 1166 敌兵布阵(线段树入门,单点更新)ACM题目地址:HDU 1166 敌兵布阵题意: 中文题不解释。分析: 经典入门题。代码:原创 2014-08-05 01:27:11 · 1119 阅读 · 0 评论 -
HDU 3264 Balanced Lineup(线段树,最值查询)
HDU 3264 Balanced Lineup(线段树,最值查询)ACM题目地址:POJ 3264 Balanced Lineup题意: 求区间内最大值-最小值。分析: 不用写修改,容易多了。代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt*原创 2014-08-05 01:31:04 · 1065 阅读 · 0 评论 -
中南大学COJ 1216: 异或最大值(数据结构)
中南大学COJ 1216: 异或最大值(数据结构)ACM题目地址:COJ 1216题意: 中文题,注意是多组样例。分析: 用01Trail做的。代码:/** Author: illuz * File: coj1216.cpp* Create Date: 2014-07-27 14:18:44* Descri原创 2014-07-27 15:17:45 · 6081 阅读 · 0 评论 -
XTU 1205 Range 2014湖南邀请赛C 单调栈
XTU 1205 Range 2014湖南邀请赛C 单调栈ACM题目地址:XTU 1205题意: 在一个序列A中,Range(A)=Max(A)-Min(A)+1; 求一个序列的子序列中所有子序列的Range的和。分析: 做了好久。。。多谢Tamara巨巨的指点。 1 2 3 4 5 Range(A)=Max(A)-Min(A)+1; 先别看原创 2014-06-07 23:00:07 · 1820 阅读 · 2 评论 -
HDU 1710 Binary Tree Traversals
Binary Tree TraversalsTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionA binary tree is a finite set of vertices that is either e原创 2013-04-24 23:19:03 · 1932 阅读 · 0 评论 -
UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
栈的练习,如此水题竟然做了两个小时。。。原创 2013-07-05 19:23:00 · 1644 阅读 · 0 评论 -
uva 133 The Dole Queue 双向约瑟夫环 模拟实现
双向约瑟夫环。数据规模只有20,模拟掉了。(其实公式我还是不太会推,有空得看看)值得注意的是两个方向找值不是找到一个去掉一个,而是找到后同时去掉。还有输出也很坑爹!在这里不得不抱怨下Uva的oj,少了个s,少了个空行什么的都不会显示pe,就给个wa,让人还以为算法有问题。原本以为Uva没有pe,然后据说这边的输出空行如果不对的话就会显示pe。。。代码:#includ原创 2013-07-07 01:33:54 · 2923 阅读 · 0 评论 -
URAL 1136 Parliament 二叉树水题 BST后序遍历建树
二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的。跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递归儿子继续建树。代码:#include #include const int maxn = 70000;struct Node { int v; Node *l;原创 2013-07-09 01:21:45 · 1596 阅读 · 0 评论 -
Uva 10305 - Ordering Tasks 拓扑排序基础水题 队列和dfs实现
今天刚学的拓扑排序,大概搞懂后发现这题是赤裸裸的水题。于是按自己想法敲了一遍,用queue做的,也就是Kahn算法,复杂度o(V+E),调完交上去,WA了。。。于是检查了一遍又交了一发,还是WA。。。我还以为是用queue的问题,改成stack也WA,然后干脆放弃STL,手敲了队列,还是WA了。。。我抓狂了。感觉没什么问题的,卡了我一个多小时。最后用样例0 1测试,发现是在输入原创 2013-07-12 00:35:52 · 5635 阅读 · 0 评论 -
poj1577 Falling Leaves
Falling LeavesTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription Figure 1Figure 1 shows a graphical representation of a bi原创 2013-04-24 23:15:14 · 1562 阅读 · 0 评论 -
HDU 2795 Billboard(宣传栏贴公告,线段树应用)
HDU 2795 Billboard(宣传栏贴公告,线段树应用)ACM题目地址:HDU 2795 Billboard题意: 要在h*w宣传栏上贴公告,每条公告的高度都是为1的,而且每条公告都要尽量贴最上面最靠左边的,给你一系列的公告的长度,问它们能不能贴上。分析: 不是很好想,不过想到了就很好写了。 只要把宣传栏倒过来就好办了,这时候就是变成有h条位置可原创 2014-08-06 00:39:48 · 3994 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树,最值查询)
HDU 1754 I Hate It(线段树,最值查询)ACM题目地址:HDU 1754 I Hate It题意: 中文题,不解释。分析: 裸的单点更新求区间最值。代码:原创 2014-08-06 00:15:15 · 1070 阅读 · 0 评论 -
UVA 11732 strcmp() Anyone?(左儿子右兄弟Trie)
UVA 11732 strcmp() Anyone?(左儿子右兄弟Trie)ACM题目地址: UVA 11732 strcmp() Anyone?题意: 问strcmp函数的==语句执行了几次。分析: 大白上的题目。 听说要用左儿子右兄弟的Trie,比较省空间,顺便学了下。 开始先建树记录次数,然后再遍历统计,结果错了... 后面参考了Sho原创 2014-09-24 15:30:57 · 3003 阅读 · 0 评论 -
UVALive 3942 - Remember the Word(DP,数组Trie+指针Trie)
UVALive 3942 - Remember the Word(DP,数组Trie+指针Trie)ACM题目地址: UVALive 3942 - Remember the Word题意: 给一些单词,然后给一个长的单词,问有几种方法能组成这个大单词,单词可以重复用。分析: DP[i]=sum{DP[j} (i,从后往前求。 本来用数组Trie写得爽原创 2014-09-23 21:03:48 · 2218 阅读 · 3 评论 -
HDU 1075 What Are You Talking About (map解法+Trie解法)
HDU 1075 What Are You Talking About (map解法+Trie解法)ACM题目地址: HDU 1075 What Are You Talking About题意: 给出一个“翻译-原文”的对应表,然后给出句子,要把句子中的原文都翻译出来。分析: 可以用map赤裸裸地做,但是比较花费时间,虽然这题时间给了5s,map解法是能原创 2014-09-23 15:39:19 · 4981 阅读 · 0 评论 -
Codeforces Round #261 (Div. 2)[ABCDE]
Codeforces Round #261 (Div. 2)[ABCDE]ACM题目地址:Codeforces Round #261 (Div. 2)A - Pashmak and Garden题意: 一个正方形,它的边平行于坐标轴,给出这个正方形的两个点,求出另外两个点。分析: 判断下是否平行X轴或平行Y轴,各种if。代码:原创 2014-08-16 11:24:15 · 2477 阅读 · 0 评论 -
HDU 1698 Just a Hook(线段树成段更新求和)
HDU 1698 Just a Hook(线段树成段更新求和)ACM题目地址:HDU 1698 Just a Hook题意: [1,10w]范围,初始化是1,然后把多组[a,b]改成c,问最后总的和。分析: 线段树成段更新裸题。代码:/** Author: illuz * Blog: http://blog.c原创 2014-08-15 10:50:22 · 1002 阅读 · 0 评论 -
POJ 2528 Mayor's posters?(线段树成段更新+离散化)
POJ 2528 Mayor's posters?(线段树成段更新+离散化)ACM题目地址:POJ 2528 Mayor's posters?题意: 在[1,10000000]上贴最多10000个线段,问最后有几个线段能露出来。分析: 很明显是线段树的成段更新。 10000000数据量太大,线段树开不了。所以要离散化。 不过要注意离散化时的问题。不能原创 2014-08-15 10:36:31 · 1052 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies?(线段树模拟约瑟夫环,高合成数)
POJ 2886 Who Gets the Most Candies?(线段树模拟约瑟夫环,高合成数)ACM题目地址:POJ 2886 Who Gets the Most Candies?题意: N 个小孩围成一圈,他们被顺时针编号为 1 到 N。每个小孩手中有一个卡片,上面有一个非 0 的数字,游戏从第 K 个小孩开始,他告诉其他小孩他卡片上的数字并离开这个圈,他卡片原创 2014-08-15 10:08:51 · 2062 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers?(线段树成段更新求和)
POJ 3468 A Simple Problem with Integers?(线段树成段更新求和)ACM题目地址:POJ 3468 A Simple Problem with Integers?题意: 给出n个数,q个操作,'C'对区间每个数加值,'Q'查询区间和。分析: 裸的线段树成段更新。代码:/** Author: ill原创 2014-08-15 10:11:27 · 1111 阅读 · 0 评论 -
POJ 2828 Buy Tickets(排队问题,线段树应用)
POJ 2827 Buy Tickets(排队问题,线段树应用)ACM题目地址:POJ 2828 Buy Tickets题意: 排队买票时候插队。 给出一些数对,分别代表某个人的想要插入的位置Pos_i和他的Val_i,求出最后的队列的val顺序。分析: 也是一道很巧妙的题目。 刚开始天真的以为sort一下就行了。wa了一发后发现我错了... 原原创 2014-08-06 00:57:30 · 2743 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)ACM题目地址:HDU 1394 Minimum Inversion Number题意: 给一个序列由[1,N]构成,可以通过旋转把第一个移动到最后一个。 问旋转后最小的逆序数对。分析: 注意,序列是由[1,N]构成的,我们模拟下旋转,总的逆序数对会有规律的变化。原创 2014-08-06 00:25:55 · 2020 阅读 · 0 评论 -
杭电3791 二叉搜索树
二叉搜索树Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1849 Accepted Submission(s): 827Problem Description判断两序列是否为同一二叉搜索树序列原创 2013-04-24 23:09:42 · 1770 阅读 · 0 评论 -
uva 10152 ShellSort 龟壳排序(希尔排序?)
今天状态总是很糟,这种题目卡了一天。。。是不是休息时间太少了,头脑迟钝了。。。名字叫希尔排序,我还以为跟它有关,还搜索了下资料。只要找到trick就会发现是很水的题目。只要对比下就能找到哪些是移动过的龟壳,然后输出就行了。代码:#include #include const int maxn = 1000;char pre[maxn][100], tar[maxn][10原创 2013-07-08 01:02:51 · 1865 阅读 · 0 评论 -
POJ 2418 Hardwood Species 二叉排序树
Hardwood SpeciesTime Limit: 10000MS Memory Limit: 65536KTotal Submissions: 15011 Accepted: 6042DescriptionHardwoods are the botanical group of trees that have b原创 2013-04-25 11:05:44 · 1346 阅读 · 0 评论 -
HDU 3336 Count the string
题意完全和HUST 1328一样,太感动了。具体题解见:HUST 1328 String KMP 递增思路由于直接复制1328的代码,没有改数组大小,re了,有点感动...代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt* File: hdu3336.cpp* Cre原创 2013-12-01 20:51:36 · 980 阅读 · 0 评论 -
UVALive 3027 Corporative Network 并查集水题
题意:有n个数进行,操作,'I'操作把a和b连接起来,而且a和b的距离即|a-b|%1000;'E'操作进行查询那个数到根节点的距离和;'O'操作结束。没有压缩路径的并查集,所以我没有写递归函数直接循环。由于E操作要的是a到根节点的距离和,计算时不需要取余,被坑了好几次。。。代码:/** Author: illuz * Blog: http://bl原创 2013-12-06 00:27:49 · 2139 阅读 · 0 评论 -
HDU 3635 Dragon Balls 并查集水题 模拟
题意:n个龙珠,编号为1...n,分别在编号1....n的城市中。有两种操作,T A B,把A所在的城市的龙珠全部放到B所在的城市里;Q A,查询龙珠A所在的城市,以及城市现在有几个球,以及A被转移了几次。很明显的并查集题目,刚开始没注意看是AB所在的城市,WA了一次...代码:/** Author: illuz * Blog: http://blog.原创 2013-12-06 14:42:55 · 2096 阅读 · 0 评论 -
UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径。裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时。只要判断下起点和终点能不能相连就行了,可以用并查集也可以用floyd算法,这样就能过了。但是这个方法不是很完美的,如果两点之间只有一条线相连,而图又是稠密图,这样也很容易超时,数据强电就会挂掉。可以把算法改进一下:是先从终点原创 2013-08-05 01:27:32 · 3636 阅读 · 1 评论 -
POJ 2752 KMPnext的应用
题意:求字符串的前缀和后缀相同的所有长度。其实只要理解了next数组就行了,s[1~next[j]] = s[1+j-next[j] ~ j],所以,求完最长的长度,也就是前缀是s[1~next[len]],然后直接递归把这个前缀当做字串去求最长合法串就行了。描述比较渣,在纸上画出字符串和next数组,就知道了。代码:/** Author: illuz * Blo原创 2013-11-28 14:48:26 · 1321 阅读 · 0 评论 -
POJ 2185 Milking Grid 二维kmp
题意:给出一个矩阵,求最小的子矩阵,使得原矩阵包含在子矩阵的某个扩展中。比如ABABAABABA就是被包含在AB扩展的矩阵中。输出这个最小的子矩阵的大小。其实只要两遍KMP就行了,把每行当成一个字符KMP一遍求最小循环子串的规模,然后在那几行子矩阵中把每列矩阵当成一个字符再求一遍最小循环子串。代码:/** Author: illuz原创 2013-11-29 13:08:29 · 2167 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace KMP
题意:给出一个字符串,问还需要在后面添加多少个字符才能使它变成由一个前缀循环至少两遍而成。。这边看到了一个写的很好的题解,还详细分析了next数组的作用,膜拜下。代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt* File: hdu3746.cpp* Create Dat原创 2013-12-01 20:33:34 · 1576 阅读 · 0 评论 -
[训练指南]3.1.1.Examples UVA 11995 11991 1203 11997 1160 1329
训练指南第三章_数据结构例题,Examples UVA 11995 11991 1203 11997 1160 1329。原创 2014-02-27 16:36:54 · 1874 阅读 · 0 评论 -
UVA 10954 Add All 全加一起 模拟+贪心+优先队列
题意:规定每次加法的运算量为加法的和,给你n个数,要你全部加起来,尽量让运算量为最小。要让运算量最小,只要每次找最小的两个数加起来就行了,之后得把和放回数组重新排序。数据量为5000×100000,5e+8,用int是可以的,但是我刚开始果断用的long long,然后A掉之后改成int型,顺便把cout改成printf,结果慢了3ms,还以为是cout在拖慢速度,网上查了一下,发现cou原创 2013-08-30 19:30:23 · 2219 阅读 · 0 评论 -
Huffman编码的不建树做法 UVALive 2088 Entropy
题意:huffman编码,不懂看coolshell大神的博文,要求输出最优码长和原始码长以及比值。(原始码长就是每个字符都是按8个长度算)分析:本来huffman编码还好,但是用建树敲完一遍调了半天,实在蛋疼(果然我编码能力太渣)。于是我开始想不建树的算法,想了半天,终于YY出一个算法 = =。(借用coolshell的例子来说)字符次数原创 2013-09-08 23:37:53 · 2107 阅读 · 2 评论 -
HUST 1328 String KMP 递增思路
题意:求各个前缀在字符串中的出现的个数和。KMP匹配一次的复杂度是0(n),这题如果暴力查找前缀进行KMP匹配的话,果断会跪。其实这题又是一题next数组的应用。我们可以递推,每次仅仅看前i个字符,看看它的增加会影响到多少个匹配,很明显,next[i]能影响的它也能影响,而它又影响自己本身。这样就能解出来了。非常蛋疼地送了几个WA給了long long...代码:/**原创 2013-12-01 19:56:18 · 1547 阅读 · 0 评论 -
POJ 3080 Blue Jeans KMP+暴力
题意:求m个串的最长公共子串。每个串最长为60,枚举第一个子串的所有子串,然后在其他串KMP,找出最长的串。我的枚举写的有点繁杂了...其实想想,有几点可以优化的:1.如果有很多连续的字符串,比如AAAAAA这样的,它的很多子串都是一样的,只要找一遍就行了,所以用map或hash判重下就能优化很多2.它要求的是最长子串,所以枚举时可以剪掉很多长度比较短的.我就优化了后面那条原创 2013-11-29 13:28:41 · 1517 阅读 · 0 评论 -
UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力
题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种。我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验证就行了,反正我的验证是非常暴力的,看起来。。。(其实加了个二维数组判定不是很吃复杂度)代码:#include #include #include #include #include原创 2013-07-14 00:48:25 · 1943 阅读 · 0 评论 -
uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列
题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间。这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数组开到maxn*maxn。另外当所要打印的文件优先级不是最高的时候也需要排列到后面。0.016s。代码:#include const int maxn = 101;int t, n,原创 2013-07-16 00:32:14 · 3097 阅读 · 0 评论