标题：noip
什么是NOIP
NOIP是指全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces简称NOIP)。每年由中  国计算机学会统一组织。NOIP是在同一时间、不同地点以各省市为单位由特派员组织。每年的9月1—10日报名，初赛定于每年10月的第二个星期六下午，复赛定于每年11月的最后第二个星期六举行。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛两个阶段。初赛以通用和实用的计算机知识为考试内容，重在考察基础与实用的知识，以笔试为主。复赛为程序设计。参加初赛者须达到一定分数线后才有资格参加复赛。各省市、自治区都应参加联赛，参加联赛是参加NOI的必要条件。 
高考加分和保送
NOIP的每个省的一等奖具有参加保送或高考加分20分的资格。
（注：有些省份的NOIP一等奖有进入省队的资格，而省队的学生可以参加NOI。NOI有更高的保送资格。）
联赛命题宗旨
全国青少年信息学奥林匹克联赛（NOIP）是一项面向全国青少年的信息学竞赛和普及活动，旨在向那些在中学阶段学习的青少年普及计算机科学知识；给学校的信息技术教育课程提供动力和新的思路；给那些有才华的学生提供相互交流和学习的机会；通过竞赛和相关的活动培养和选拔优秀的计算机人才。
竞赛的目的是为了在更高层次上推动普及。本竞赛及其相关活动遵循开放性原则，任何有条件和有兴趣的学校和个人，都可以在业余时间自愿参加。本活动不和现行的学校教学相冲突，也不列入教学计划，是课外性质的因材施教活动。参加者可为初高中学生或其他中等专业学校的青少年。
普及的内容

．计算机的基本组成；
．计算机操作系统使用（windows等）；
．计算机工作的基本原理；
．计算机程序设计的基本方法；
．至少一门高级程序设计语言；
．程序设计中常用的数据结构。
普及的重点是根据中学生的特点，培养学生学习计算机的兴趣，使得他们对信息技术的一些本质和核心的东西有更多的了解，提高他们创造性地运用程序设计知识解决实际问题的能力。
对学生的能力培养注重
．想象力与创造力；
．对问题的理解和分析能力；
．数学能力和逻辑思维能力；
．对客观问题和主观思维的口头和书面表达能力；
．人文精神。包括与人的沟通和理解能力，团队精神与合作能力，恒心和毅力，审美能力等。 
竞赛形式和成绩评定

联赛分两个年龄组：初中组和高中组。每组竞赛分两轮：初试和复试。
．初试形式为笔试，侧重考察学生的计算机基础知识和编程的基本能力，并对知识面的广度进行测试。程序设计的描述语言采用Basic（2005年被取消）、C/C++或Pascal。各省市初试成绩在本赛区前百分之十五的学生进入复赛，其分数不计入复赛的成绩。初赛时间为10月的最后第二个星期六下午 2:30 - 16:30举行。
．复试形式为上机，侧重考察学生对问题的分析理解能力，数学抽象能力，驾驭编程语言的能力和编程技巧、想象力和创造性等。程序设计语言可采用Basic（2005年后被取消）、Pascal、C或C++。各省市竞赛的等第奖在复试的优胜者中产生。时间为 3小时。只进行一试，约在当年的11 月的第三个周六进行。
试题形式
每次联赛的试题分四组：初中组初试赛题；初中组复试赛题；高中组初试赛题；高中组复试赛题。其中，初中组初试赛题和高中组初试赛题类型相同，初中组复试赛题和高中组复试赛题类型相同，但初中组和高中组的题目不完全相同，高中组难度略高；以体现年龄特点和层次要求。
* 初试：初试全部为笔试，满分100分。试题由四部分组成：
1、选择题：共20题，每题1．5分，共30分。每题有4个备选方案。试题内容包括计算机基本组成与原理、计算机基本操作、信息科技与人类社会发展的关系等等。
2、问题求解题：共2题，每题5分，共10分。试题给出一个叙述较为简单的问题，要求学生对问题进行分析，找到一个合适的算法，并推算出问题的解。答案以字符串方式给出，考生给出的答案与标准答案的字符串相同，则得分；否则不得分。
3、程序阅读理解题：共4题，每题8分，共32分。题目给出一段程序（没有关于程序功能的说明），有时也会给出程序的输入，要求考生通过阅读理解该段程序给出程序的输出。输出以字符串的形式给出，如果与标准答案一致，则得分；否则不得分。
4、程序完善题：共 2题，第一题10分，共4空，每空2.5分；第二题18分，共6空，每空3分。两题共28分。题目给出一段关于程序功能的文字说明，然后给出一段程序代码，在代码中略去了若干个语句并在这些位置给出空格，要求考生根据程序的功能说明和代码的上下文，填出被略去的语句。填对的，则得分；否则不得分。
（2009年普及组试题为第一题5空，每空3分，第二题前三空每空3分，后两空每空2分）
*复试：复试的题型和形式向全国信息学奥赛（NOI）靠拢，全部为上机编程题，但难度略低。复试为决出竞赛成绩的最后一个环节。题目包括 4道题，每题100分，共计400分。难度有易有难，既考虑普及面，又考虑选拔的梯度要求。每一道试题包括：题目、问题描述、样例说明（输入、输出及必要的说明）、数据范围（数据限制条件）。测试时，测试程序为每道题提供了十组测试数据，考生程序每答对一组得10 分；累计分即为该道题的得分。 
试题的知识范围

考试内容主要包括：计算机发展史、计算机组成、计算机基本原理、计算机程序设计、计算机日常应用等。要求考生掌握至少一门高级程序设计语言（详见竞赛大纲）。为了保持竞赛内容的相对连续性，试题涵盖的知识点和题型至少60％应出现在普及类的参考书目中，其余内容可能超出该范围。
为了考核学生的基础知识、综合应用能力，激发学生的求知欲和创新思维，体现“与时俱进”的特点，竞赛题型在保持大纲相对稳定、优秀学生可能接受和理解的基础上，按照下述趋势适当变化
1、增大与课内知识结合的紧密度；
2、增大解题方法的多样性和灵活程度；
3、增大开放性试题的比例。
试题的知识范围具体如下：
一．初赛内容与要求：
A．计算机的基本常识：
1．计算机和信息社会（信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化）
2．信息输入输出基本原理（信息交换环境、文字图形多媒体信息的输入输出方式）
3．信息的表示与处理（信息编码、微处理部件MPU、内存储结构、指令，程序，和存储程序原理、程序的三种基本控制结构）
4．信息的存储、组织与管理（存储介质、存储器结构、文件管理、数据库管理）
5．信息系统组成及互连网的基本知识（计算机构成原理、槽和端口的部件间可扩展互连方式、层次式的互连结构、互联网络、TCP/IP协议、HTTP协议、WEB应用的主要方式和特点）
6．人机交互界面的基本概念（窗口系统、人和计算机交流信息的途径（文本及交互操作））
7．信息技术的新发展、新特点、新应用等。
B．计算机的基本操作：
1. Windows和LINUX的基本操作知识
2. 互联网的基本使用常识 （网上浏览、搜索和查询等）
3. 常用的工具软件使用（文字编辑、电子邮件收发等）
C．数据结构：
1．程序语言中基本数据类型(字符、整数、长整数、浮点)
2. 浮点运算中的精度和数值比较
3．一维数组（串）与线性表
4．记录类型（PASCAL）/ 结构类型（C）
D．程序设计：
1．结构化程序设计的基本概念 
2．阅读理解程序的基本能力
3．具有将简单问题抽象成适合计算机解决的模型的基本能力
4．具有针对模型设计简单算法的基本能力
5．程序流程描述（自然语言/伪码/NS图/其他）
6．程序设计语言（PASCAL/C/C++，2003仍允许BASIC）
E．基本算法处理：
1．初等算法（计数、统计、数学运算等）
2．排序算法（冒泡法、插入排序、合并排序、快速排序）
3．查找（顺序查找、二分法）
4．回溯算法
二、复赛内容与要求：
在初赛的内容上增加以下内容：
A．数据结构：
1．指针类型
2．多维数组
3．单链表及循环链表
4．二叉树
5．文件操作（从文本文件中读入数据，并输出到文本文件中）
B．程序设计
1．算法的实现能力
2．程序调试基本能力
3．设计测试数据的基本能力
4．程序的时间复杂度和空间复杂度的估计
C．算法处理
1．离散数学知识的应用（如排列组合、简单图论、数理逻辑）
2．分治思想
3．模拟法
4．贪心法
5．简单搜索算法（深度优先 广度优先）搜索中的剪枝
6．动态规划的思想及基本算法
评测环境
NOIP2005比赛环境规范依照兼顾Windows、Linux平台、统一编译器、提供多种集成开发环境选择的原则制定。 
NOIP2005的比赛环境中，操作系统平台可依各地的实际情况选择Windows或者Linux；在固定的操作系统平台下，对应不同的语言，使用统一的编译器，消除编译器不同给选手带来的不利影响；对应每种语言，提供了多种集成开发环境，选手可以根据自己的习惯选择集成开发环境。 
在全国评测时，评测环境保持与比赛环境的操作系统及编译器一致。也就是说全国评测时，使用与选手比赛时一致的平台对选手的程序进行评测，以消除平台不一致带来的不利影响。 
以下是NOIP2005比赛环境要求的详细描述： 
1、使用Windows操作系统平台： 
（1）Windows操作系统必须使用Windows 2000、Windows XP及更新的Windows版本； 
（2）Pascal语言，必须使用Free Pascal 1.0.10及以上版本作为编译器； 
（3）C语言，必须使用gcc 3.4.2作为编译器； 
（4）C++语言，必须使用g++ 3.4.2作为编译器； 
（5）Pascal语言，可以使用Freepascal IDE Windows版、Lazarus Windows版、Dev-Pascal作为集成开发环境，推荐使用Lazarus Windows版;
（6）C和C++语言，可以使用Dev-C++、RHIDE Windows版作为集成开发环境，推荐使用Dev-C++； 
2、使用Linux操作系统平台： 
（1）Linux操作系统必须使用NOI linux,基于ubuntu开发； 
（2）Pascal语言，必须使用Free Pascal 1.0.10及以上版本作为编译器； 
（3）C语言，必须使用gcc 3.2.2作为编译器； 
（4）C++语言，必须使用g++ 3.2.2作为编译器； 
（5）Pascal语言，可以使用Lazarus Linux版、RHIDE Linux版作为集成开发环境，推荐使用Lazarus Linux版； 
（6）C和C++语言，可以使用RHIDE Linux版、KDevelop、Anjuta作为集成开发环境，推荐使用Anjuta。