您的位置:首页 > 编程语言 > C语言/C++

NOIP2017提高组初赛游记 (题解&心得总结)(c++)

2017-10-15 19:56 387 查看
先给准备初赛的oier一点福利:

NOIP 2009-2016 提高组初赛c++试题及参考答案

说说 NOIP2017提高组初赛。

资源(需要c币/积分):NOIP2017提高组初赛c++

顺便贴个知乎:如何评价NOIP2017初赛?

单选

1.
C
考后有人说是“历史题”。这个东西其实度娘娘上有写的,但是约莫是我以前看度娘的时候眼瞎了,把“2022”看成“2020”?或者2020取消的是c?。(话说我们c++选手为什么要知道Pascal退出环境的时间?!)



2.
B
照旧眼瞎,将“补码”看成“编码”而错选……

普及一下二进制编码:原码、反码、补码。

首先我们把十进制转换成二进制后的那串数字前加一个符号位就是原码,正数为0,负数为1。例如 十进制数 -43 转换成二进制为 101011,则原码就是1101011,而题目中的八位指的是限制位数,如 -43 转成8位二进制原码为 10101011。

而“反码”就是在原码的基础上,正数不变,负数除符号位(第一位)外按位取反。如 原码 10101011 转成反码为 11010100。

“补码”则是计算机内部存储的编码。它更适合二进制数的加减运算。正数的补码依然与原码相同,而负数的补码是原码除符号位按位取反后加1的结果,即反码加1。如 原码 10101011 转成补码为 1101010101。

3.
A
位图空间的计算。

已知位图的分辨率和色位,求图像所占空间的方法:分辨率*色位*8/1024 (MB)

4.
C
如果你不觉得这是一条常识的话,至少要记住一点:2017年10月1日是周日,那么2018年10月1日一定是周一。当然,往前推的时候记得考虑闰年的情况。

5.
A
画个图就知道了嘛。

6.
C
这个东西我就没算对过。不过有个技巧:带几个好算的数试试。

7.
B
后缀?不是去年刚考了?

方法1:暴力代入各个选项(我就是用的这个,快准狠)。

方法2:画二叉树(准确性较高)。

方法3:模拟栈(除非时间很充裕,还不如暴力代入)。

8.
C
数学题,不解释。

9.
D
同上题。

10.
B
据说要用到高等数学的极限什么的,但是我并不会那种高深的东西,所以直接代数:F2=1/2, F3=3/4, F4=5/8, F5=11/16……诶?11/16≈12/18=2/3!代个6检验:F6=21/32≈20/30=2/3,果断B。

11.
D
你要是学会了归并排序,就没啥难度了。

12.
D
数学题,不解释。

13.
A
DP,但是很好想,不解释。

14.
D
第三个航班不会影响旅行成功与否,所以答案是0.9*0.8=0.72。

15.
C
3min能喷出360个球,所以ans=360/20=18。

多选

1.
CD
排序。

2.
C
每个选项都试一次。

3.
D
感觉这套题排序的分值很大啊。

4.
BD
不知道Fortran是什么……

5.
BD
直觉要选王选因为他叫王选。

问题求解

1.
3
游戏题,除了模拟还有别的方法么?

2.
4 9
求最小割?!难道这是网络流加入NOIP的暗示?!好吧我只会枚举。(据说这题正解是 对偶图最短路)

阅读程序写结果

1.
15
手动模拟……最开始算的是23。考后听说是数的拆分方法数?

2.
17 24 1 8 15
神奇的幻方……

3.
8
归并排序求逆序对(怎么又是排序?!!!)。

4.
1 3
2017 1
1 321
模拟吧,你会吐。

完善程序

1.

p[0]
rest<q
rest/q
rest%q*10+p[i]
rest%q


2.

degree[b]++
degree[i]==0
degree[i]--
head++
ans<len[a]


下面进入吐槽时间:

王选是谁?!

页脚写的是“NOIP2016”?我穿越了?!

这是数学卷子吗?!

Fortran是啥?

希尔排序并不了解?!

最小割?!

纯模拟有什么意义吗?!

说好了考计算机常识呢?

考遍了最短路终于考最长路了啊……

我想滚回2016年……

有队友开玩笑说,我们停课之前说的是十一月份考完,要是过几天出现在了课堂上,问起来,因为“初赛没过”?!

在此对复赛表示深深的担忧……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息