NOIP 考前研究

NOIP 2017 试题研究

D1T1 小凯的疑惑 (45 min)

看到题面,大概是推数学公式。

先打暴力表,观察 \(a,b\)\(n\) 的关系。猜想 \(a×b−a−b\)

引理:对于正整数 \(p , q\) 满足 \(\gcd(p, q) = 1\), 使得 \(px + qy = n\) 无非负整数解的最大正整数 \(n\)\(pq - p - q\).

使用反证法证明,即假设存在正整数 \(x\)\(y\) 使得 \(px + qy = pq - p - q\),证明矛盾。期望得分 100 分。

没办法一眼望穿?观察到答案更接进于 \(a\times b\),考虑从 \(a\times b\) 到 1 递推。期望得分 70 分。

D1T2 时间复杂度 (1 h)

一眼望穿,模拟 + 字符串 + 栈结构。

然后死在模拟的过程中……期望得分 0 分。

绝对不能没把整个题目推完就开始写。先在草稿纸上把所有要注意的点写出来,列出清单。

在草稿纸上列出模拟的所有标记变量的含义和作用。在草稿纸上写出大致代码层结构,标出特判和标记变量作用的位置。(其实代码大致就出来了。)

上机实现。期望得分 100 分。

此类题目(模拟 + 字符串)严重考察细心和耐心。如果你的思路清晰,代码严谨工整,就不会过不去样例……

D1T3 逛公园 (45 min)

DP + 拓扑序 + 最短路 or 搜索 (记忆化)

观察题目。啥都看不出来?先打暴力。

容易发现,Day 1 还没有考 DP。注意到 \(K\le 50\),猜测这是一个与 \(k\) 有关的 DP。

特殊情况 1:当 \(K=0\) 时,最短路计数!

最短路计数:

Dijkstra 堆优化 或 SPFA(死了)。

定义一个新变量数组 cntcnt[S]=1。更新边长的时候如果大于号就覆盖(cnt[to[i]]=cnt[x]),相等的话(即有相同最短路径)就相加(cnt[to[i]]+=cnt[x])。无边权即边权为 1。

注意模法。实现难度 [普及+/提高]。

期望得分 30 分。

特殊情况 2:然后考虑 没有 0 边 的情况。构造 DP 求解。写不出来……期望得分 30 分。

然后回过头检查 T1、T2 的代码。千万不要放空!放个 rand()%mod 也行啊……要爱惜分数。

D2T1 奶酪 (45 min)

观察到本题适合使用并查集。(NOIP 考点之一。)

距离要预处理。

实现难度 [普及/提高-]。期望得分 100 分。

D2T2 宝藏 (1 h 30 min)

状压 DP。思路难想!期望骗分 0 分。

写不出来状压 DP……显然要考虑部分分。DFS + 剪枝!暴搜算法的时间复杂度是 \(O(\)玄学\()\)。不要忘记低级算法的重要性,暴搜 AC 什么的大有人在。期望骗分 ?? 分。

D2T3 列队 (45 min)

标算是树状数组。想不到……想到了也不会写……

考虑部分分采用离散化思想。

对于 \(x_i=1\) 的情况,转化为:

对于一个序列,支持操作 (1) 删除第 \(k\) 个元素;(2) 在末尾添加一个元素。

尝试用树状数组实现。

维护一个 01 序列,第 \(i\) 位上是 0 表示这个位置上的数已经被删除了或者还没有被插入,第 \(i\) 位上是 1 表示这一位上的数没有被删除。

那么删除操作就是 1 → 0,插入操作就是 0 → 1。第 \(k\) 个元素就是前缀和为 \(k\) 的位置。树状数组二分。

PinkRabbit

其他就完全不会了。期望得分 30 分。(模拟得分)

总结

乐观估计为 360+?? 分。可见去年的难度还是很高的。如果暴搜写得给力能拿 400 分,如果字符串模拟炸了,那就省一无望了。(毕竟去年 FJ 省一线 300 分。复旦自招线 360 分……)

如何发挥超常正常?首先该拿的分数坚决不能丢掉。字符串模拟、暴搜剪枝,还有最短路和并查集的板子,一定要写出来。DP 能推的尽量推,部分分能骗的尽量骗……

明明所有考点都是 NOIP 范围内的,明明我也会 DAG 上 DP、状压 DP、树状数组……可见还是学艺不精,有待提高。

括号中标记的是完成核心代码的理论时间。实际上,一旦陷入 bug 的泥潭就很难出去了……

祝 NOIP 2018 RP \(\rightarrow\infty\)

猜你喜欢

转载自www.cnblogs.com/greyqz/p/9902161.html