历年NOIP提升组初赛选择解析

碎片知识点

  • 编译型语言是编译一次就能够转成计算机能够直接运行的机器语言程序(如.exe文件)可是因为他们是直接编译的,依赖于计算机的不一样,因此跨平台能力比较差,可是运行速度高。c++

  • 解释性语言则是每次运行前编译,先解释再运行,致使运行效率下降,可是由于其依托于虚拟机/解释器因此跨平台性能好。程序员

  • 高级语言还可分为面向过程语言和面向对象语言。(区别天然是有没有对象)编程

  • 于 1967 年出现的 Simula67 是历史上第一个面向对象语言数组

  • Smalltalk 被公认为第二个面向对象的程序设计语言,和第一个IDE缓存

  • C 和 Pascal 是纯面向过程语言性能

  • 就算没有对象也能够学面向对象的程序设计语言 C++编码

  • 第一个高级语言是fortran,Ada是美国军方发明的语言,取名Ada是为了记念第一个女程序员spa

  • 第一个支持面向对象的语言是simula67设计

一、 (NOIP-2004–T19-多选)下列哪一个(些)程序设计语言支持面向对象程序设计方法( ABDE )。
A. C++     B. Object Pascal     C. C     D. Smalltalk     E. Java

C++,object Pascal,VB,smalltalk(第一个支持动态类型的语言),simula67(第一个面向对象的语言),Java是面向对象的
free Pascal,C是面向过程的

题型一:数学

1.1 组合数学

模型:code

  • Catalan数
  • stirling数
  • 容斥原理和错排
  • 不定方程的整数解(可重排列)
    • 正整数解
    • 非负整数解
  • 插空法
  • 捆绑法

一、(NOIP2004–T2-单选)由3个a,5个b和2个c构成的全部字符串中,包含子串“abc”的共有(D )个。 A. 40320     B. 39600     C. 840     D. 780     E. 60

有必定难度的组合数学题,因为要出现“abc”,用捆绑法,把 1 个 a,1 个 b,1 个 c 捆绑起来,这样至关于如今有 1 个“abc”,2 个“a”,4 个“b”,1 个“c”进行排列,根据“不尽相异元素的全排列”的公式(重排)知道,总的状况是8!/(2!*4!)=840,可是 2 个“a”,4 个“b”,1 个“c”也有可能组成“abc”,840里有重复的状况,好比(abc)abcabbb 和 abc(abc)abbb 实际上是一种状况,因此要减去 2 个“a”,4 个“b”,1 个“c”也组成 abc 的状况(其实就是只有两个元素的容斥原理),那么这就至关于 2 个“abc”,一个“a”,3 个“b”的全排列数=6!/(2!*3!)=60,因此总的状况数是 840-60=780。

1.2 拓扑排序

一、(NOIP-2004–T20-多选)某大学计算机专业的必修课及其先修课程以下表所示:

2树

2.1二叉树的节点个数计算

一、(NOIP-2004–T4-单选)满二叉树的叶结点个数为N,则它的结点总数为()。 2∗N–1

基本知识:

  • 满二叉树的节点个数=2*子节点个数-1
  • 满二叉树的节点个数=2^树的深度-1
  • 满二叉树的叶结点个数=2^(树的深度-1)

二、(NOIP-2005–T4-单选)彻底二叉树的结点个数为4∗N+3,则它的叶结点个数为(E )。 E. 2∗N+2

三、(NOIP-2006–T8-单选)高度为n的均衡的二叉树是指:若是去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,若是某个均衡的二叉树共有2381个结点,则该树的树高为( B )。B. 11

2.2排序

一、(NOIP-2006–T10-单选)将5个数的序列排序,不论原先的顺序如何,最少均可以经过( B )次比较,完成从小到大的排序。 A. 6     B. 7     C. 8     D. 9     E. 10

这个题目实在是玄的一批,5个元素有5!=120个全排列,每一次比较可以减小一半的排列,那么就只须要⌊log2(120)⌋+1=7次就行了

2.3复杂度计算

二、(NOIP-2006–T4-单选)在编程时(使用任一种高级语言,不必定是Pascal),若是须要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( E )。 A. 没有区别     B. 有一些区别,但机器处理速度很快,可忽略不计 C. 按行读的方式要高一些     D. 按列读的方式要高一些     E. 取决于数组的存储方式。

这个仍是真的要看怎么存的,Pascal在开数组的时候不知道怎么开,可是c++就是一行开下去地址连续的,因此c++在读取的时候仍是行优先读要稍微快一点。因此仍是取决于地址怎么分配了。

3.1硬件基础

四、(NOIP-2004–T17-多选)下列说法中正确的有( ADE )。 A. CPU 的基本功能就是执行指令。 B. CPU 的主频是指 CPU 在 1 秒内完成的指令周期数,主频越快的 CPU 速度必定越快。 C. 内部构造不一样的 CPU 运行相同的机器语言程序,必定会产生不一样的结果。 D. 在一台计算机内部,一个内存地址编码对应惟一的一个内存单元。 E. 数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之一。

B的话主频的定义对的,可是CPU速度还跟其余东西有关;C大部分状况下都是对的但不排除特殊的状况…

七、(NOIP-2005–T7-单选)Intel 的首颗 64 位处理器是( E )。 A. 8088      B. 8086      C. 80386      D. 80486      E. Pentium

这个也是古董了…但因为比较特殊仍是记一笔吧…8086是首颗16位的,80386是第一颗32位

十、(NOIP-2005–T18-多选)如下断电以后将不能保存数据的有( BCDE )。 A. 硬盘     B. 寄存器     C. 显存     D. 内存     E. 高速缓存

  • 寄存器、高速缓存、RAM,读取速度很快可是断电后数据会丢失,显存是内存的一种,主要是在显卡和GPU当中处理图像的orz
相关文章
相关标签/搜索