NOIP2018 No regrets youth

NOIP2018在即,20181009总结一些易错的知识点和解题方法

——by ljc20020730 HGOI

  • NOIP2018 No regrets youth !
  • NOIP2018 No regrets youth !
  • NOIP2018 No regrets youth !

解题方法概述

  • 选择题(总分15+5共30分)

目标得分: 25.5 

时间控制:25 min

解题方法:

  1. 注意审题(如NOIP2016 T2 别把CapLock当作输出),仔细解答
  2. 程序模型题看清楚算法思想,保证拿分
  3. 树的题目尽量带特殊数据,加快解题速度
  4. 抓住题目关键性字眼,如非联通,正确还是错误,有关还是无关,包括和不包括,是还是不是,行优先还是列优先,
  5. 关注选项的互译性,意思相同的选项作为单选题尽量不要斟酌
  6. 分清楚一些已经错过的题目如插入排序和选择排序的原理问题,sin(sin(x))不是递归,二次探测的意思,散列的意思,子串包含空串
  7. 注意控制答题时间以免后面的大题分数没有仔细斟酌,这里其实并拉不开差距
  8. 一些斟酌的计算机基础知识的题目一定一定要专注于第一选项
  9. 实在不行统计ABCD一般来说ABCD选项都是较为平均的分配的
  10. 简单数学题不要花费大量时间注意采用验证法和归谬法和特殊值法来做(一定要看Master 算法)
  •  问题解决题(2题,共10分)

目标得分: 5-10

时间控制:20 min

 注意一些常用的数学递推结论,

 如

  1. 卡特兰数列(C(2*n,n)/(n+1))
  2. 错排递推式f(n)=(n-1)*(f(n-1)+f(n-2),f(1)=0,f(2)=1)
  3. 等比数列求和公式 (an=a1*q^(n-1),S=a1(1-q^n)/(1-q))
  4. 第二类斯特林数(n个不同的球,放入m个无区别的盒子,不允许盒子为空,S(n,m)=S(n-1,m-1)+m*S(n-1,m))
  5. 重排列公式(a1+a2+a3...+an)!/(t1!*t2!*t3!...*tn!)
  6. 第二类斯特林数的pascal三角 
         1    2     3    4    5     6    7    8
    1    1    
    2    1    1    
    3    1    3    
    4    1    7    6    1    
    5    1    15   25   10    1    
    6    1    31   90   65    15    1    
    7    1    63   301  350   140   21   1    
    8    1    127  966  1701  1050  266  28   1

  7. 问题解决不一定是组合数,在情况复杂的情况下找找规律,不要急于暴
  8. 不会做想Dp,比如一些n个苹果放到m个盘子里,考虑这样一个递推:
int f(int m,int n)
{
    if (m==0||n==1)  return 1;
    if (m<n) return f(m,m);
    if (m>=n) return f(m,n-1)+f(m-n,n);
}

对于一些最少最多的题目好好想想反例千万不要急于下笔,一般来说最值问题答案都是和第一次算出来的答案不相符合(真的没有更多了嘛?有没有反例?)
对于结论题千万不要相信自己第一次猜出的结论积极找反例
暴力枚举讲究方法有次序(如NOIP2017 T2暴力枚举上边和下边出错几率比较小)

  • 阅读程序题(共4题共32分)

目标得分:32

时间控制:35 min

  1. 对于简单题千万不要大意在这里丢分基本复赛没戏(我易人易,我难人难)
  2. 注意隐藏在模拟条件中的优先级别(先算and再算or,xor)和取模运算(a%b=c中c的符号永远和a的符号相同)的事情
  3. 注意列表法尽量保证第一遍就算对,对于不确定的复杂的推算的题目一定不能盲目找规律,尽量多推几遍,减少失误
  4. 猜测题目的意思如最小生成树、dijkstra算法最短路、哈密顿路径(找一条路径使每个节点恰好出现一次)
  5. 通过小样例模拟推大数据(找一些线性规律)
  6. 递归题目细心算列树形图
  7. 一些经典的问题:排序算法、约瑟夫问题(Jq(n+1) = ( Jq(n) + q ) / (n+1))
  8. 特征方程:

    f(0),f(1)已知 f(n)=c1*f(n-1)+c2*f(n-2) , 求出f(n)通项公式 

    解出  x2-c1*x-c2 = 0 的解 x1 和 x2

    若 x1=x2 那么 f(n)=(A+B*n)*x1n

    若 x1!=x2 那么 f(n)=A*x1n+B*x2 n

  • 程序填空题(共28分)

目标得分:24

时间控制:30 min

  1. 第1遍能填的填保证简单的填对
  2. 第2遍根据算法思想推敲或者模拟计算规律或者根据数据结构做一定的操作
  3. 关注初始化和条件语句(可以参考上下文),注意调用时参数的问题要仔细考虑
  4. 分值特别标明的空格要格外当心
  5. 第3遍一定一定要重新理清思路检查一遍
  • 考场策略
  1. 带(*)纯净水、餐巾纸、铅笔、橡皮、水笔、准考证
  2. 提前半个小时一定要到达考场提早进入状态
  3. 考试之前不要剧烈运动,最好做几道信心题或者复习错题
  4. 减少答题时的干扰比如喝水、上厕所
  5. 做好后一定要重点检查阅读程序和问题解决,尽量减少这里的失分

干货概述

  • 选择题

1. *和 +或

2. 优先级 :F(c) () ; ~!; 算术运算; 按位移动; 关系; 位运算(与,或、异或); 逻辑运算; 

3. +0 和 -0 : 原码不一样反码不一样补码一样 : -128特殊:只有补码

4. Char的范围[-128,127]

5. 无符号 [0,255]  00000000 11111111

6.定点数和浮点数

定点数(占据一个小数位数)

浮点数(科学计数法表示)

N=2^E*S(S是尾码,E是阶码)

整个数的符号看S

精度看S,大小看E的位数

64位浮点数转为32位浮点数

大小不一定;符号一定

7.逻辑运算: 列真值表

8.计算机存储单位:

b,B,KB,MB,GB,TB,PB,EB(没SB)

bps == bit/s

Kbps == Kbit/s

Mbps== Mbit/s

(不要混用注意文件单位是B,时间先算后要乘以8)

9.排序问题

最小比较次数 [log_2 n!] 上取整

交换相邻两数最小交换册数 逆序对个数

任意交换元素 找置换环个个数K 答案是(n-K)

移动?最长上升子序列

10.查找问题

二分查找 l+r 整除2 [l+1,mid] 和 [mid+1,r-1]

线性探测每次下标+1

二次探查法+1 -1 +4 -4 +9 -9 (以原来位置为基准)

二叉排序树 : 左小右大 

Huffma 两个数一个是一个数的前缀就是不合法的Huffma编码

11.图

图的性质:

有向图:入度等于出度

无向图:度数等于边数*2,所以度总数不是奇数

最短路上所有经过的都是最短的路径

平面图:所有点线都在同一平面上

欧拉公式:G是联通的平面图,节点数为n边数为e,面数为r那么n-e+r=2

哈密尔顿图:经过每个点仅一次,存在一条路径就是哈密尔顿图

判断哈密尔顿图:没有必要条件

WP着色法: 每次找度数最大而未找色的着一种颜色,(判断相邻不同色贪心)

二分图都有而且有就能推出 :所有回路都是偶数(无奇环)

12.计算时间复杂度的方法

【重点】Master 定理

13.N.NP.NPC问题

多项式复杂度:n在底数上

P:在多项式时间复杂度内可以完全解决的问题

NP:在多项式时间复杂度可以验证一个可行解的问题(包含P问题)

NPC:在NP问题中挑选出来的一些经典问题,如解决一个 NPC=P 那么就可以推出NP=P的问题

14.网络协议

TCP/IP 4;OSI 7

应用层协议 HTTP FTP SMTP DNS

传输层协议 TCP UDP

网络层协议 IP ARP

数据链路层协议 (None)

15. IPv4 地址

A类地址 1个字节表示 网络标识(第1位是0后面7位存2进制) 后面3个字节表示主机的号码 地址范围: 0.0.0.0 --- 127.255.255.255 网络数:128个,每个网络的主机数2^24

【特殊地址:127.*.*.* 本机地址 10.*.*.* 本地网络】

B类地址前2个字节为 网络标识(第1,2位分别为1,0),后2个字节表示主机号码

IP到掩码 “与“ 操作

1000,0000,0000,0000(B) – 1011,1111,1111,1111(B)

128.0.0.0-191.255.255.255

【特殊地址:172.*.*.*】

C类地址前3个字节为 网络标识(第1,2,3位分别为1,1,0),后2个字节表示主机号码

192.0.0.0-223.255.255.255

【特殊地址:192.168.*.*】

出现DE不要选了不常见!

【特殊地址:网络本身 0.0.0.0 子网广播地址255.255.255.255】

IPv6 128

16.网络接入

集线器:分;交换机:共享 (物理层、数据链路层)

路由器:自动拨号自动寻址(网络层)

  • 问题解决题
  1. 分治法(找规律)
  2. 博弈游戏的模型

    A. Bash Game 多堆石子在一堆取取[1,x]颗

      考虑一堆(a):a=n(x+1)其中n为Z那么先手必输;a=n(x+1)+r 先手必胜

      考虑若干堆 ai {1<=i<=n} 偶数堆必胜那么先手必败,奇数堆必胜那么先手必胜

      考虑异或和是为1 那么先手必胜,否则先手必败

      策略让对手面临必败的境遇

    B. Wythoff Game 两堆,从一堆至少取1或者两堆同取相同

      (0,0)先手必败 (0,1) 先手必胜

      (1,2)先手必败

      规律:差值规律0,1,2,3,4… 如(0,0) (1,2) (3,5) (4,7) (6,10) 等

            (x,x+d) 若为必败局 则 x=(sqrt(5)+1)/2 * d 

      强制类型double->int 是向0取整

         3. 抽屉原理:贪心

         4. 容斥原理: 每次减去重复加上再重复的(repeat)

    错排公式:D(1)=0,D(2)=1,D(n)=(n-1)(D(n-1)+D(n-2)) {n>=3}

        5. 组合数学: n中取r个排列 P(n,r) ;n 中取r圆排列 P(n,r)/r )

                n中取r个组合 C(n,r)

          r个相同的小球放到n个不同的盒子里排列H(n,r)=C(n+r-1,r)

  •       捆绑法:相邻排列作为整体考虑
  •       插入法:排好没有限制的元素,有不相邻限制的插入
  •       排异法:求出反面,然后从整体中排除

          例题:正六边形中心和定点取3个点为顶点的三角形数目C(7,3)-3

  •       优先法:有特殊条件的元素或位置优先安排
  •       分类讨论法(考虑分步插入):多元问题不重不漏
  •       先选后排法: 适合排列组合混合问题
  •       隔板法:名额分配、相同物品的分配问题

    6. 递推:小规模推到大规模

       做不出来组合题、数据结构题想想Dp

   7. 数列:

  • 汉诺塔问题H(n)=2h(n-1)+1  h(1)
  • 平面分割问题:满足二次函数
  • 卡特兰数列:通项公式 C(2n,n)/(n+1)

          适用:二叉树n形态;总数n*n从左上角走到右上角有多少种走法;

                      n个元素入栈出栈可能;n个0和n和1排成不同组合数

  •    第二类斯特林数:n个人分成m组S(n,m)=S(n-1,m-1)+m*S(n-1,m)

  8. 网络流/最小割/最大流 最大流=最小割 (注意千万求最大流的时候用最小割,有损耗)

      对偶图(面编号上下加序号有边相邻的互联得到对偶图求出最短路径就是最小割,最短路奇数就行)

  9. 平面图和欧拉定理 :G是联通的平面图,节点数为n边数为e,面数为r那么n-e+r=2

  10. 概率论 : 穷举(决策树)

    乘法定理: 记 P(B|A)在A发生的条件下发生B的概率

      P(AB)=P(A|B)*P(B)=P(B|A)*P(A)

      全概率公式: P(A)=singma(i=1;n; ABi) 其中Bi是A的划分 P(A)=singma(i=1;n; P(A|Bi)*P(Bi))

  11. 数学期望:概率加权平均值 总能得到的价值/样本总空间

  12. 小球放盒子的情况讨论

  •  n个不同小球放r个不同的盒子 r^n (允许出现空盒)
  •  n个不同小球放r个不同的盒子 r!* S(n,r) (不允许出现空盒)
  •  n个不同小球放到r个相同的盒子里(不出现空盒) 第二类斯特林数S(n,r)
  •  n个不同小球放到r个相同的盒子里(允许出现空盒) singma{k=1;k<=r;S(n,k)}
  •  n个相同的小球放到r个不同的盒子里 (允许出现空盒) 隔板法求x1+x2...+xr=n 非负整数解的个数 C(n+r-1,r-1)
  •  n个相同的小球放进r个不同的盒子里(不允许出现空盒)

     先选出r个放入每个盒子里保证空盒不存在 余下(n-r)个小球放r个不同的盒子里
     然后用上述讨论方法。 C((n-r)+r-1,r-1)=C(n-1,r-1)

  •  n个相同的小球放进r个相同的盒子里(不允许出现空盒)

    我们设答案是Pr(n)
    可以求出Pm(n)

int f(int m,int n)
{
if (m==0||n==1) return 1;
if (m<n) return f(m,m);
if (m>=n) return f(m,n-1)+f(m-n,n);
}

    或者
    令P1(n)=1 Pn(n)=1
    P2(n)=[n/2]
    Pr(n)=singma(k=1;k<=r;Pk(n-r))
    答案就是Pr(n)

     转化:n分解成若干个数和的情况总和数目 

  •  n个相同的小球放进r个相同的盒子里(允许出现空盒)求出 Pr(n+r)

     转化:你分解成m个(m-1)个(m-2)个....1个数的所有总数之和

  • NOIP2018 No regrets youth !
  • NOIP2018 No regrets youth !
  • NOIP2018 No regrets youth !
原文地址:https://www.cnblogs.com/ljc20020730/p/9762525.html