<更新提示>
<第一次更新>
<正文>
2019/3/8 USACO测试
这一次是到高中的第一次考试,考得不太好,原因有很多。
先看一下试题安排:
题号 | 试题分组 | 考察算法 | 思维难度 | 代码难度 |
---|---|---|---|---|
1 | 金组(T1) | 建图+最短路 | ★★★ | ★★ |
2 | 银组(T1) | 后缀统计+暴力更新 | ★ | ★ |
3 | 银组(T2) | 离散化+线段树 | ★★ | ★★★ |
4 | 银组(T3) | (topsort)判环 | ★★ | ★ |
很显然(T1)和(T3)是最难的,一道思维难度大,另一道代码难度大。
考试的时候,我对题目的大致难度也已经察觉到了,时间安排是这样的:
- 读题 (20min)
- 推样例 (15min)
- (T2)思考+代码 (20min)
- (T3)思考 (30min)
- (T3)代码 (35min)
- (T4)思考 (30min)
- (T4)暴力代码 (20min)
- (T1)暴力代码 (20min)
- 检查细节+检查文件 (20min)
这样(3)个半小时就过去了,我认为大致时间安排是合理的,写出来了两道题,写了两道暴力,但是成绩就是另外一回事了。
(/) | (T1) | (T2) | (T3) | (T4) | (total) |
---|---|---|---|---|---|
(score) | (10) | (20) | (30) | (100) | (160) |
其实主要原因还是出在写挂上,算法的思路是完全没有问题的,和正解几乎一模一样。
关于(T2),其实主要出的问题是计算平均分是没有用浮点数来比较大小,这样就导致答案误差会很大,改正之后直接(AC)了。这其实是一个稍微想一想就能解决的问题,虽然自己学校翻译的题面是没有很明显的说清楚,但是还是应该要想到的。这种错误可以用来吸取教训,但是以后不能再错了。
还有的就是输出格式有一点问题,这个不是我的锅。
关于(T3),错误是漏判了一个条件,当同一头牛两次作为第一名时,它的分数也可能是不一样的,这种情况需要特判,不用累加答案,改了之后也(AC)了。其他的好像没有什么问题,线段树也自己可以写出来了,就是离散化还要再熟练一点(写了博客:『离散化 discrete』)。
这个(T4)倒是挺惊奇的,数据水得不得了,我暴力模拟(1000)遍再统计既然直接(AC)了。正解应该直接建图((i)号点向(a_i)连一条边),然后(topsort)判环,输出所有环的大小之和即可,这是应该想到的。
(T1)是一道建图题,考场上直接写了暴力模拟,思维难度确实是有点大,考试后还想了很久,看了题解,想这样不可能写出来的题,写一个暴力是好的选择。
那么以后要注意的是:
- 1.想完一道题之后先尝试检验算法正确性,或找找反例
- 2.写完一道题之后多出几组数据测一测,死磕出来的难题可以考虑直接写个暴力对拍
- 3.做完后至少留(20-30)分钟的时间检查细节,有没有漏判情况之类的
摘几句机房某(dalao)的备注:
写代码时请注意:
1.(long long)
2.数组大小,边界
3.数据范围
4.精度
5.特判
6.至少做一些部分分
思考提醒:
1.最大值最小(最小值最大),二分
2.尝试贪心,贪心不行尝试(DP)
3.优化
4.维护区间用什么数据结构
5.统计方案是否用(DP),是否要取模
6.逆向思维
<后记>