摘要: 这是一个很好的题目,来自2013长春网赛。题目的意思是给你2^N张扑克牌,每次洗牌前分别把从下开始数为奇数和偶数的牌分别拿出来放在一堆,两堆可以任意一个放在上面。现在问你是否存在一种情况使得经过若干次洗牌后,第A张牌的编号为x,且同时第B张牌的编号为y。(初始状态从低到顶编号从1递增)题目的解法是用二进制来模拟洗牌的过程,然后发现洗牌的规律为右移+异或操作,然后就可以解决了。但其实本题最最难以想到的是,题目给你的牌的编号是从1开始的,然而为了方便地使用二进制,我们需要从0开始编号。首先对于每一个牌,我们都先把其编号减一,相当于从0开始编号,这样对于读入的四个数,我们都将其减一就可以了。然后我们 阅读全文
posted @ 2013-11-02 17:02 092000 阅读(681) 评论(0) 推荐(0) 编辑