初赛
一只萌新
2019-10-10 15:52:27
[历年NOIP提高组初赛选择解析(至2006年)](https://blog.csdn.net/qq_42037034/article/details/82973488)
[自整理 初赛](https://www.luogu.org/paste/8b1f7oy0)
[2019CSP初赛基础知识整理](https://www.cnblogs.com/zhengchang/p/chusai.html)
[CSP-S 2019 初赛知识点整理](https://www.luogu.org/blog/Setsugesuka/csp-s-2019-chu-sai-zhi-shi-dian-zheng-li)
[初赛的考点笔记](https://www.luogu.org/blog/for1-666/chu-sai-di-kao-dian-bi-ji)
[史上最全NOIP初赛知识点](https://www.cnblogs.com/fusiwei/p/11559403.html)
[NOIP初赛知识点集锦](https://blog.csdn.net/qq_42369449/article/details/82928382)
[NOIP初赛知识点(大全)](https://wenku.baidu.com/view/3857d87ec77da26924c5b057.html)
[NOIP初赛知识点汇总](https://blog.csdn.net/holyromanempire/article/details/52870113)
* [初赛数学题错题总结](https://www.cnblogs.com/logic-yzf/p/7642963.html)
[当小球遇上盒子](https://www.luogu.org/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi)
[卡特兰数详讲](https://blog.csdn.net/wookaikaiko/article/details/81105031)
[卡特兰数 — 计数的映射方法的伟大胜利](http://lanqi.org/skills/10939/)
[2013noip初赛提高组试题解析 详细](http://www.docin.com/p-963170477.html)
[NOIP 提高组 初赛 四、阅读程序写结果 习题集(三)NOIP2004-NOIP2005](https://blog.csdn.net/zhuofeilong/article/details/75262325)
[进制转换](http://xinzhi.wenda.so.com/a/1537180588200142)
[前缀、中缀、后缀表达式转换详解](https://blog.csdn.net/walkerkalr/article/details/22798365)
[栈:前缀表达式转中缀表达式](https://blog.csdn.net/sunshare77/article/details/80668634)
---
+ 图像文件的字节数=图像分辨率*颜色深度/8
+ >断电之后仍能保存数据的有 硬盘,ROM
>断电之后不能保存数据的有 寄存器,显存,内存,高速缓存
+ NOIP 不推荐使用: Visual C++,Turbo C,Turbo Pascal
+ >H(Hexadecimal)——16进制
>D(Decimal)——10进制
>O(Octonary)——8进制
>B(Binary)——2进制
---
### 第一届竞赛时间
```cpp
全国青少年信息学奥林匹克竞赛(NOI) 1984
全国青少年信息学奥林匹克联赛(NOIP) 1995
国际信息学奥林匹克竞赛(IOI) 1989
亚太地区信息学奥林匹克竞赛(APIO)2007
```
---
### 人物
```cpp
冯·诺依曼(Neumann)
"计算机之父",ENIAC和EDVAC的技术顾问
存储程序原理:将程序像数据一样存储到计算机内部存储器中的一种设计原理
戈登·摩尔(Gordon Moore) 英特尔公司创始人之一,摩尔定律
查尔斯·巴比奇(Babbage) 发明了世界上第一台机械计算机器——差分机
克劳德·香农(Shannon) 信息论之父、发明了术语比特
姚期智 2000年图灵奖 华裔
阿达·洛芙莱斯(Ada Lovelace) “第一位给计算机写程序的人”
```
---
### 操作系统
```cpp
操作系统是一种系统软件,直接控制和管理计算机系统的所有软、硬件资源,以方便用户充分而有效地利用这些资源的程序集合
常用的计算机操作系统有:
1.Windows系列操作系统(咱们最常用的)
由微软公司生产;
2.Unix类操作系统
如SOLARIS,BSD系列(FREEBSD,openbsd,netbsd,pcbsd);
3.Linux类操作系统
如UBUNTU,suse linux,fedora,等
4.Mac操作系统
由苹果公司生产(Darwin),一般安装于MAC电脑。
其他: Symbian(塞班公司为手机而设计)
Linux下的文件不需要扩展名。一切皆文件
```
---
### 计算机相关
```cpp
主机:CPU和内储存器
U盘是闪存盘的一种
寄存器是CPU的有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址
CPU中 高速缓冲存储器 提高系统整体的执行效率
CPU=控制器+运算器+寄存器
CPU 的主要任务是执行数据运算和程序控制
控制器: 控制机器各个部件协调工作
存储器: 存储各种控制信息
ROM是只读存储器(Read-Only Memory),只能读出事先所存数据的固态半导体存储器,一旦储存资料就无法再将之改变或删除
随机存取存储器(英语:Random Access Memory,缩写:RAM) -> 内存、主存
BIOS
Basic Input Output System 基本输入输出系统
保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序
为计算机提供最底层的、最直接的硬件设置和控制
CPU、存储器、I/O设备是通过 总线 连接起来的。
```
---
### 网络相关
```cpp
为计算机网络中进行数据交换而建立的规则、标准或约定的集合称为网络协议。
HTTP、TCP/IP、FTP是网络协议。
TCP属于传输层协议 IP 属于网络层协议
TCP/IP:
数据链路层:ARP,RARP
网络层: IP,ICMP,IGMP
传输层:TCP ,UDP,UGP
应用层:Telnet,FTP,SMTP,SNMP.
属于电子邮件收发的协议 SMTP,IMAP,POP3
SMTP-发送 IMAP,POP3-接收
IP地址
先判断它是不是由4段数字用点号“.”分隔开,再判断每段数字的十进制是不是在0-255之间,满足条件就是正确的IP地址
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)
每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址
IP地址中不能以十进制“127”作为开头
IPv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用 128 位地址的 IPv6 协议所取代
```
---
### P类/NP类/NPC类问题
```cpp
1、P类问题:如果一个问题能找到一个在多项式时间内解决它的算法,那么这个问题就是P问题。
2、NP类问题:注意:NP问题不是非P类问题,而是在多项式时间内验证一个解的问题。或者,我们可以将其理解为在多项式时间内猜出一个解的问题。
3、NPC类问题:定义如下:如果一个问题是NP问题,而且所有的NP问题都可以约化到它。那么它就是NPC类问题。再来介绍一下关于约化的定义:如果一个问题A可以约化为问题B,含义就是这个问题A可以用问题B的解法来解决。
P是NP,NP不一定是P
```
---
### 语言
```cpp
C是一种面向过程的高级计算机语言
C++ JAVA C# Pascal 面向对象
汇编语言 直接对硬盘
面向过程程序设计通常采用自顶向下设计方法进行设计
Java、Python、Matlab 解释型语言,不需要编译
C、C++、Pascal 编译型语言 编译的时候直接编译成机器可以执行或调用的程序,如exe、dll或ocx等类型
第一个高级语言是fortran,Ada是美国军方发明的语言,取名Ada是为了纪念第一个女程序员
第一个支持面向对象的语言是simula67
```
---
### 排序相关
```cpp
稳定排序:两个相等的数不会交换位置
堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,
基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法
基数排序 基于桶排序
```
[希尔排序(缩小增量排序)](https://www.cnblogs.com/chengxiao/p/6104371.html)
---
## 数学题汇总
### 排列组合,卡特兰数
1. (2014tg 21)数字1,1,2,4,8,8所组成的不同的四位数的个数是_____.
2. (2015tg 22)结点数为 5 的不同形态的二叉树一共有___种.(结点数为 2 的二叉树一共有 2 种:一种是根结点和左儿子,另一种是根结点和右儿子。)
3. (2008tg 22)书架上有21本书,编号从1到21,从其中选4本,其中每两本的编号都不相邻的选法一共有______种.
4. (2009tg 21)拓扑排序是指将有向无环图G中的所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前,这样的线性序列成为拓扑序列。如下的有向无环图,对其顶点做拓扑排序,则所有可能的拓扑序列的个数为______
![2009tg 21](https://uploadfiles.nowcoder.com/images/20180930/309001_1538281523774_E9CFA5941CE866549ABBEB016C881FA5)
5. (2007tg 21)给定n 个有标号的球,标号依次为1,2,…,n。将这n 个球放入r 个相同的盒子里,不允许 有空盒,其不同放置方法的总数记为S(n,r)。例如,S(4,2)=7,这7 种不同的放置方法依次为 {(1),(234)}, {(2),(134)}, {(3),(124)}, {(4),(123)}, {(12),(34)}, {(13),(24)}, {(14),(23)}。当n=7,r=4 时,S(7,4)= _____________。
6. (2013pj 21)7 个同学围坐一圈,要选2 个不相邻的作为代表,有_________种不同的选法。
7. (2014pj 21)把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)。 例如,M=7,N=3时,K=8;在这里认为和是同一种放置方法。 问:M=8,N=5时,K=___ 。
8. (2010pj 22)队列快照是指在某一时刻队列中的元素组成的有序序列。例如,当元素1、2、3入队,元素1出队后,此刻的队列快照是"2 3"。当元素2、3也出队后,队列快照是"",即为空。现有3个正整数元素依次入队、出队。已知它们的和为8,则共有_________种可能的不同的队列快照(不同队列的相同快照只计一次)。例如,"5 1"、"4 2 2"、""都是可能的队列快照;而"7"不是可能的队列快照,因为剩下的2个正整数的和不可能是1。
9. (2004tg 2)由3个a,5个b和2个c构成的所有字符串中,包含子串“abc”的共有( )个。
> A. 40320 B. 39600 C. 840 D. 780 E. 60
10. (2017tg 8)由四个不同的点构成的简单无向连通图的个数是( )。
A. 32
B. 35
C. 38
D. 41
11. (2001tg 22)平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上。问用这些点为顶点,能组成____个不同四边形
12. (2018tg 17)方程 a*b = (a or b) * (a and b),在 a, b 都取 [0, 31] 中的整数时,共有_____组解。(*表示乘法;or 表示按位或运算;and 表示按位与运算)
13. (2012pj 22)在NOI期间,主办单位为了欢迎来自各国的选手,举行了盛大的晚宴。在第十八桌,有5名大陆选手和5名港澳选手共同进膳。为了增进交流,他们决定相隔就坐,即每个大陆选手左右旁都是港澳选手,每个港澳选手左右旁都是大陆选手。那么,这一桌一共有_______种不同的就坐方案。
注:如果在两个方案中,每个选手左右相邻的选手相同,则视为同一种方案。
```cpp
1.102 (分情况, A(4,4) + 2*C(3,2)*A(2,2)* (C(3,1)+C(3,2)) + (C(3,1)+C(3,2)) )
2.42 (卡特兰数经典题,n个结点的树的同构数目是卡特兰数的第n项)
3.3060 (反向考虑,17本插入4本不相邻)
4.432 ((c(8,1)+c(8,2))* c(6,1)*2 )
5.350 (https://www.zybang.com/question/67df89c725b679eedcfa84345b27d353.html 第二类斯特林数)
6.14 ( C(7,2)-7 )
7.18 (自然数拆分问题 枚举/递推 https://www.luogu.org/blog/chengni5673/dang-xiao-qiu-yu-shang-he-zi /五边形数)
8.49 (先枚举和为8的三个数,再分情况 1(空集)+6(取一个)+(3+3)*3+(A(3,2)+A(3,3))*2 )
9.D
1. 捆绑"abc",把1个"abc",2个"a",4个"b",1个"c"排列,"不尽相异元素排列",总方案数8!/(2!*4!)=840
2. 2个"a",4个"b",1个"c"也可以组成"abc",840里有重复情况,比如(abc)abcabbb,abc(abc)abbb
3.2个"abc",1个"a",3个"b",方案数6!/(2!*3!)=60
4.故答案为840-60=780 (两个元素的容斥原理)
10.C (最少3条,最多6条, C(6,3)+C(6,4)+C(6,5)+C(6,6) - 4(三条边时有4种情况不能构成连通图) )
11.2250 ( C(7,2)*C(6,2)+C(7,2)*C(5,2)+C(5,2)*C*(6,2)+C(7,2)*C(6,1)*C(5,1)+C(7,1)*C(6,2)*C(5,1)+C(7,1)*C(6,1)*C(5,2) )
12.454 ( 较小值的二进制一定是较大值的二进制的子集,有序数对,减去重复 2∑i=0~5 C(5,i)*2^(5-i) - 32 = 454 )
13.2880 ( 5!*5!/5 大陆选手和港澳选手的就坐方案,相乘后,再除以5,重复的方案)
```
---
### 时间复杂度计算(数列)
[时空复杂度计算](https://www.luogu.org/blog/Chanis/master)
[主定理](https://blog.csdn.net/lanchunhui/article/details/52451362)
1. (2013tg 4)斐波那契数列的定义如下:$F1 = 1, F2 = 1,Fn=Fn-1+Fn-2 (n ≥ 3)$如果用下面的函数计 算斐波那契数列的第 n 项,则其时间复杂度为 ()
A. O(1)
B. O(n)
C. O(n2)
D. O(Fn)
```cpp
int F(int n)
{
if (n <= 2)
return 1;
else
return F(n - 1) + F(n - 2);
}
```
2. (2013tg 15)T(n)表示某个算法输入规模为 n 时的运算次数。如果 T(1)为常数,且有递归式 T(n) = 2*T(n / 2) + 2n,那么 T(n) = ( )
A. Θ(n)
B. Θ(n log n)
C. Θ(n2)
D. Θ(n2 log n)
3. (2013tg 22)现有一只青蛙,初始时在 n 号荷叶上。当它某一时刻在 k 号荷叶上时,下一时刻将等概 率地随机跳到 1, 2, …, k 号荷叶之一上,直至跳到 1 号荷叶为止。当 n = 2 时,平均一共 跳 2 次;当 n = 3 时,平均一共跳 2.5 次。则当 n = 5 时,平均一共跳________ 次。
4. (2017tg 6)若某算法的计算时间表示为递推关系式:
$T(N) = 2T(N / 2) + N log N$
$T(1) = 1$
则该算法的时间复杂度为( )。
A. $O(N)$
B. $O(NlogN)$
C. $O(Nlog^2N)$
D. $O(N^2)$
5. (2017tg 10)若 $f[0] = 0, f[1] = 1, f[n + 1] = (f[n] + f[n - 1]) / 2$,
则随着 i 的增大,$f[i]$将接近于( )。
A. $1/2$
B. $2/3$
C. (√5 − 1)/2
D. $1$
```cpp
1.D (https://www.luogu.org/blog/Chanis/master)
2.B (类似二分)
3. 37/12 ( 递推 https://www.cnblogs.com/zhukaiyuan/p/11610329.html)
4.C
5.B (https://blog.csdn.net/Eirlys_North/article/details/80664747)
```
---
### 平均次数(期望)
1. (2014tg 7)对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为( ).
A. n/2
B. (n+1)/2
C. (n-1)/2
D. n/4
2. (2008tg 10)对有序数组{5, 13, 19, 21, 37, 56, 64, 75, 88, 92, 100}进行二分查找,等概率的情况下查找成功的平均查找长度(平均比较次数)是( )。
A. 35/11
B. 34/11
C. 33/11
D. 32/11
E. 34/10
```cpp
1.B ( n*(n+1)/2 * (1/n) )
2.C ( 所有数的二分查找的比较次数之和/个数 )
```
---
### 其它
1. (2009tg 22)某个国家的钱币面值有1, 7, 7^2, 7^3共计四种,如果要用现金付清10015元的货物,假设买卖双方各种钱币的数量无限且允许找零,那么交易过程中至少需要流通_______张钱币。
2. (2014tg 12)同时查找2n 个数中的最大值和最小值,最少比较次数为( ).
A. 3(n-2)/2
B. 4n-2
C. 3n-2
D. 2n-2
3. (2017tg 4) 2017年10月1日是星期日,1949年10月1日是( )。
A. 星期三
B. 星期日
C. 星期六
D. 星期二
4. (2015tg 14)对图 G 中各个结点分别指定一种颜色,使相邻结点颜色不同,则称为图 G 的一个正常 着色。正常着色图 G 所必需的最少颜色数,称为 G 的色数。那么下图的色数是( )。
A. 3
B. 4
C. 5
D. 6
![2015tg 14](http://luogu-ipic.oss-cn-shanghai.aliyuncs.com/youti/41.png)
5. (2007tg 22)N 个人在操场里围成一圈,将这 N 个人按顺时针方向从1 到N 编号,然后,从第一个人起,每隔一个人让下一个人离开操场,显然,第一轮过后,具有偶数编号的人都离开了操场。依次做下去,直 到操场只剩下一个人,记这个人的编号为J(N) ,例如,J(5)=3 ,J(10)=5 ,等等。则 J(400)=______________。 (提示:对N=2^m+r进行分析,其中0≤r<2^m)
6. (2010tg 23)记T为一队列,初始时为空,现有n个总和不超过32的正整数依次入列。如果无论这些数具体为何值,都能找到一种出队的方式,使得存在某个时刻队列T中的数之和恰好为9,那么n的最小值是___________。
7. (2010tg 22)无向图G有7个顶点,若不存在由奇数条边构成的简单回路,则它至多有____条边。
8. (2011tg 21)平面图可以在画在平面上,且它的边仅在顶点上才能相交的简单无向图。4个顶点的平面图至多有6条边,如下图所示。那么,5个顶点的平面图至多有_____条边。
![2011tg 21](https://img-blog.csdn.net/20161221103711234)
9. (2011tg 22)定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串“BCA”可以将A移到B之前,变字符串“ABC”。如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要________次操作。
10. (2012tg 21)本题中,我们约定布尔表达式只能包含 p, q, r 三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。如果无论 p, q, r 如何取值,两个布尔表达式的值总是相同,则称它们等价。例如,(p∨q)∨r 和 p∨(q∨r)等价,p∨¬p 和 q∨¬q 也等价;而 p∨q 和 p∧q 不等价。那么,两两不等价的布尔表达式最多有_________个。
11. (2012tg 22)对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那么,图 3 有_________个不同的独立集。
![2012tg 22](http://luogu-ipic.oss-cn-shanghai.aliyuncs.com/youti/30.png)
12. (2011pj 22)定义字符串的基本操作为:删除一个字符\插入一个字符和将一个字符修改成另外一个字符这三种操作。将字符串A变成字符串B的最少操作步数,称为字符串A到字符串B的编辑距离。字符串“ABCDEFG”到字符串“BADECG”的编辑距离为_____。
13. (2015pj 21)重新排列 1234 使得每一个数字都不在原来的位置上,一共有__种排法。
14. (2015pj 22)一棵结点数为 2015 的二叉树最多有___个叶子结点。
15. (2006tg 21)将2006个人分成若干不相交的子集,每个子集至少有3个人,并且:
> (1)在每个子集中,没有人认识该子集的所有人。
> (2)同一子集的任何3个人中,至少有2个人互不认识。
> (3)对同一子集中任何2个不相识的人,在该子集中恰好只有1个人认识这两个人。
> 则满足上述条件的子集最多能有___________个?
16. (2016tg 8)G 是一个非连通简单无向图,共有 28 条边,则该图至少有( )个顶点。
A. 10
B. 9
C. 8
D. 7
```cpp
1.35 (被幂次的显示坑的肯定不止我一个! 答案:贪心 https://zhidao.baidu.com/question/188403632.html )
2.C ( https://zhidao.baidu.com/question/426499895347085212.html )
3.C ( https://blog.csdn.net/Eirlys_North/article/details/80664747 )
4.A (最小环为3,必须要3个颜色)
5.289 (找规律,J(2^m)=1,J(2^m+1)=3,接下来是5,7,9,...)
6.18 (抽屉原理 https://www.zybang.com/question/882aaa8d96794135677dd8c6208297d0.html)
7.12(二分图做法http://www.docin.com/p-501877626.html 自行构造做法http://blog.sina.com.cn/s/blog_62d8450c0100x138.html)
8.9 (平面图 https://wenku.baidu.com/view/8f79d21ce55c3b3567ec102de2bd960590c6d93d.html)
9.4 (最长的正序串为ACEGI,还剩下4个字符)
10.256 (主要是看懂题意,不等价->p,q,r取值不同,或取值相同时结果不同 p,q,r可以取0,1中的任意一个数,总共有2^3=8种情况,每种情况对应一个不同的值,0或1,保证值不等,两两都不等价,至少有2^8种取法)
11.5536 (树形dp https://www.cnblogs.com/logic-yzf/p/7642963.html)
12.3 ( 删除A,将C替换成A,将F替换成C)
13.9 (枚举)
14.1008 (二叉树:叶子节点 = 度为2的节点数+1)
15.401 (图论转化,枚举,发现五边形满足条件 2006/5=401 https://www.zybang.com/question/7d364e02b9acabe93190e3f1ceb44a2d.html)
16.B (非连通图 C(8,2)=28 答案为8+1=9)
```
---
### 读程序写结果中的数学题
1. (2017tg 26)
```cpp
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
int x = 1;
int y = 1;
int dx = 1;
int dy = 1;
int cnt = 0;
while (cnt != 2)
{
cnt = 0;
x = x + dx;
y = y + dy;
if (x == 1 || x == n)
{
++cnt;
dx = -dx;
}
if (y == 1 || y == m)
{
++cnt;
dy = -dy;
}
}
cout << x << " " << y << endl;
return 0;
}
```
输入 1:4 3
输出 1:_________(2 分)
输入 2:2017 1014
输出 2:_________(3 分)
输入 3:987 321
输出 3:_________(3 分)
2. (2012tg 25)
```cpp
#include <iostream>
using namespace std;
const int SIZE = 20;
int data[SIZE];
int n, i, h, ans;
void merge()
{
data[h-1] = data[h-1] + data[h];
h--;
ans++;
}
int main()
{
cin>>n;
h = 1;
data[h] = 1;
ans = 0;
for (i = 2; i <= n; i++)
{
h++;
data[h] = 1;
while (h > 1 && data[h] == data[h-1])
merge();
}
cout<<ans<<endl;
}
```
(1)
输入:8
输出:_________
(2)
输入:2012
输出:_________
```cpp
1.
输出1: 1 3
输出2: 2017 1
输出3: 1 321
https://www.cnblogs.com/nnszoi/p/7685998.html
求出输入的两个数(两个数都-1)的最小公倍数
然后用最小公倍数分别除以两个输入的数
如果结果是单数,则输出的是输入的这个数本身
如果结果是偶数,则输出的是1
2.(1)7
(2)2004
数n中二进制下1的个数,答案为n-1的个数
```