20221113 - NOIP 模拟赛 #4
20221113 - NOIP 模拟赛 #4
这次明显简单了,◑﹏◐
时间分配
-
\(7:40-8:10\) 浏览题面
-
\(8:10-9:20\) T1
第一眼看到它,下意识要枚举区间,然后依次枚举
没有仔细想,觉得 \(O(n^2)\) 能过 \(2\) 个数据。
然后依次思考第 \(4,5,6,7\) 这四个特殊数据,并依次想到解法
没有 \(-2\) 这个数字时,我想用 ST表 维护区间,用每个 \(2\) 将区间分开
然后对于每一个段,就都只有 \(1,-1\) 了。
想到这里,突然发现可以用 ST表 \(O(n\log n)\) 预处理 区间最大值最小值
然后枚举每个区间,\(O(1)\) 查询答案,可是需要 \(O(n^2)\) 枚举区间
写完之后思考怎么优化查询时候的方法,失败了。感觉能拿 \(60\) 分。
-
\(9:20-9:55\) T2
好像之前做过一个可以不按照顺序而上电梯,而且同时可以乘坐多人的版本
但是不记得什么时候、数据范围、做法了……
仔细阅读完之后,才发现并没有那么难。
刚开始看到 输出最小的值,就开始二分答案,写着写着发现答案不单调。
再思考,发现非常简单,把 \(a,b\) 都存到同一个数组,
取中间值就是自动停靠的楼层,然后 \(O(n)\) 枚举求距离即可。
-
\(9:55-10:35\) T3
看到与 位运算 有关,傻了。
本觉得会给一些不需要位运算的部分分,后发现根本没有。
由于 异或运算 的限制,最小的部分分也不会写。
只能骗:每一组都取最大值,然后相加。
-
\(10:35-11:15\) T4
想不出来如何让写这种有繁杂条件的题,不知道该用什么算法。
决定写 dfs,按照题意模拟,然后分析一下特殊数据,感觉能拿 \(40\) 吧。
-
\(11:15-11:25\) 交题
交完没几分钟题库就 502 了。
最终成绩——前 \(50\%\)
| T1 | T2 | T3 | T4 |
|---|---|---|---|
| 30 | 100 | 0 | 30 |
-
T1 部分分 TLE,很奇怪不知道为什么,特殊数据没开
long long,加起来少了一半。 -
T2 如期 \(100\),但是不理解为什么 答案好像还用了 差分…… 也没有仔细看。
-
T3 看了答案之后,发现部分分十分套路,之前一定写过类似的状态转移,
比赛时被 位运算 吓住了,什么都没想到,只想到底怎么找 异或和最大的几个数了。
-
T4 特殊数据少考虑了一点,只想到 1号 可以传给 2号,没有想到 2号 也可以不要助推器就能到中点。
多加一个
for判断就行了,少了 \(10\) 分。看完正解时候,发现和比赛时我写的 dfs 非常像,用 dp 写不会 TLE 了。
这时突然想到昨天上课时老师说的:弄清楚 dfs 与 dp 之间的关系(大概是这样说的吧)
有了一丝理解了>︿<
反思总结
-
题虽然简单,最终成绩还是不理想,小问题避免了能到 \(200\) 吧。
-
基础算法还是差了一些,抽时间练练基础题还是有必要的,
天天都是 分块、莫队…… 人都写傻了,一遇到区间就要莫队 (T_T)
-
加深 dfs 与 dp 的联系,以后暴力 dfs 写出来之后,就要考虑能不能转换了。
这次思路差别不大,但是一个 \(20\),一个 \(100\),分数差别有“亿”点大。

浙公网安备 33010602011771号