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 什么的大有人在。期望骗分 ?? 分。

贪心?如果想出来一个比较可行的局部最优解,带入 模拟退火算法 计算!期望骗分 0~100 分。(太玄了……)

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\)!

NOIP2016 试题研究

D1T1 玩具谜题 (30 min)

超级水的 模拟。期望得分 100 分。送分题分数绝对不能丢!……

D1T2 天天爱跑步 (1 h)

部分分骗一骗。直接暴力拿 25 分,其余点特判骗分。

正解 LCA + 桶 + 差分。不会写……基本的 LCA 要复习一下。

D1T3 换教室 (1 h 30 min)

DP。\(dp(i,j,0/1)\) 表示走完前 \(i\) 个教室, 换了 \(j\) 次,对于第 \(j\) 次选择换 \((0)\) 与不换 \((1)\) 的最优方案。然后就是推公式的过程。绝对可以推很久。期望得分 0~100 分。(想太多

D2T1 组合数问题 (45 min)

给定 \(n,m\) 和 \(k\),对于所有的 \(0\leq i\leq n,0\leq j\leq \min\left(i, m \right)\) 有多少对 \((i,j)\) 满足 \(C_i^j\) 是 \(k\) 的倍数。对于 100% 的数据,\(n,m\le 2000, k\le 21\), 数据组数 \(T\le 10^4\)。

先打表 \(C_n^m=C_{n-1}^{m-1}+C_{n-1}^m\) (杨辉三角),特别地,\(C_n^0=C_n^n=1\). 发现速度捉急,怎么办?

二维前缀和 \(sum(n,m)=sum(n-1,m)+sum(n,m-1)-sum(n-1,m-1)\).

然后 DP 统计答案。期望得分 100 分。

D2T2 蚯蚓 (1 h)

蛐蛐国里现在共有 \(n\) 只蚯蚓(\(n\) 为正整数)。每只蚯蚓拥有长度,我们设第 \(i\) 只蚯蚓的长度为 \(a_i\) (\(i=1,2,\dots,n\)),并保证所有的长度都是非负整数(即:可能存在长度为 \(0\) 的蚯蚓)。

每一秒,神刀手会在所有的蚯蚓中,准确地找到最长的那一只(如有多个则任选一个)将其切成两半。神刀手切开蚯蚓的位置由常数 \(p\)(是满足 \(0 < p < 1\) 的有理数)决定,设这只蚯蚓长度为 \(x\),神刀手会将其切成两只长度分别为 \(\lfloor px \rfloor\) 和 \(x - \lfloor px \rfloor\) 的蚯蚓。特殊地,如果这两个数的其中一个等于 \(0\),则这个长度为 \(0\) 的蚯蚓也会被保留。此外,除了刚刚产生的两只新蚯蚓,其余蚯蚓的长度都会增加 \(q\)(是一个非负整常数)。

蛐蛐国王希望知道 \(m\) 秒内的战况。具体来说,他希望知道:

  • \(m\) 秒内,每一秒被切断的蚯蚓被切断前的长度(有 \(m\) 个数);
  • \(m\) 秒后,所有蚯蚓的长度(有 \(n + m\) 个数)。

第一行输出 \(\displaystyle\left\lfloor \frac{m}{t} \right\rfloor\) 个整数,按时间顺序,依次输出第 \(t\) 秒,第 \(2t\) 秒,第 \(3t\) 秒,…… 被切断蚯蚓(在被切断前)的长度。

第二行输出 \(\displaystyle\left\lfloor \frac{n+m}{t} \right\rfloor\)个整数,输出 \(m\) 秒后蚯蚓的长度;需要按从大到小的顺序,依次输出排名第 \(t\),第 \(2t\),第 \(3t\),…… 的长度。

\(1 \leq n \leq 10^5\),\(0 \leq m \leq 7 \times 10^6\),\(0 < u < v \leq 10^9\),\(0 \leq q \leq 200\),\(1 \leq t \leq 71\),\(0 \leq a_i \leq 10^8\)。

直接用(或 STL 优先队列)记录每次切的蚯蚓。期望得分 80 分。

如果观察到本题隐含的单调性,即先被切掉的蚯蚓分成的蚯蚓一定比后切掉的蚯蚓分成的蚯蚓大,则根本不需要堆来维护:由一个堆变成三个队列。(详见 Link

思维量相当大,100 分看来是难了……

D2T3 愤怒的小鸟 (1 h)

本题 \(1\le n≤18\):暴搜 or 状压 DP

暴搜骗大量部分分!

状压 DP:\(f(i\mid line(j,k))=\min\{f(i\mid line(j,k)),f(i)+1\}\). 真的想出来就可以 100 分了。

总结

NOIP 2016 看上去真的挺难!考试内容都是比较高级的算法,又有较高的思维难度。如果 NOIP 2018 也这样考,千万不能灰心啊……注意到题目都给出了极好看的部分分,至少把部分分拿走,再绞尽脑汁想正解。

NOIP 考前研究的更多相关文章

  1. NOIP考前划水

    NOIP考前划水 君指先跃动の光は.私の一生不変の信仰に.唯私の超電磁砲永世生き! 要开始背配置了? 3行不谢. (setq c-default-style "awk") (glo ...

  2. NOIP考纲总结+NOIP考前经验谈

    首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 ...

  3. noip考前注意事项

    明天就要离开学校,后天的现在Day1已经考完啦,临近考试了紧不紧张呢(不紧张才怪),那么考前我们应该注意点什么呢? 1.带好自己的证件,带好自己的证件,带好自己的证件,这很重要. 2.试机的时候一定要 ...

  4. NOIP考前知识点整理

    前言:距离NOIP还有不到一百天(虽然NOIP没了),为了整理一下所学的内容,才有了这篇博文.本文内容无特殊说明全部来自于博主的博客,代码也都是新敲的,努力在个人的码风基础上做到尽量简洁,求资瓷. 一 ...

  5. 【NOIP考前模拟赛】纯数学方法推导——旅行者问题

    一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...

  6. NOIP 考前 队列复习

    BZOJ 1127 #include <cstdio> #include <cstring> #include <iostream> #include <al ...

  7. NOIP 考前 数论复习

    POJ 2891 x=r1 (mod a1) x=r2 (mod a2) x=a1*x+r1,x=a2*y+r2; a1*x-a2*y=r2-r1; 用Extend_Gcd求出m1*x+m2*y=d; ...

  8. NOIP 考前 数据结构复习

    BZOJ 1455 左偏树即可 #include <cstdio> #define LL long long ; struct Info{LL l,r,v,Dis;}Tree[Maxn]; ...

  9. NOIP 考前 暴力练习

    BZOJ 1028 暴力枚举听的那张牌,和那个多余的两张牌,其余的mod3后模拟就可以了 #include <cstdio> ; int n,m,a[Maxn],b[Maxn],cnt,A ...

随机推荐

  1. Vagrant 手册之 box - box 的信息格式

    原文地址 创建 Vagrant 的 box 时,可以提供在运行 vagrant box list -i 时展示的与用户相关的其他信息.例如,可以打包 box,以包含有关该 box 的作者和网站信息: ...

  2. jvm 更多链接

    http://www.cnblogs.com/dingyingsi/p/3760447.html    :  讲解 jvm https://blog.csdn.net/Luomingkui1109/a ...

  3. 虚拟机VMware,安装中标麒麟系统,64位的,版本6.0,并安装qt

    为了使用qt开发,安装中标麒麟系统. 虚拟机中安装,本来安装的是32位麒麟系统,结果发现qt无法安装(官网提供的是64位的run程序). qt安装的是qt-opensource-linux-x64-5 ...

  4. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法. 重启服务

    今天用Oracle突然出现Oracle ORA-01033: ORACLE initialization or shutdown in progress. 想起前两天删掉了几个DBF文件,幸好还没有清 ...

  5. StatusStrip 分类: C# 2015-07-23 11:58 2人阅读 评论(0) 收藏

    通过StatusStrip显示窗体状态栏 同时将状态栏分成三部分 居左边显示相关文字信息 中间空白显示 居右边显示时间信息 1.创建窗体及添加StatusStrip   默认StatusStrip名称 ...

  6. Crash的数字表格(莫比乌斯反演)

    Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b ...

  7. harbar仓库的接口测试

    一.接口测试命令 api接口文档:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/swagger.yaml 1)查看所属项目的信息 ...

  8. vue + element 创建教程

    一.环境准备 node安装 node版本:v10.15.3 node下载地址:https://nodejs.org/zh-cn/ vue-cli安装 全局安装vue-cli npm install - ...

  9. 330-支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台

    支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台 一.板卡概述     本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_ ...

  10. linux的svn服务器搭建--Subversion Edge

    linux下的collabnetsubversionedge的安装: 安装条件(运行环境) jdk + python + httpd 1.root用户下建立svnroot用户,及设定密码 userad ...