NOIP历年提高组问题求解总结

这个是一个没有代码的题解

开学之后就只有在机房里刷刷初赛题了(我不想提前退役qwq),但是有正当理由的弹(bu)性(zuo)作业和选修课当然是能翘就翘了,物理真的难qwq。
讲一讲历年的初赛题的问题求解吧,写个题解给各位大佬看着玩…
题面的话为了省去篇幅,各位都还是自己去百度一下吧。


2004

  • 第一题是一道笨笨的容斥原理,画个韦恩图就可以做出来了,大家自己尝试一下就可以了。
  • 第二题其实是一个哈密顿回路【不懂请百度】,如果两个人能够交流,那就是建立一条边,然后就是求出哈密顿回路了。

2005

  • 第一题其实先后大概考了两三次了,一个比较简单的算法。

    • 假设原先序列的元素与在目标序列的位置上的元素建立联系,则建立若干个联系,你会发现只有一部分元素建立一个联系集合,另一些元素建立联系集合,集合内的交换次数就是集合元素个数-1。
  • 第二题其实是一个博弈论(类似于nim游戏?),可以看出,先取者取时剩下1或2时是必胜态,剩下3时是必败态,那么可以进行推广,发现只要是3的倍数就是必败态,那么可以求出结果。

2006

  • 第一题其实是同年某个数竞的题目改编来,但大概出题人数学不行,改崩了,其实是无解(数学不学好怎么搬砖),也提醒各位在初赛之前看看数学题吧…
    • 原题其实是一个集合题,人数是2005个,你会发现有且仅有有5个人的集合才能满足条件,那么答案就是401。
  • 第二题真的不知道怎么说,百年不变打表找规律。或者dp吧…方程: f [ i ] = ( i 1 ) f [ i 1 ] , f [ 2 ] = 1 f[i]=(i-1)*f[i-1],f[2]=1 ,就是考虑第i层上的点p,实际它所有的走法就是从上一层的某个位置走下来的只有唯一一种走法,那么有 ( i 1 ) (i-1) 个位置,每个走法都有相同。

2007

  • 第一题讲道理我考场上真的不知道正确解法是什么,大概暴力找一找规律就出来了,考完之后听同学讲正解…我们考虑 f [ n ] [ k ] f[n][k] 表示 n n 个不同的球放到 k k 个相同的盒子里,不允许出现空盒,那么考虑已经放了 n 1 n-1 个球之后,这 n 1 n-1 个球会出现两种情况。

    • 一种是占领了 k 1 k-1 个盒子,那当前这个就只有放到第 k k 个盒子里面,情况是 f [ n 1 ] [ k 1 ] f[n-1][k-1]
    • 还有就是前 n 1 n-1 个小球放到了 k k 个盒子里,那么由于同伴不同,他的情况也就不同,总的情况就是 k f [ n 1 ] [ k ] k*f[n-1][k]
    • 那么可以推出 f [ n ] [ k ] = f [ n 1 ] [ k 1 ] + k f [ n 1 ] [ k ] f[n][k]=f[n-1][k-1]+k*f[n-1][k]
    • 接下来就是递推打表了。
  • 第二题其实我也是错了的(两道题都这么麻烦浙江这届分数好像都没及格)。好像给了提示,但是好像并没有什么卵子用,考场上你打打小数据会发现 f [ 2 n ] = 2 f [ n ] 1 f[2*n]=2*f[n]-1 ,这个神奇的规律还真他妈是正解!!!讲道理我真的觉得这个提示是句废话。

2008

  • 第一题不知道怎么说…就是人脑模拟最短路吧…建议spfa或dijkstra,当然如果你脑子够强你也可以尝试暴力floyd。剩下的就是算了。
  • 第二题其实就是一个排列组合题,之前数竞有讲过但是我没有听…这种插空排问题其实要转换思路的,隔一个插,插4本,其实就是在剩下的18个间隔里面调4个格子放,这样子保证了隔一个插的问题,然后就是 C 18 4 C_{18}^{4}

2009

  • 第一题看图就知道是让你拓扑排序了,但是建议还是手算算下,有人自认为组合数很牛逼,但是在算最后9的位置的时候忽略了8已经放好了,少了一个格子,就出现了偏差!打出gg。
  • 第二题其实是个弱智题,你就当是七进制的时候怎么花钱最方便嘛,生活常识解决。

2010

  • 第一题是语文阅读题,正常人应该都能够做对,不细讲了。
  • 第二题其实只要学过二分图匹配就知道,二分图增光路的时候是不会出现奇数条边的,只要将点左右分开,相互都连起来就可以了。
  • 第三题这题狗的不行啊…(10年莫名出了三道题),到17之前都可以很快举出反例,但是17的时候只有一个反例1…1(8个),16, 1…1(8个),然后答案就只有18了orz

2011

  • 第一题的推理过程其实比较水,原题给的数据和你要求的只差了1,而且图都给你了,只要在图上再加上一个点,发现肯定会有至少一个点被包围而无法和新建的点联系起来,那就只有3条边了,那么答案就是9。正解好像是用欧拉公式 m 3 n 6 m\leq3n-6 ,但是就算不知道也没关系,仔细连线就可以了。
  • 第二题有点像组合数学但其实是线性dp(最长上升子序列),然后你就会发现最长上升子序列的位置保持不变,剩下的元素插进去就可以了,剩下元素个数就是答案。

2012

  • 据说当年这两道题基本都没有人写出来。我觉得这个出题老师的语文水平不行。
  • 第一题愣了一年没有看懂…正解好像是一共还有p、q、r三个元素,和三种运算符,p、q、r取真假两两不同,而结果只有真假两种,所以答案就是 2 8 2^8
  • 第二题也是玄的一批。是个动规题,记 f [ i ] [ 0 ] f[i][0] 是在 i i 节点不选 i i 节点的情况总数, f [ i ] [ 1 ] f[i][1] 是在 i i 节点选 i i 节点的情况总数。可以写出方程
    • f [ i ] [ 0 ] = f [ l e f t [ i ] ] [ 1 ] f [ r i g h t [ i ] ] [ 1 ] f[i][0]=f[left[i]][1]*f[right[i]][1]
    • f [ i ] [ 1 ] = f [ l e f t [ i ] ] [ 0 ] f [ r i g h t [ i ] ] [ 0 ] f[i][1]=f[left[i]][0]*f[right[i]][0]
    • 大概就是当前这个节点选的话,左右子节点就不能选,当前节点不选,由于左右子节点必定不相邻,那么就是左右子节点的结果乘一乘就好了,求到根为止。

2013

  • 第一题是沙雕题就不讲了。
  • 第二题是个号称永远都做不对的期望题。以4为例, f 4 = 1 ! 4 ( f 4 + 1 ) + 1 4 ) ( f 3 + 1 ) + 1 4 ( f 2 + 1 ) + 1 4 f 1 f_4=\frac{1!}{4}(f_4+1)+\frac{1}{4})(f_3+1)+\frac{1}{4}(f_2+1)+\frac{1}{4}f_1 ,然后就可以求出这个了(或者你也可以暴力求个数列)。然后同样的方程来求 f 5 f_5

2014

  • 第一题排列组合,考试的时候我真的没想出来,然后就果断暴力枚举就出来了。听我蛾子说好像枚举没有数重复就是4!种,一对重复就是 6 2 3 2 6*2*3*2 ,最后两对相同就是6种。就出答案了。
  • 第二题是最短路,人工模拟就好。

2015

  • 第一题还是容斥原理,不讲了。
  • 第二题又是dp题,记录 f [ i ] f[i] i i 个节点的总方案数,那么 f [ i ] = 0 l n u m i 1 r n u m + l n u m = i 1 f [ l n u m ] f [ r n u m ] f[i]=\sum_{0\leq lnum \leq i-1}^{rnum+lnum=i-1} f[lnum]*f[rnum] 然后就是暴力算的问题了。

猜你喜欢

转载自blog.csdn.net/qq_42037034/article/details/82777682