第一题:
题目大意:
设 2n 张牌分别标记为 1, 2, ..., n, n+1, ..., 2n,初始时这 2n 张牌按其标号从小到大
排列。经一次洗牌后,原来的排列顺序变成 n+1, 1, n+2, 2, ..., 2n, n。即前 n 张牌被放到
偶数位置 2, 4, ..., 2n,而后 n 张牌被放到奇数位置 1, 3, ..., 2n-1。可以证明对于任何一
个自然数 n,经过若干次洗牌后可恢复初始状态。现在你的的任务是计算对于给定的 n 的值(n≤10^5 ),
最少需要经过多少次洗牌可恢复到初始状态。
解题过程:
1.模拟绝对超时,然后就开始找规律,对于当前位置是x的数,如果x<=n,下一次就会跑到2*x的位置。否则会跑到(2*x-1) mod (2*n)的位置。
2.手工模拟了下,感觉只要一个数回到原位其他数也就回来了,那么取位置1,按照规则不断模拟,知道回到1为止,然后就糊里糊涂AC了。
3.考后怎么也想不明白为什么只要任意取一个数就好,结果TMD 找到了一个反例:n=10的时候;
如果一开始取位置1的数,那么它的位置变化是 1->2->4->8->16->11->1 那么答案就是6。
如果一开始取位置3的数,那么它的位置变化是 3->6->12->3->6->12->3
可以发现第3次洗牌后,位置3的数回到了原位,但是位置1的数还没有,如果一开始选了位置3的数,那么答案就会是3。
难道只要一开始选位置1的数就能AC??你他妈考我RP啊。。求大神解释!!!!!网络上一群傻逼的题解都是说 “因为移动的规则相同,那么只要任意一个数回到了原位,其他数也回到了原位",那么就愉快的取了1,然后愉快的AC。个人认为这是对出题人的极度不尊重。。。
第二题:
题目大意:老题了,合并果子。。 复习了下堆水过。
第三题:
题目大意:解数独。
解题过程:
1.dfs爆搜+hash,倒着搜会更快。最慢0.96s,差点挂掉了。见NOIP2009靶形数独,我的解题报告。http://www.cnblogs.com/vb4896/p/3881250.html
2.dancing link,研究ing。。标程所有数据0ms 秒杀啊。