峰's profile流  浪  的  枫  之  羽PhotosBlogLists Tools Help

    HDOJ1527

    问题:
    有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。

    碰到这道题时我的思路:

    设集合A, B分别为先手能赢和后手能赢的二元无序对(x,y)的集合

    先从最基础的开始考虑,(n,0) (n,n) 属于A,因为这样的情况先手肯定能赢(n为正整数,下同)

    如果存在(a,b),对于一切n,(a-n,b-n)均属于A,则(a,b)属于B
    很容易找到一个(2,1),这是后手肯定能赢的情况

    接下来从先手的角度分析,如果他能在移动石子后留给对手(2,1)个石子,那么他就能赢,于是
    (2+n,1) (2+n,1+n) (2,1+n) 均属于 A

    找出一个不属于A的最小对,(5,3), 这个元素肯定属于B集合,因为从中任意取出元素后的结果肯定属于A集合
    相应的,(5+n, 3) (5, 3+n), (5+n, 3+n) 均属于A

    这时发现,B集合相对A集合元素少很多,只要找出B集合中元素的特征,就能解决这个问题。

    一旦B中包含(x,y)对,A中就会相应的包含(x, y+n), (x+n, y), (x+n,y+n)
    由此想出一种构造B集合的方法,设当前构造出的集合为S,a为不在S中的最小的数,即
    a = MIN{ x | x 不属于 (p, q), 对于一切(p, q)属于S }
    则把(a, a+gap)加入B中,其中gap是当前S中所有对之差的最小值+1
     
     构造出的序列为
     (1,2) -> (3, 5) -> (4, 7) -> (6, 10)
     
     到这里这道题目应该已经能过了,不过还有一种达到O(1)的优化,接下来的就不是我想出来的了 =,=
     首先是Betty定理:
     如果无理数alpha, beta满足
     1. alpha, beta > 0
     2. 1/alpha + 1/beta = 1
     那么,序列{[alpha*n]}和{[beta*n]}构成自然数集的一个分划,其中[]是取整函数
     
     这道题对应的alpha和beta分别是(1+sqrt(5))/2,(3+sqrt(5))/2,其实是一个黄金分割

    公式可以见这个博客

    Comments (4)

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Sept. 8
    No namewrote:
    wow gold!All wow gold US Server 24.99$/1000G on sell! Cheap wow gold,wow gold,wow gold,Buy Cheapest/Safe/Fast WoW US EU wow gold Power leveling wow gold from the time you World of Warcraft gold ordered! wow power leveling wow power leveling power leveling wow power leveling wow powerleveling wow power levelingcheap wow power leveling wow power leveling buy wow power leveling wow power leveling buy power leveling wow power leveling cheap power leveling wow power leveling wow power leveling wow power leveling wow powerleveling wow power leveling power leveling wow power leveling wow powerleveling wow power leveling buy rolex cheap rolex wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling -236694021015207
    June 20
    falchenwrote:
    回 西枫飘凌:
    呵呵,不知道是请教枫之羽还是在考验他呢.
    网上不是都有的么...
    Feb. 23
    Chuanwrote:
    你好,冒昧的无意间从网上链接到这里,看到您写的东西。。。请教2个问题:
    1.你有12个硬币,其中有一个是假的,但不知道这个假币比真的是重还是轻? 有一个天平,只允许称3次
    怎样能把那个假的找出来,并且知道是重还是轻呢?
    2 我有3个空箱子,比如A, B, C去一个东西,其他两个都是空的,让你猜,你选了一个后,比如是B,然后我打开另外两个的其中一个,比如C,发现是空的。 让你再猜,你是继续保持猜B呢?还是换作猜A呢?那种方法更可能猜到呢?
    Jan. 17

    Trackbacks

    The trackback URL for this entry is:
    http://eddyzhoufeng.spaces.live.com/blog/cns!DD28D4EF61AE1D45!834.trak
    Weblogs that reference this entry
    • None