SPOJ
文章平均质量分 68
亚N程
这个作者很懒,什么都没留下…
展开
-
SPOJ:416 Divisibility by 15
这是一道很考察细节的题。判断一个数能否被15整除要看两个方面,一是能否被5整除,二是能否被3整除。被5整除要求个位是0或5。被3整除要求所有位的数字之和能被3除尽。这个题目有点贪心的意思,但是不太好想。在能被15整除的基础上,要求最大的这个数。对于排列的数来说,越长越好,靠前位的数字越大越好。首先我们可以将所有数字都使用,然后再按要求淘汰一些数。如何保证各位之和能被原创 2013-07-29 14:51:44 · 741 阅读 · 0 评论 -
SPOJ:62 The Imp
看了题解才做出来的题,虽然做法是一样的,但解释略有不同。先贴上题解。题目的意思就是让你按这四种方式移动最后输出到原点的最小的曼哈顿距离的值。虽然我也是看了题解,但是我是用另一种方法理解的。这四种移动方式可以组合成N种移动方式。也就是说每个IMP可能到达的位置都可以看做是一步到达。所以IMP的每个曼哈顿距离可以直接等于每种移动方式的|x|+|y|。所以我们只需要组合出一种|x|+原创 2013-08-07 20:38:43 · 760 阅读 · 0 评论 -
SPOJ:368 Cobbled streets
经典题目,就是让你求最小生成树。这里我用的是克鲁斯卡尔算法。kruskal算法所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e 步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出现环路,则将其抛原创 2013-08-09 13:28:52 · 996 阅读 · 0 评论 -
SPOJ:665 String it out
要求输出a最大几次方以后仍然是b的子串。 题目关键在子串判断上。几次方可以将某个字符重匹配几次。 没有想象的那么难。但比赛没有做出来还是反映了我实力不足。 #include #include #include #include using namespace std;char a[500015]={0},b[500015]={0};int ge原创 2013-08-09 15:57:50 · 657 阅读 · 0 评论 -
SPOJ:394 Alphacode
1-26分别对应26个字母,问一串数字可以对应多少个不同的单词。第一次自己用动规做题。d【i】表示前i个数字对应的不同单词数,考虑第i个数字加入。如果只有第i个数字可以对应一个字母(第i-1个和第i个数字一起不对应字母)此时d【i】=d【i-1】,就是说对应单词数不变。 当第i-1个数字与第i个数字组成两位数大于26或者第i-1个数字为0(此时第i-1个数字一定与原创 2013-08-09 19:00:12 · 996 阅读 · 0 评论 -
SPOJ:364 Pocket Money
要你求表达式可以得到的最大值和最小值。 一看题意容易联想到UVA 10700这个题。但这个题因为可以出现0使题目复杂了很多,因此用动规来做。 已经有人解释的很全面了,引用一下。 maxx[i][j]=max{maxx[i][k] operator(+,*) maxx[k+1][j} },表示i到j段的最大值是i到k段和k+1到j段构成的。所以三个for循环枚举区间长度,区间原创 2013-08-10 12:37:17 · 823 阅读 · 0 评论