随笔分类 -  数学

1 2 3 4 5 ··· 7 下一页
摘要:这个题是根据某个二维平面的题改编过来的。首先把问题转化一下, 就是你站在原点(0, 0, 0)能看到多少格点。答案分为三个部分:八个象限里的格点,即 gcd(x, y, z) = 1,且xyz均不为0. 可以先假设xyz都是整数,然后将所求的答案乘812个四分之一平面中的点,可以先算(x, y, 0... 阅读全文
posted @ 2015-05-06 20:28 AOQNRMGYXLMV 阅读(332) 评论(0) 推荐(0)
摘要:详细的题解见这里。图片转自上面的博客假设我们已经推导出来x在处取得最小值,并且注意到这个点是位于两个整点之间的,所以从这两个整数往左右两边枚举b就能找到b+c的最小值。其实只用往一边枚举就够了,由于对称性,我们不妨假设b ≤ c,那么只要让b从2a开始递减枚举即可。1 #include 2 usin... 阅读全文
posted @ 2015-04-29 12:20 AOQNRMGYXLMV 阅读(217) 评论(0) 推荐(0)
摘要:居然没有往错排公式那去想,真是太弱了。先在前m个数中挑出k个位置不变的数,有C(m, k)种方案,然后枚举后面n-m个位置不变的数的个数i,剩下的n-k-i个数就是错排了。所以这里要递推一个组合数和错排数。顺便再复习一下错排递推公式,Dn = (n-1)(Dn-1 + Dn-2),D0 = 1,D1... 阅读全文
posted @ 2015-04-29 07:47 AOQNRMGYXLMV 阅读(333) 评论(0) 推荐(0)
摘要:对于Wythoff博弈中的两个数列,An和Bn有这样的关系:An + n = Bn, An = floor(φ * n)所以我们可以根据a b的差值来计算一个新的a出来看看这两个值是否相等。想等的话,说明这个状态是个先手必败状态。 1 #include 2 #include 3 #include... 阅读全文
posted @ 2015-04-28 15:11 AOQNRMGYXLMV 阅读(189) 评论(0) 推荐(0)
摘要:切切水题,放松心情:-D 1 #include 2 3 const int maxn = 200000 + 10; 4 int a[maxn]; 5 6 int main() 7 { 8 //freopen("in.txt", "r", stdin); 9 10 int m;1... 阅读全文
posted @ 2015-04-28 14:46 AOQNRMGYXLMV 阅读(235) 评论(0) 推荐(0)
摘要:先考虑两种简单的情况:如果先手能一次把硬币拿完,即 k >= n ,那么先手胜如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜。剩下的情况就是先手一次拿不完,而且每次可以拿一个或者拿两个硬币。剩下的硬币会变成一条链,如果后手能拿完最好,不能拿完的话就拿一... 阅读全文
posted @ 2015-04-28 14:28 AOQNRMGYXLMV 阅读(238) 评论(0) 推荐(0)
摘要:这是我见过的最简单的一道博弈了,其实不要被复杂的棋盘吓到了。首先肯定会有而且仅有一个人胜,而且因为棋盘是对称的,所以先手相对于后手肯定更有优势,那么肯定是先手赢。这是不是严格的推理,但是确实比较容易猜出答案。题外话:既然这游戏这么坑,为什么两个人还能玩得不亦乐乎。。1 #include 2 3 in... 阅读全文
posted @ 2015-04-28 13:58 AOQNRMGYXLMV 阅读(235) 评论(0) 推荐(0)
摘要:切巧克力的游戏,想得还是不是太明白。后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切。So?题解都是这么一句话,不知道是真懂了还是从别人那抄过来的。后来找到一个官方题解,分析得比较认真,但我这智商还是没懂太多,QAQ本题我抄袭自《Winning Ways for your Mathem... 阅读全文
posted @ 2015-04-28 13:31 AOQNRMGYXLMV 阅读(1085) 评论(0) 推荐(0)
摘要:可以参考Thomas S. Ferguson的《Game Theory》,网上的博客大多也是根据这个翻译过来的,第五章讲了很多关于翻硬币的博弈。这种博弈属于Mock Turtles,它的SG函数值是2x或2x+1.把一个数写成二进制的形式,如果1的个数为奇数,把这种数叫做odious;否则就叫做ev... 阅读全文
posted @ 2015-04-25 15:52 AOQNRMGYXLMV 阅读(262) 评论(0) 推荐(0)
摘要:参考了众巨巨的博客,现在重新整理一下自己的思路。首先在纸上画了一下转移图:1 3 4号盒子是不能够再转移卡片到其他盒子中去了的,其他盒子中的卡片经过若干步的转移最终也一定会转移到1 3 4号盒子中去。具体来说,n % 6 == 0 或 2 或 5的盒子,经过奇数步转移到1 3 4中去,其他的则须经过... 阅读全文
posted @ 2015-04-25 14:28 AOQNRMGYXLMV 阅读(351) 评论(0) 推荐(0)
摘要:这道题的答案猜也很好猜出来,但是想太难想了。。题解一贴,然后闪人。。请戳这 阅读全文
posted @ 2015-04-25 12:25 AOQNRMGYXLMV 阅读(150) 评论(0) 推荐(0)
摘要:博弈的题目,打表找规律还是相当有用的一个技巧。这个游戏在原始的Nim游戏基础上又新加了一个操作,就是游戏者可以将一堆分成两堆。这个SG函数值是多少并不明显,还是用记忆化搜索的方式打个表,规律就相当显然了。 1 #include 2 #include 3 4 const int maxn = 1... 阅读全文
posted @ 2015-04-21 12:51 AOQNRMGYXLMV 阅读(245) 评论(0) 推荐(0)
摘要:感觉这道题用PN大法好像不顶用了,可耻地看了题解。考虑一下简单的必胜状态,某一个数是另一个数的倍数的时候是必胜状态。从这个角度考虑一下:游戏进行了奇数步还是偶数步决定了哪一方赢。如果b > 2a,那么这一方就有权利改变游戏步数的奇偶性,从而到达对自己有利的状态,所以这是一个必胜状态。如果a 2 #... 阅读全文
posted @ 2015-04-13 20:55 AOQNRMGYXLMV 阅读(136) 评论(0) 推荐(0)
摘要:无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u=题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态。从http://www.cnblogs.com/chaosheng/archive/2012/05/29/2524725.h... 阅读全文
posted @ 2015-04-13 19:50 AOQNRMGYXLMV 阅读(182) 评论(0) 推荐(0)
摘要:直接说几个比较明显的规律吧。k个小时以后,红气球的个数为3k。单独观察一行:令f(r, k)为k个小时后第r行红气球的个数。如果r为奇数,f(r, k) = f((r+1)/2, k-1) * 2如果r为偶数,f(r, k) = f(r/2, k-1)令g(r, k)为k个小时后前r行红气球的个数。... 阅读全文
posted @ 2015-04-13 13:41 AOQNRMGYXLMV 阅读(369) 评论(0) 推荐(0)
摘要:为了提高题解质量还是简单证明一下:3的倍数是必败状态。如果n % 3 = 1,那么拿走1个石子;如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态。所以每个必胜状态都有一个后继是必败状态。如果n % 3 = 0,因为2i里面没有一个是3的倍数,所以不管怎么拿,剩下的石子数n' % 3... 阅读全文
posted @ 2015-04-11 21:04 AOQNRMGYXLMV 阅读(239) 评论(0) 推荐(0)
摘要:如果硬要说这算是博弈题目的话,那这个博弈是不公平博弈(partizan games),因为双方面对同一个局面做出来的决策是不一样的。我们平时做的博弈都是公平博弈(impartial games),所以在这道题里面,那些必胜必败状态,SG函数SG定理都派不上用场了。但是,这道题是可以贪心的。比如第一个... 阅读全文
posted @ 2015-04-11 20:50 AOQNRMGYXLMV 阅读(259) 评论(0) 推荐(0)
摘要:考虑到Bouton定理的证明过程,设n个数的Nim和(异或和)为X,其最高位的1在第k位,那么n个数中一定有个y的第k为也是个1.将y的数量变为X xor y,那么n的数的Nim和为0,便转为先手必败局面。所以先手有多少种取法,就看n个数里面有多少个y,满足二进制的第k为是个1。 1 #includ... 阅读全文
posted @ 2015-04-11 19:07 AOQNRMGYXLMV 阅读(239) 评论(0) 推荐(0)
摘要:没什么好说的,一道水题。 1 #include 2 3 int main() 4 { 5 int n, m; 6 while(scanf("%d%d", &n, &m) == 2) 7 { 8 if(n <= m) 9 {10 ... 阅读全文
posted @ 2015-04-11 18:53 AOQNRMGYXLMV 阅读(147) 评论(0) 推荐(0)
摘要:这道题的结论就是,石子的个数为斐波那契数列某一项的时候,先手必败;否则,先手必胜。结论很简单,但是证明却不是特别容易。找了好几篇博客,发现不一样的也就两篇,但是这两篇给的证明感觉证得不清不楚的,没看太懂。首先,证明要依赖一个邓肯多夫定理(Zeckendorf's Theorem):任何一个正整数一定... 阅读全文
posted @ 2015-04-11 18:41 AOQNRMGYXLMV 阅读(324) 评论(0) 推荐(0)

1 2 3 4 5 ··· 7 下一页