【NOIP】10.6/10.7联考No.6总结

来源:互联网 发布:mysql date int 编辑:程序博客网 时间:2024/05/09 07:27

这两天的失误是真的有点大,一定要写下来提醒自己。

Day1
拿到题,T1 求Phi ; T2 二分or单调队列 ; T3 不会做(看错题了一开始)

于是我十分谨慎地推了一遍Phi的公式,我记得Phi是一个积性函数,很快就推出来了。
开始打程序。一开始没有考虑到b次方,于是在一个地方乘了b【殊不知还有一个地方,分解质因数剩下最大的质数忘记乘了】。
对拍,因为只能出小数据,是拍不出最大的质数这个错误的。
其次,还有一个错误,把Mo2写成了Mo,导致取模的值完全不一样。这个也是拍不出来的。
当我拍了之后就没去理他!没去理他!!!

T2 也没怎么难点,直接就推过去了,剩下2h左右做T3

T3 原题是 “ 统计有多少i满足i[l,r]aiS”,原意是“ 统计有多少i满足aiS,i[l,r]”,我理解成了“统计有多少i满足ai and iS,i[l,r]
就这样,这题成为了完全不会做的题,有and操作怎么做?
此时我想到了分块,map。。。。。。浪费了大概40min有多。
后来再看题目,才理解题目意思。接着我就没往分块,MAP上面想,直接就另辟蹊径了,然后就彻底走远了,还以为自己能够打出来,剩下20min才发现算法真的有问题,于是就急急忙忙去打了个暴力。一开始把<=1e4莫名其妙只找了3位数的值没找4位数,本来50分的良心暴力愣是只拿了35分。

Day1真的是失误连连,T1的打错,没有静下心来好好地读程序。
T3从一开始的看错题,到后面的构思直接另辟蹊径,走得更远了。
再提醒自己一次:好好看题,好好检查。
无论多么赶时间,最后的10min一定预留来检查程序。以前一直是为了rush而省去这一步骤,宁可rush也不检查。现在绝壁不行,宁可不rush。要么就在rush之前花10min检查。不怕不会做,就怕会做的分会丢。

实现上,不要再用Mo Mo2 这种confusing的容易错的名字,开成不一样的字母,不然打错了都看不出来。改程序的时候一定要小心,“牵一发而动全身”,程序也是一个严谨的整体,切不可捡了芝麻丢了西瓜。

以上就是Day1

Day2

审题;
T1 暴力, T2 贪心 , T3 不会做。
先很快把T1做完了,真的是简单题,纯暴力,仔细检查了两三次代码都没问题除了几个数据也没问题就过了。

T2 贪心策略一开始证错了,用错误的算法做了,打完10点,觉得不靠谱,打了对拍,发现自己错了,此时10:30。
说实话有点慌,第三题还没做,但是很快就平静下来找错误了。
贪心策略错了,要换一种【使两个值尽可能接近】
这个怎么做呢?我想到了背包,然后发现死做时间过不了,又仔细分析发现可以省去冗杂操作。此时10:50
抓紧时间赶紧打,但是打的时候考虑不全面。1、sum没清零 2、没有两个值都做一次。3、背包每次没清零。依次发现这些错误并改过来已经11:50了,T3直接告破,50分暴力都没打。

今天的问题出现在哪里呢?
不严谨。
首先是贪心策略,显然是错误的贪心策略为什么当时就觉得是对的?就因为用了错误的证明方法,没有把所有情况都列举出来。
其次是两种情况都要考虑,这在思考的时候有涉及到,但是真正去做的时候没有打出来,因为想的时候没有特别强调,没有真的去构思程序怎么打。
再其次是打程序的时候,清零要特别提示的吗?每用一个变量自然就要想到 初值,范围,数据类型。

T2花费了太多的时间,T3直接就不够时间了

不得不说这两天的失误真的是有点大。
我们再来总结一下

1 好好看题。
有的时候真的是样例都救不了你,如果你理解错题目的话。看清楚每一个符号,看清楚每一个字!
如果真的看错题了,一定要好好把题目再想一次,之前的思路要全部重新来一次,因为正解就会在你看错题目的时候被你否定。

2 好好检查。
无论多么赶时间,最后的10min一定预留来检查程序。以前一直是为了rush而省去这一步骤,宁可rush也不检查。现在绝壁不行,宁可不rush。要么就在rush之前花10min检查。不怕不会做,就怕会做的分会丢。

3 一定要严谨。

提出算法时,正确性一定要保证,无论证明多复杂,除非你根本不会证,这样的算法一定要慎用,除非走投无路不要用。要想复杂度,每一步怎么打,真的要在脑子里有代码。
使用变量时,初值、范围、类型,一个都不能跑。

说归说,但结果早已尘埃落定了。
正如歌词所说:“可惜没如果”

严谨,细心,才是编程的王道。有Bug的程序再多功能都没用。

不要放弃思考

0 0
原创粉丝点击