2017NOIP总结(待更新)

DAY1

T1小凯的疑惑

一道数论题,为了求稳,先写了一个O(n^2)的暴力,然后推了5分钟的O(n)算法,空间复杂度也是n (n为较小数)(其实我的方法再推下去一步就可以到结论,但是对拍bat写了太久了,将近半个小时 最后没时间来推这题了)
大致的思路如下:

对于一组数a>b,对于一个数字x=na+mb,若n,m均为自然数,则x为符合条件的数字。
但是这里我们先允许n,m为负整数。那么我们可以得到x-an≡0(模b意义下)。
显然,对于所有模b相同的数,他们所得到的n都是相等的。
那么对于每一个模数 k(0<=k<=b-1),他所对应的最大的不能组合的数字就是大于an的模b为k的最小整数。也就是an-b。

考试的时候我想到这就停了,打算先做T2T3再回头推这题,因为我当时认为T2是道很水的模拟(逃),然后就放在那边拍写T2了。
但是考完再回去看这个推导,其实再往下去一步就可以到正确答案了。

如果我们把0在模运算下每次加上(a mod b)然后的数A和步数B就分别对应一个k和n。
如果没听说过一个定理(这个定理很好证,自己在做数论的题的时候可能都思考过类似的问题)的话,我们可以用数学归纳法证明出我们会在b-1步里到达所有的k(0除外),他们的步数分别为1到b-1。
而对应的每一个步数n,对应的最大不能组成的数为an-b,n的最大值为b-1那么这道题的答案就是a(b-1)-b也就是ab-a-b

(ps:这个血腥的案例告诉我们一定要相信对拍报平安!一定要背对拍bat!!不然下次就不是40分的事情了orz)

T2时间复杂度(已更新)

这道题是一道模拟题,只要用栈维护一下,考虑各个情况即可AC

至于我为什么80分…..让我再看看orz= =
//更新于2017.11.29晚9点
这道题又给人一个惨痛的教训:要好好利用大样例,由于特殊原因,大数据里面前后都为n的点对答案不影响,然后我也没仔细看过掉的数据,加了一个判断就A了…..

T3逛公园(待更新)

由于在bat和T2上花费的时间,到这里的时候我只剩30分钟了(心中默念GG),但还是花了一会打了一个暴搜的程序,期望是10~20分,然而一分都没有。

DAY2

T1奶酪

这道题的思路还是很好想的,我想的是用dfs做,把一组能到达的奶酪之间连一条边。从和下面连着的点开始dfs,记忆化即可。但是这道题的数据范围比较大,用long long计算的时候会炸,需要加个特判(或者用ULL),就是x、y、z之间的距离大于2r,那么就直接不连边,不然会爆long long(应该是这样,因为考完我看我的特判好像炸了,民间数据A了然而官方80分)

T2宝藏

这道题一看到就知道用状态压缩(可是我不会),于是我考虑了最小生成树上找(大致应该是这个思路),然后我发现我不会打最小生成树了 于是我考虑暴力40分,所有的v相等的情况下用bfs直接取边就可以拿到这40分,剩下的60分我想用bfs骗一下分,民间数据骗到分了

标解果然状压,O(n^4)(n<=20)玄学时间复杂度,如果会状压的话这题也不是特别难了,毕竟状压刚刚加入考点。

是时候练一波状压了。

T3列队(待更新)

这道题暴力分给的是很足的,一开始空间复杂度O(n^2)的30分和中间所有x=1的30分都是比较好拿的,这道题我zz的犯了一个巨无霸错误,写了一个x=1的特判,本来应该是判断!=1的时候标记,把1写成了0。我还特意注释了不要忘了改,GG。
这60分暴力都还是可以搞的

标解是线段树/树状数组。
///2018.4.20
题解https://blog.csdn.net/a1035719430/article/details/80022590

总而言之,今天第二次参加复赛,经验不是很足,犯了许多不应该的错误,这样难度的题目本来应该拿足暴力分的,再怎么说对我说100+100+10+100+40+60还是可拿的,但是最后却少了100多分,争取明年能拿到理想的成绩吧!

你可能感兴趣的:(2017NOIP总结(待更新))