20221113 - NOIP 模拟赛 #4

20221113 - NOIP 模拟赛 #4

这次明显简单了,◑﹏◐

时间分配

  1. \(7:40-8:10\) 浏览题面

  2. \(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\) 分。

  3. \(9:20-9:55\) T2

    好像之前做过一个可以不按照顺序而上电梯,而且同时可以乘坐多人的版本

    但是不记得什么时候、数据范围、做法了……

    仔细阅读完之后,才发现并没有那么难。

    刚开始看到 输出最小的值,就开始二分答案,写着写着发现答案不单调。

    再思考,发现非常简单,把 \(a,b\) 都存到同一个数组,

    取中间值就是自动停靠的楼层,然后 \(O(n)\) 枚举求距离即可。

  4. \(9:55-10:35\) T3

    看到与 位运算 有关,傻了。

    本觉得会给一些不需要位运算的部分分,后发现根本没有。

    由于 异或运算 的限制,最小的部分分也不会写。

    只能骗:每一组都取最大值,然后相加。

  5. \(10:35-11:15\) T4

    想不出来如何让写这种有繁杂条件的题,不知道该用什么算法。

    决定写 dfs,按照题意模拟,然后分析一下特殊数据,感觉能拿 \(40\) 吧。

  6. \(11:15-11:25\) 交题

    交完没几分钟题库就 502 了。

最终成绩——前 \(50\%\)

T1 T2 T3 T4
30 100 0 30
  1. T1 部分分 TLE,很奇怪不知道为什么,特殊数据没开 long long,加起来少了一半。

  2. T2 如期 \(100\),但是不理解为什么 答案好像还用了 差分…… 也没有仔细看。

  3. T3 看了答案之后,发现部分分十分套路,之前一定写过类似的状态转移,

    比赛时被 位运算 吓住了,什么都没想到,只想到底怎么找 异或和最大的几个数了。

  4. T4 特殊数据少考虑了一点,只想到 1号 可以传给 2号,没有想到 2号 也可以不要助推器就能到中点。

    多加一个 for 判断就行了,少了 \(10\) 分。

    看完正解时候,发现和比赛时我写的 dfs 非常像,用 dp 写不会 TLE 了。

    这时突然想到昨天上课时老师说的:弄清楚 dfs 与 dp 之间的关系(大概是这样说的吧)

    有了一丝理解了>︿<

反思总结

  1. 题虽然简单,最终成绩还是不理想,小问题避免了能到 \(200\) 吧。

  2. 基础算法还是差了一些,抽时间练练基础题还是有必要的,

    天天都是 分块、莫队…… 人都写傻了,一遇到区间就要莫队 (T_T)

  3. 加深 dfs 与 dp 的联系,以后暴力 dfs 写出来之后,就要考虑能不能转换了。

    这次思路差别不大,但是一个 \(20\),一个 \(100\),分数差别有“亿”点大。

posted @ 2022-11-13 21:40  Lan_Sky  阅读(24)  评论(0)    收藏  举报