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

本文解析了NOIPPJ2016竞赛中的数学题目,包括无向图的定点数计算、苹果分配问题、三道菜制作时间优化、棋盘鸽格子选法、二叉树特性分析等,提供了详细的解答思路。

NOIP PJ 2016

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

答案: 161616

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

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


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

答案: 888

分析: 有一下几种方法:

①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,31,2,31,2,3,列出表格:

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

故最少需要505050分钟。


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

答案: 727272

分析: 简单的乘法原理。

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

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


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

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

①考虑构造一条长度为201620162016的链,其叶子节点个数为111
②考虑构造一个完全二叉树,其高度为⌈log22016⌉=11\lceil log_2 2016 \rceil=11log22016=11


232323. 阅读程序

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

①看到000的时候countcountcount没有变化;
②输出的是逗号,而不是句号;
sumcount\frac {sum} {count}countsum做的是向下取整的整除运算,因为sumsumsumcountcountcount都是整型变量。

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


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

答案: 见分析

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

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

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

④根据位值原理,这里应该填num=(num∗10)+(c−′0′)num=(num*10)+(c-'0')num=(num10)+(c0)

⑤这里发现它是负数,故要转换成负数,即num=−numnum=-numnum=num


24.24.24. 阅读程序(二分+贪心, 时间复杂度O(nlog2n))O(nlog_2n))O(nlog2n))

答案: 见分析

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

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

②此时,如果某位学生自己的钱不够用了,就用公共的钱。即应填Mi<cjM_i<c_jMi<cj

③如果需要用的公共的钱不大于AAA元,那么这种情况就可以,否则不可以。故应填count≤Acount≤AcountA

④此时,根据后面的ans=midans=midans=mid可以知道,midmidmid的情况是可以的;故填check(mid)check(mid)check(mid),而不是!check(mid)!check(mid)!check(mid)

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


本蒟蒻总分: 90.5

好菜啊……继续努力吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值