NOIP2016普及组初赛经典难题详解

NOIP PJ 2016

15 15 . 若某简单无向图有 16 16 条边且每个点的入度均为 2 2 ,求该无向图的定点数。

答案: 16 16

分析: 考虑对于每条边,对总入度之和的贡献均为 2 2 (一条边连接两个顶点),故各个点的总入度为 16 × 2 = 32 16×2=32

由于每个点的入度均为 2 2 ,故有 32 2 = 16 \frac {32} 2=16 条边。


16 16 . 有八个一模一样的苹果,放到 3 3 个一样的盘子中有多少种放法。

答案: 8 8

分析: 有一下几种方法:

①0 1 6
②0 2 5
③0 3 4
④1 1 5
⑤1 2 4
⑥1 3 3
⑦2 2 3
⑧0 0 7

易漏: ⑥⑦⑧。

同时,通过组合数学也可以得到相同的答案。


  1. 周末小明和爸爸妈妈三个人一起想动手做三道菜。小明负责洗菜, 爸爸负责切菜, 妈妈负责炒菜。假设做每道菜的顺序都是: 先洗菜 10 分钟,然后切菜10分钟,最后炒菜10分钟。那么做一道菜需要30分钟。注意:两道不同的菜的相同步骤不可以同时进行。例如第一道菜和第二道的菜不能同时洗, 也不能同时切。那么做完三道菜的最短时间需要多少分钟?

答案: 50

分析: 经典的最优化策略问题。

考虑尽可能得不让人闲着。定义三个菜分别为 1 , 2 , 3 1,2,3 ,列出表格:

小明 爸爸 妈妈
1-10
11-20
21-30
31-40
41-50

故最少需要 50 50 分钟。


21. 21. 在一个 4 × 4 4×4 的棋盘上选择两个不在同一列也不在同一行的两个格子,有多少种选法?

答案: 72 72

分析: 简单的乘法原理。

首先第一个格子有 4 × 4 = 16 4×4=16 种放法。由于这两个格子不在同一列也不在同一行,所以第二个格子有 ( 4 1 ) × ( 4 1 ) = 9 (4-1)×(4-1)=9 种选法。

注意,通过常识发现棋盘上任何两个格子都是相同的,所以答案还要除以 2 2 ,即 16 × 9 2 = 72 \frac {16×9} 2=72 种选法。


22 22 . 求:
①节点数为 2016 2016 二叉树最少的叶子节点个数;
②节点数为 2016 2016 二叉树最小高度。

答案: ①1 ②11
分析: 一道简单的构造题。

①考虑构造一条长度为 2016 2016 的链,其叶子节点个数为 1 1
②考虑构造一个完全二叉树,其高度为 l o g 2 2016 = 11 \lceil log_2 2016 \rceil=11


23 23 . 阅读程序

答案: 6 , 1 , 3 6,1,3
分析: 挖了巨坑……本蒟蒻差点跳进去……

①看到 0 0 的时候 c o u n t count 没有变化;
②输出的是逗号,而不是句号;
s u m c o u n t \frac {sum} {count} 做的是向下取整的整除运算,因为 s u m sum c o u n t count 都是整型变量。

其他的模拟即可,并无难度。


27. 27. 完善程序(快读+输出)

答案: 见分析

分析:
①显然是 c i n . g e t ( ) cin.get() ,表示把字符 c c 读入;前面已经有提示了。

②本蒟蒻这题错了QAQ( 3 -3 )……这里,我们读入了第一个数字字符,需要用它来初始化 n u m num 。显然是 n u m = c 0 num=c-'0' ,即 n u m num 刚开始为 c c 表示的数字;

③要求的是数字字符,故应该为c>=‘0’&&c<=‘9’。

④根据位值原理,这里应该填 n u m = ( n u m 10 ) + ( c 0 ) num=(num*10)+(c-'0')

⑤这里发现它是负数,故要转换成负数,即 n u m = n u m num=-num


24. 24. 阅读程序(二分+贪心, 时间复杂度 O ( n l o g 2 n ) ) O(nlog_2n))

答案: 见分析

分析: 作为压轴题,本题还是有一定难度的。

①本蒟蒻又双叒叕错了……贪心地,从第 n n n + 1 n-nn+1 位学生开始拿自行车。之所以不从第 1 1 位开始拿,是因为根据排序原则,此时第 1 1 位的钱数一定比第 n n n + 1 n-nn+1 位学生的少,对于同样数量同样加强的自行车,显然要贪心地让 n n n + 1 n-nn+1 号学生先拿,而本蒟蒻却傻逼地填了匪夷所思的 1 1 ……注意提示了贪心判断

②此时,如果某位学生自己的钱不够用了,就用公共的钱。即应填 M i < c j M_i<c_j

③如果需要用的公共的钱不大于 A A 元,那么这种情况就可以,否则不可以。故应填 c o u n t A count≤A

④此时,根据后面的 a n s = m i d ans=mid 可以知道, m i d mid 的情况是可以的;故填 c h e c k ( m i d ) check(mid) ,而不是 ! c h e c k ( m i d ) !check(mid)

⑤根据二分的写法以及上文 l = m i d + 1 l=mid+1 的对称提示,这里应填 r = m i d 1 r=mid-1


本蒟蒻总分: 90.5

好菜啊……继续努力吧

猜你喜欢

转载自blog.csdn.net/Cherrt/article/details/107644954