摘要: 看到这个题还以为是个搜索题,搜索向来不会,以为得卡在这儿,后面仔细看了下题,几个变换发型没什么难的,就是这句In the case that more than one transform could have been used, choose the one with the minimum number above. 以为要用很多次变换才能变换到目的数组,看了下题目的翻译,才知道这句话的意思是如果有多种可用的转换方法,请选择序号最小的那个。如果是这样的话那就简单了。只要按照序号枚举就行了。记得第六个应该放在第六个位置。还有只要遇到一样的状态,就打印序号,然后退出。如果忘记退出会打印多个数 阅读全文
posted @ 2011-02-19 12:30 like@neu 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 虽然有明显的贪心思想,我还是有足够的wa去纠结。奶牛貌似很受美国人欢迎,哪儿都有。由于英语不太好,题目看的不明不白,尤其是细节方面的东西。比如有可能没有间隔,那就得输出0,要是不看测试数据今晚都得纠结在这。硬是逼我加了个flag进去。虽然这手段比较猥琐,但是用惯了。还有需要注意的就是可能有个区间被另外一个区间包含也说不定,测试数据总是会想方设法挑你毛病,如果多看看测试数据,没准还能上TC上去找别人的茬。快排加上几个细节,这个入门题就没什么难的了。 阅读全文
posted @ 2011-02-18 20:29 like@neu 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 做完第三题发现USACO真是个好地方,推荐acm没有入门的同学上去刷通关,据说大牛的一个月就通关,一般就得四五个月。我觉得usaco最好的一个地方就是会给测试数据,错误会有一些提示什么的,而且怎么提交也没人管,虽然多次提交这习惯不好,但是可能很多人还不是熟悉文件的操作。 阅读全文
posted @ 2011-02-18 18:18 like@neu 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 用吉大的模板貌似是错的,反正在我自己电脑上就没正确。做水题还用模板,作孽呀。不管怎么说,用模板还是很方便,要是按照我以前的做法,求哪天是星期几真没这么简单,只能佩服那些牛人们。记得大一学c语言的时候有这么个题好像好多人都没做出来,我是写出来了,但是好像用了几十行,原来五行以内就写完了。acm确实总会有让人吃惊的地方。 阅读全文
posted @ 2011-02-18 16:03 like@neu 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 今天做了usaco的第一题,本来是个基础题,花了不少时间。几乎没有什么算法,过了sample很简单,但是测试数据怎么也过不了。看来usaco上的题测试数据都比较变态。 阅读全文
posted @ 2011-02-18 13:28 like@neu 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 原题:http://poj.org/problem?id=3157  模拟题,需要注意一下地方,我看了discuss才过的,很多地方没想过。其实题目说的也不是很清楚吧。输入输出还弄的乱七八糟的。没有牵涉到什么算法好像也没什么好讲的。注意几个地方:  (1)java没有下划线,c++没有大写字母。  (2)字符串第一个字母都是小写的,大写就Error。  (3)下划线不能出现在末尾,也不能连续出现。  主要就是参考gfedcba的提示。简单帖下代码。 阅读全文
posted @ 2011-02-16 23:37 like@neu 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 原题的链接:http://poj.org/problem?id=2872  咋一看感觉不难,但是还是贡献了四个TLE,比较悲剧。本人水平极有限,只能给还没有ac的同学一点建议。  关于本题,没有给出数据的规模,所以肯定不小,但是开始我没有想到会那么大。解题的关键就是查找这个地方该如何做,我先试了一下,用vector,果断超时,set也试了一下,发现没有过,后面才发现代码也有问题,囧。过了以后再用set试了一下,TLE,可能是管理员把数据加强了,因为看到有用set过的,或者我代码还有问题。在用set试的时候再贡献了3个ce,就当攒RP吧。个人觉得set应该够快才对,因为set内部就是红黑树,速度 阅读全文
posted @ 2011-02-16 20:17 like@neu 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://poj.org/problem?id=2424  看到提交的人并不多,通过率也挺低的,无聊至极就把解题报告写一下。本题其实是个十足的水题,千万不要看到一些分类里面说是dp就被吓到。仔细看明白题意思路也就出来了。如果说和dp有点关系的话,那也是就是动态处理这一块,这种题应该就属于送分型的题。摸清题意很重要。  题目意思就是说餐厅里面有2座、4座和6座的桌子若干。客人按人数选择餐桌,如果需要等半个小时以上,就不吃了。问一共多少人在餐厅用餐。解题的思路很简单,就是每次来客人以后寻找空座,如果没有,就找最快吃完的人。更新时间。如果有空桌,那么这个桌子空下来需要从现在开始再加30 阅读全文
posted @ 2011-02-15 21:46 like@neu 阅读(470) 评论(0) 推荐(1) 编辑
摘要: 题目的出处:http://poj.org/problem?id=2159  本来觉得是个水题,也是按水题的思路做的。但是题目的意思比较内涵,说白了就是个陷阱。题目说字符串的加密有两种方法,一种是变换字符,把一个字符变成它的下一个字符,如果是Z,就变成A。还有一种就是给一个数字排列,排列中每个位置的字符就是以这个数字为下标的字符。貌似比较简单。很多人能够想到不管是第一种还是第二种,都可能是多种结果,因为不一定是变成下一个字符,排列就更多了。现在主要需要考虑的就是把两种加密方式结合起来,是否能从原来的字符串得到目的字符串。题目的陷阱就是字符的转换规律也是不确定。不一定是下一个,也不一定是一定的距离 阅读全文
posted @ 2011-02-15 11:28 like@neu 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://poj.org/problem?id=1611只要能看懂题目的都明白,就是求谁跟谁是一个集合,还得跟别的集合不相交。  本题是并查积的典型应用。如果采用暴力的解法肯定超时无疑,而且也不知道每行有多少个输入,如果声明个超大数组还有超内存的危险。如果用并查积的解法,这些都可以避免。并查积在算法导论第二十一章有详细介绍,完全可以按照书把模板写出来。首先从1到n-1,把每个数字放到一个单独的集合,集合唯一的元素就是这个数字,设为i,集合的代表也是i。然后从每行输入,没每组数中的元素所在的集合全部合并成一个集合。最后再检查和0在一个集合里面的元素的数目便大功告成了。需要小心得地方 阅读全文
posted @ 2011-02-14 20:20 like@neu 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 今天有空把算法导论的并查积那一章看了一下,最后一节因为牵涉到平摊分析那一块儿所以没法看。在此之前没有学过并查积,不过感觉挺难得。其实想想也明白就该有这么东西,因为很多地方都会用到这种算法,虽然不知道是什么,但是肯定有。看并查积是因为前天在poj做了个题,感觉暴力的思路可以得出正确答案,但是数据规模极大,怀着侥幸的心理sub后直接返回了一个TLE,比较悲剧,也不明白会跟并查积扯上什么关系,上discuss里面一看,原来得用并查积。那也不也不会。刚好dp看了几天都烦了,今天就看了会儿并查积。  算法导论上是21章-用于不相交集合的数据结构,国外的书上都是这么说的。算法导论上面讲的比较详细。根据我能 阅读全文
posted @ 2011-02-14 20:07 like@neu 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 主要的思考方向就是求dp里面的最长公共子序列。至于字符串本身的判别并不是重点。  根据网上poj的分类,这个题是dp求最长公共子序列,其实用暴力的方法也能通过。暴力的方法比较简单就不多说了。主要讲讲dp吧。思路就是分别求第一个字符串和第二个字符串与第三个字符串的最长公共子序列的长度是否等于其自身的长度。lcs的算法比较简单,可参考算法导论直接写出。但是仅仅判断长度是不够的。还需要考虑两点:  (1)判断第三个字符串有无多余的字符。  (2)是否存在某个字符只出现一次却是第一、二个字符串公用的。  如果只是想ac掉这道题,考虑第一点就够了,因为本题数据太弱了,我就是只考虑了第一点,当水题做的。但 阅读全文
posted @ 2011-02-14 10:03 like@neu 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 本题是poj的第二题,相信很多人都没有A掉,因为比较繁,我也是今天下了很大的决心才做的。和简单的高精度题目相比本题多了一个小数点,这就是难的地方。所以稍不留神就会出错。做完以后需要注意的地方也想不起来了,大致说一下吧。  我的想法其实比较简单。(1)对于整数,要分为输入的整数和输入的小数点后全是0的数。对于这样的数就当整数处理,利用高精度的计算方法(可参考前辈的模板)。如果是赤裸裸的整数,即没有小数点的,直接计算输出。如果有小数点,就把小数点和小数点以后的0全部删掉,用string很方便解决。然后计算输出。(2)对于浮点数,应该也要分为两种吧。小数点前有非零位和没有非零位的。反正无论对于哪种, 阅读全文
posted @ 2011-02-13 17:55 like@neu 阅读(333) 评论(0) 推荐(1) 编辑
摘要: 题目出处:http://poj.org/problem?id=2823  题目意思是说给出n个数,求k个相邻数的最大数和最小数。这个题看起来不难,可能会想到用暴力解决。但是由于数据规模较大,所以暴力绝对会超时。如果对线段树比较熟练的话就可以很容易看出来是考察线段树。我觉得可以这样思考:维护一颗含有k个元素的线段树,从j=0到n接受输入,把num[j]加入到树中。当j大于等于k时存储最大数和最小数的值,同时把num[j-k]这个元素从树中删除。这样全程仅需考虑树中的元素。不论是删除元素还是加入元素都必须维护树的性质没有改变。思路比较简单,只是线段树的实现比较繁琐。此处提供参考代码,给需要的同学一 阅读全文
posted @ 2011-02-13 13:05 like@neu 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 动态规划之POJ1159解题报告 阅读全文
posted @ 2011-02-12 22:10 like@neu 阅读(503) 评论(2) 推荐(1) 编辑