2011年9月26日
摘要: 题目:Game题意:有如下图15种棋盘,给出每种棋盘的个数。Alice有无限个1*2形状的棋子,Bob有无限个2*1的棋子,棋子可以嵌进棋盘里,但棋子不能旋转和跨棋盘(T_T泪目啊,比赛时一队员跟我说可以跨棋盘,搞得把这题看成神题,最终仅仅浪费了时间在这题上),Alice和Bob轮流着放,Alice先放,谁最先不能嵌入棋子就输。解题思路:有15种,或许看起来很是繁杂。其实细心研究一下,应该能找出一些解题的策略。只有决定好选择棋盘的顺序,这题就迎刃而解了。下图是鄙人找到的顺序,首先数组的第一个元素是拿来给忽略的。A数组保存了Alice的选择顺序,B数组保存了Bob的选择顺序。按什么排序的呢?明显 阅读全文
posted @ 2011-09-26 16:41 Kenfly 阅读(518) 评论(1) 推荐(0) 编辑
摘要: 题目:The time of a day题意:给出一个数N,表示有N条指针,编号1~N,第i条指针旋转一圈所要用的时间是i,从中挑选一些指针,决定一天的长度,这个长度定义为这些指针两次重合的时间间隔。然后给出一个m,求出长度大于等于m的组合数,也就是选择指针的方法数。解题思路:很明显这个长度为挑出指针的最小公倍数。朴素的想法是用递推造出所有的最小公倍数,然后找出大于等于m的。但N最大为40,给合数也有2^N-1个,数组开不下。所幸这些最小公倍数有很多是重复的,经打表什么的发现好像只有10万个不同的最小公倍数。要造出1-i这些数组成的最小公倍数很简单,用个O(N*N)的递推算法。假设前面已造好了 阅读全文
posted @ 2011-09-26 11:33 Kenfly 阅读(642) 评论(0) 推荐(0) 编辑