『2019/3/8 USACO测试 反思与总结』
<更新提示>
<第一次更新>
<正文>
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.逆向思维
<后记>