NOIP2018初赛 解题报告

前言

N O I P 2018 NOIP2018 NOIP2018初赛已经结束了,接下来就要准备复赛了。

不过,在此之前,还是先为初赛写一篇解题报告吧。


单项选择题
  1. 送分题。(虽然我还是做错了)可以考虑将它们全部转化为 10 10 10进制,则 ( 269 ) 16 = ( 617 ) 10 = ( 1151 ) 8 (269)_{16}=(617)_{10}=(1151)_8 (269)16=(617)10=(1151)8,而 ( 1001101011 ) 2 = ( 619 ) 2 (1001101011)_2=(619)_2 (1001101011)2=(619)2。故选 D D D
  2. 常识题。显然 C , C + + , P a s c a l C,C++,Pascal C,C++,Pascal都是编译执行的,只有 P y t h o n Python Python是解释执行的。故选 D D D
  3. 一道没什么意义的题目,随便蒙了一个答案。应选 B B B
  4. 显然,深度为 0 0 0的有 1 1 1个节点,深度为 1 1 1的有 k k k个节点,深度为 2 2 2的有 k 2 k^2 k2个节点,一次类图,深度为 h h h的有 k h k^h kh个节点,于是总节点数 = k 0 + k 1 + k 2 + . . . + k h = k h + 1 − 1 k − 1 =k^0+k^1+k^2+...+k^h=\frac{k^{h+1}-1}{k-1} =k0+k1+k2+...+kh=k1kh+11。故选 A A A
  5. 由于 T ( 0 ) = 1 , T ( n ) = T ( n − 1 ) + n T(0)=1,T(n)=T(n-1)+n T(0)=1,T(n)=T(n1)+n,所以可得 T ( n ) = n ( n + 1 ) 2 + 1 T(n)=\frac{n(n+1)}2+1 T(n)=2n(n+1)+1,这是近似于 O ( n 2 ) O(n^2) O(n2)的。故选 D D D
  6. 比较基础的一道题。应选 B B B
  7. 显然,如果固定左端点在最左边,则随机选取一个右端点后线段长度期望为 1 2 \frac12 21,再选择一个点,则线段长度期望肯定小于 1 2 \frac12 21,而答案中只有 B B B一个选项是小于 1 2 \frac12 21的。故选 B B B
  8. 仔细观察,可以发现 B B B选项和 C C C选项本质上是一样的,因此可以排除。 A A A D D D选项自己手算验证一下,便能发现 A A A是错误的。故选 A A A
  9. 感性理解一下,不管你摸几次球,每次摸到两个球的概率是一样的,所以应该是 1 : 1 1:1 1:1。故选 D D D
  10. 手算代入验证一下即可(其实就相当于 x − = x & − x x-=x\&-x x=x&x)。应选 B B B

不定项选择题
  1. 常识题。特别注意即使是关机的手机也不能带进考场,草稿纸同理。故选 A B AB AB
  2. 自己画画图即可,这里就不多说了。应选 C D CD CD
  3. 关于此题, A B D ABD ABD选项选项显然是错的,而 C C C选项显然有问题。故选 A B D ABD ABD
  4. 这题应该也是挺显然的。应选 A B D ABD ABD
  5. 这种题目考前刚好复习过。应选 B C D BCD BCD

问题求解
  1. 根据第③点,由于丙去了,所以丁一定不去;根据第④点,由于丁不去,而丙去了,说明甲一定去了;根据第②点,由于丁不去,说明乙肯定也没去;根据第①点,由于乙不去,而甲去了,说明周末没下雨。因此答案为:去了 没去 没去 没下雨
  2. 首先要知道一个性质:若设 a ≤ b a\le b ab,则 a = a   o r   b , b = a   a n d   b a=a\ or\ b,b=a\ and\ b a=a or b,b=a and b(我也不会证)。对于 b b b 1 1 1的位数 x x x进行枚举(从 0 ∼ 5 0\sim5 05),可以发现 a a a 2 x 2^x 2x种选择(每一位选与不选),因此答案就是 ∑ i = 0 5 C 5 i 2 i \sum_{i=0}^5C_5^i2^i i=05C5i2i,计算得 243 243 243,但由于我们考虑的是 a ≤ b a\le b ab的情况,因此最终答案应为 243 ∗ 2 − 32 = 454 243*2-32=454 243232=454(注意去重)。

阅读程序写结果
  1. 模拟即可。答案应为 4 4 4
  2. 这题本质上就是让你求一张图上有几个环。答案应为 6 6 6
  3. 熟悉哈希的人都知道, m a g i c ( ) magic() magic()函数就是一个哈希的过程,因此就是要求出有多少个不同的子串,这应该还是很好数的。答案应为 16 16 16
  4. 不难发现 g e t N e x t ( ) getNext() getNext()函数就是求当前排列的下一个排列。可以像我一样大力模拟,也可以像奆佬 h l 666 hl666 hl666 一样用康拓展开求解。答案应为 2   1   3   5   6   4 2\ 1\ 3\ 5\ 6\ 4 2 1 3 5 6 4 3   2   5   6   1   4 3\ 2\ 5\ 6\ 1\ 4 3 2 5 6 1 4

完善程序
  1. (1)既然它读入 x x x了,就不可能是 a [ i ] = x a[i]=x a[i]=x(否则可以直接读入 a [ i ] a[i] a[i])。故答案应为 a [ x ] = i a[x]=i a[x]=i

    (2)根据双向链表的的对称性可以轻松求解。故答案应为 i + 1 i+1 i+1

    (3)同上。故答案应为 R [ a [ i ] ] R[a[i]] R[a[i]]

    (4)同上。故答案应为 a [ i ] a[i] a[i]

    (5)自己带几组数据算一下即可。故答案应为 R [ i ] R[i] R[i]

  2. 这题是一个先贪心、再 D P DP DP的过程(其实一开始的贪心是完全多余的)。

    (1)根据此题代码的大致思路,显然可以看出第一个空该填什么。故答案应为 a [ i ] ∗ 0.95 &lt; = b [ i ] a[i]*0.95&lt;=b[i] a[i]0.95<=b[i]

    (2)这应该也是比较显然的。故答案应为 t o t a l _ a &gt; = t h r e s h o l d total\_a&gt;=threshold total_a>=threshold

    (3)这一空与上一空差不多,也是判断当前是否已经满足 ≥ t h r e s h o l d \ge threshold threshold。故答案应为 t o t a l _ a + j + a [ i ] total\_a+j+a[i] total_a+j+a[i]

    (4)显然,此空填的应该是在第二个商店买东西的总价。故答案应为 f [ j ] + t o t a l _ b − t o t a l _ b _ p r e f i x f[j]+total\_b-total\_b\_prefix f[j]+total_btotal_b_prefix

    (5)只要会背包的应该都知道,既然它判断了 j &gt; = a [ i ] j&gt;=a[i] j>=a[i],就肯定是要进行转移了。故答案应为 f [ j − a [ i ] ] f[j-a[i]] f[ja[i]]


后记

这次初赛应该能压线过的。

希望在 N O I P 2018 NOIP2018 NOIP2018中能够取得一个好成绩!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值