20181017考试总结

首先,前十几分钟读题,发现第一题是个数位DP,第二题博弈,第三题暂时看不出来,有点像DP,但DP复杂度又太高了,然后又去看它的步骤分,感觉没有什么能拿得到的步骤分。
然后开始做第一题,先花了十分钟左右写暴力和对拍,然后接近二十分钟写正解,写完后过了样例,但对拍的第一组数据就Wa了,调试的时候发现这道题的细节有点多,然后就把最初的那份代码改得面目全非。在9:05的时候才把第一题结束。
然而第一题炸掉了,又炸在了取模上。
答案输出了负数!!!所以ans=(ans*2%MO+MO)%MO;
第二题想了比较久,还打了一个表,找了一下规律,发现了在只有两堆时的规律(看题解知道了那就是威佐夫博弈的一些结论),然而找不到有三堆时的规律了,难以从 O ( n 4 ) O(n^4) O(n4)优化到 O ( n 3 ) O(n^3) O(n3),所以写了一份NP转移的代码来对拍,又写了一份记忆化搜索来作为提交的代码(因为感觉记忆化搜索(在数据水的情况下)可能会少搜一些状态,说不定会快一些(然而并没有骗到更多分))。
第二题该写的写完后还剩五十几分钟,本想着第三题骗个十来分就够了,然而出题人连十分好像都没有给,我能想到的拿十分的算法是 O ( n 2 ) O(n^2) O(n2)的,然而 n 2 n^2 n2过不了,所以就爆零了。
第二题和第三题的正解非常有趣。
博弈有一个比较本质的思想:先手必败态无法转移到另一个先手必败态
以前没有仔细想过这句话,至今才发现这句话还可以推出一些性质来。
就今天这道题来说,考虑它的必败状态,当有两堆的数目确定时,如果它存在必败状态,那么另一堆的数目唯一确定(如果另一堆的数目并不唯一,那么就可以从一个必败态转移到另一个必败态,矛盾),所以可以用筛法 O ( n 3 ) O(n^3) O(n3)过这道题了。
第三题涉及到一个拆绝对值的思路,拆完后发现除开头结尾,中间的数对答案的贡献系数为有规律的-2,0,2,0.于是就可以很愉快的DP啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值