2013年5月9日

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1305 题意:给你几个串,如果这些串中不存在一个串是另一个串的前缀,就说明这一组串是immediately decodable,反之则不是。 思路:先把所有串全部插入,然后来一个循环判断每个单词结尾处的cnt与1的大小关系,大于1的话说明这个串是某一个或者某几个串的前缀,那么就是not immediately decodable。 代码:View Code #include <algorithm>#include <iostream>#include <cstdlib>#i 阅读全文
posted @ 2013-05-09 13:10 Raining Days 阅读(213) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1800这个题,就是在插入的时候注意一下前导零的问题,其他的就没什么了,祝君ac。上代码:View Code #include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>using namespace std;const int maxn=10;struct node{ int cnt; node *next[maxn]; nod 阅读全文
posted @ 2013-05-09 13:04 Raining Days 阅读(138) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3460 这题题意我就不想说了,做的真实气死我了。就是把给定数目的单词用他那个“ancient printer”给打印出来,让你把最少按键次数输出来。尼玛, 我最初的想法很简单,就是在ac自动机的基础上去,用深搜来跑。因为要求最少嘛,所以记得当时自己就一直在想怎么能满足最优,先打印存在前后缀长度短的,当时YY了好久,但是总是感觉不行。后来实在没办法才去google的,发现他们的方法特别。。,其实我当时也想到了,但是偏执的想跑一下深搜,结果自己还玩大了。按键次数=单词个数(因为要按print键)+2*总共结点.. 阅读全文
posted @ 2013-05-09 10:56 Raining Days 阅读(185) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1559 汉语题,呵呵。 思路:这个题跟我上一篇博文中的那个题的区别就在限制了子矩阵的大小。如果没有看过我上一篇博文的可以先去扫一眼,我们不妨回顾一下,那个题是怎么做的:我们采用了大家都比较熟知的,我自己习惯叫行压缩,我们新建了一个数组link来存放到当前行为止每一列的的和,这样就差不多回到一维的样子。那这个题又该怎么想呢?我们是不是可以采取每行的一部分,使得先满足子矩阵Y的要求,然后在限制列,使得满足子矩阵X的要求,是否可以呢?应该是可以的,但是当时我还有一点没有想通,我要怎么来限制X呢?这题最终解决是我.. 阅读全文
posted @ 2013-05-09 10:18 Raining Days 阅读(397) 评论(0) 推荐(0) 编辑

2013年5月8日

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1081 题意:在一个有正负数的矩阵当中找一个子矩阵,使得这个子矩阵的sum最大,所谓sum就是子矩阵中所有数字的和。 思路:刚看到题目的时候觉的像是dp,因为以前做过类似的在矩阵中找最大正方形的题目,觉得是二维dp,又想到对于一个数,如何判断它是否应该存在于一 个矩阵当中,不仅涉及行,还涉及到列,而且还要搞的和最大,因为队友问过我那个hdu的1003题,那个题,我早以前做的时候其实也没理解透,后来又给他 讲了一遍,感觉这个题差不多就是那个的二维版本。下面是代码:View Code #include <a 阅读全文
posted @ 2013-05-08 20:19 Raining Days 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 这道题的题意很简单,看图就可以搞定了。 思路:维护一个单调递增的栈,为什么要这样做呢。因为高度越小的柱形在算面积的时候肯定在宽度方面要占优吧,也算是避免算不到高度小却宽度大的长方形,所以要这样做。这样当当前柱形的高度小于栈顶柱形的高度的时候就把小于当前柱形高度的指针弹出,与此同时计算一下所有比它高的柱形的面积和。然后把当前柱形与弹出栈的柱形合并成一个柱形,宽度是好几个1,高度是当前柱形的高度,然后再压入栈。ps:最后这个想法不是我的,我想到要弹栈那里就不会了,是参考网上大牛的,具体来源我找了下,没找到,不好意思。下面是代码:View Code #include <algorithm> 阅读全文
posted @ 2013-05-08 20:01 Raining Days 阅读(165) 评论(0) 推荐(0) 编辑

2013年5月7日

摘要: 我的第一篇模拟退火,先是看资料,发现太高深,又去搜博客什么的,在一个地方看到了比较通俗的解读。至今还只是会写,不懂得原理是什么,能ac也是碰巧,发现太高深而且又属于YY型的算法,果断过一题放弃掉。下面贴上代码:View Code #include <algorithm>#include <iostream>#include <cstdlib>#include <limits.h>#include <cstring>#include <cstdio>#include <time.h>#include <cm 阅读全文
posted @ 2013-05-07 20:53 Raining Days 阅读(310) 评论(0) 推荐(0) 编辑

2013年5月1日

摘要: 总是反反复复的学着已经学习过的东西,只希望自己有朝一日可以挣脱这枷锁。。 小文艺一下,下面我贴上自己经常用的两个关于多重背包的优化的模板,还记得以前找单调队列的优化的时候,找了很多地方,加上自己那时候单调队列懵懵懂懂的感觉,就觉得特别困难。希望对别人能有所帮助。我值提供代码,要看详细解释的背包九讲及其很多地方会有很好的解释的。二进制的优化:View Code for(int i=1;i<=n;i++){ int s,count,tmp; s=0,count=1,tmp=num[i]; while(s<tmp) { for(int j=sum;j>=c... 阅读全文
posted @ 2013-05-01 15:51 Raining Days 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 只贴代码: View Code #include <algorithm>#include <iostream>#include <limits.h>#include <cstdlib>#include <cstring>#include <cstdio>#include <queue>#include <stack>#include <cmath>#include <map>#include <set>using namespace std;const int m 阅读全文
posted @ 2013-05-01 14:59 Raining Days 阅读(270) 评论(0) 推荐(0) 编辑

2013年4月28日

摘要: 题目说的是秦始皇的庞大的道路体系,他想通过n-1条道路把n的城市连在一起,并且要道路的总长度minimum。有个奇葩的daoshi named Xu Fu告诉他说,他可以通过法术凭空修建一条路,并且这条路不花费金钱和人力,并且仅能修建一条道路。所以就需要考虑该把这个magic road 修在哪。。咱始皇帝命令value=A/B must be the maximum,which A is the total population of the two cities connected by the magic road,and B is the total length of none m.. 阅读全文
posted @ 2013-04-28 19:59 Raining Days 阅读(267) 评论(0) 推荐(0) 编辑

导航