zoukankan      html  css  js  c++  java
  • 暑假学习日记2013/7/23

        今天主要是学习了一下数学的相关知识,首先是补充了昨天没学好的一块,解线性同余方程,还是看了那本书<<挑战程序设计竞赛>>,我觉得这本书挺易懂的,三言两语概括了精髓,看起来也不会那么纠结,代码实现也很简练.解线性同余方程这一块看了颇久才理解到它的原理,实际上就想多米诺一个推倒另一个的感觉.然后学习了一下中国剩余定理,实际上是给出了x=ai(mod mi)的其中mi两两互质的一个解的形式,记Mi=m1*m2..*mn/mi 则方程的解应为 x=M1M1'a1+M2M2'a2+...(mod m1*m2..*mn)

    其中Mi'为Mi在mi下的逆元,即Mi*Mi'=1(mod mi) 下面证明解符合题意.对于任意一个方程 x=ai(mod mi) 和j!=i 都有mi|Mj.

    故 x=M1M1'a1+M2M2'a2+...(mod mi)-->>x=MiMi'ai(mod mi)-->> x=ai(mod i). 所以这个解是满足条件的

    代码实现也是大同小异,关键也是算逆元那一块,在此不做细究

        接下来学习了博弈的相关内容,这部分的内容相当神奇,尤其是我第一次知道Nim可以用抑或直接给出答案的时候..我和我的小伙伴们都惊呆了.后来深入的学习了一下,原理的正确性就不深究了(我终究是一个懒于啃复杂知识的应用流派...)对于任何一种状态x sg(x)表示该状态的所有后继中的sg值没有出现的第一个非负整数.的确是挺绕口的...以Nim为例,sg(0)=0(因为0没有后继 所有就是0) 1有后继0,因为sg(0)=0,故第一个没有出现的是1,sg(1)=1....以此类推.sg(i)=i;i+1的后继有0,1,2,...i,其sg值分别是0,1,2,3,....i,所以sg(i+1)=i+1.更加复杂的sg会有复杂的后继,有些只允许你去抽一定数目,这个时候的sg计算可能能找到规律,可能不可以.可以的打表做,不可以的时候自己递推搜索.想起了省赛的一道题,打了一张sg表,找不到规律,赛后才知道,那道题有些点是能确定下来的,即知道其sg值,其余的都要靠logn一个的时间内搜,甚是神奇.还有看了书上的一道例题POJ2311,它每次剪完之后会变成两张纸,而这个时候sg值的计算方法是算其所有切法,分成两张的情况下抑或的sg值,然后再找没有出现过的,例题代码用了set+记忆化搜索找,900ms颇慢,假如迭代找就会快很多,40ms吧,这提醒我姿势很重要.然后看了这题去年省赛的一道题就有点眉目了,那个题目是切绳子,每次切会有切短的情况,也会有切成两半的情况,这时也是类似的处理吧.思路这东西真的是一通百通.

        有些复杂的博弈则是靠YY出来,其中一种就是对称性的构造判断,假如现在有两堆一样的东西,如果对方只能对其中一堆操作的话,无论对方做什么,你都可以模仿,这时候不管怎么样,你都可以做下一步,因为你总是拷贝别人的操作,所以这时是必胜态,这种思想在博弈YY中还是相当重要的

    总结一下今天学习的内容:

    1.同余模方程

    2.中国剩余定理

    3.SG值的计算(会分成多堆的情况也学习了)

    4.博弈的思想

  • 相关阅读:
    Hdu 1257 最少拦截系统
    Hdu 1404 Digital Deletions
    Hdu 1079 Calendar Game
    Hdu 1158 Employment Planning(DP)
    Hdu 1116 Play on Words
    Hdu 1258 Sum It Up
    Hdu 1175 连连看(DFS)
    Hdu 3635 Dragon Balls (并查集)
    Hdu 1829 A Bug's Life
    Hdu 1181 变形课
  • 原文地址:https://www.cnblogs.com/chanme/p/3207782.html
Copyright © 2011-2022 走看看