2019年全国青少年信息学(计算机)奥林匹克分区联赛普及组复赛试题

合集下载

最新全国青少年信息学奥林匹克竞赛联赛试题大纲

最新全国青少年信息学奥林匹克竞赛联赛试题大纲

全国青少年信息学奥林匹克竞赛联赛试题大纲一、试题形式每次联赛的试题分四组:普及组初赛题A1、普及组复赛题A2、提高组初赛题B1和提高组复赛题B2。

其中,A1和B1类型相同,A2和B2类型相同,但题目不完全相同,提高组难度高于普及组。

(一般初中学生参加普及组,高中或中专学生参加提高组)初赛:初赛全部为笔试,满分100分。

试题由四部分组成:1、选择题:共20题,每题1.5分,共计30分。

每题有5个备选答案,前10个题为单选题(即每题有且只有一个正确答案,选对得分),后10题为不定项选择题(即每题有1至5个正确答案,只有全部选对才得分)。

2、问题求解题:共2题,每题5分,共计10分。

试题给出一个叙述较为简单的问题,要求学生对问题进行分析,找到一个合适的算法,并推算出问题的解。

考生给出的答案与标准答案相同,则得分;否则不得分。

3、程序阅读理解题:共4题,每题8分,共计32分。

题目给出一段程序(不一定有关于程序功能的说明),考生通过阅读理解该段程序给出程序的输出。

输出与标准答案一致,则得分;否则不得分。

4、程序完善题:共2题,每题14分,共计28分。

题目给出一段关于程序功能的文字说明,然后给出一段程序代码,在代码中略去了若干个语句或语句的一部分并在这些位置给出空格,要求考生根据程序的功能说明和代码的上下文,填出被略去的语句。

填对则得分;否则不得分。

复赛:复赛的题型和考试形式与NOI类似,全部为上机编程题,但难度比NOI 低。

题目包括4道题,每题100分,共计400分。

每一试题包括:题目、问题描述、输入输出要求、样例描述及相关说明。

测试时,测试程序为每道题提供了5-10组测试数据,考生程序每答对一组得10-20分,累计分即为该道题的得分。

二、试题的知识范围1.初赛内容与要求:基本常识1.计算机和信息社会(信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化);2.信息输入输出基本原理(信息交换环境、文字图形多媒体信息的输入输出方式);3.信息的表示与处理(信息编码、微处理部件MPU、内存储结构、指令,程序,和存储程序原理、程序的三种基本控制结构);4.信息的存储、组织与管理(存储介质、存储器结构、文件管理、数据库管理);5.信息系统组成及互连网的基本知识(计算机构成原理、槽和端口的部件间可扩展互连方式、层次式的互连结构、互联网络、TCP/IP 协议、HTTP协议、WEB应用的主要方式和特点);6.人机交互界面的基本概念(窗口系统、人和计算机交流信息的途径(文本及交互操作));7.信息技术的新发展、新特点、新应用等。

(noip2019)二十三届全国青少年信息学奥赛初赛试题及答案c++.doc

(noip2019)二十三届全国青少年信息学奥赛初赛试题及答案c++.doc

言简意赅,远见卓识,望君采纳,谢谢!删除水印可,编辑页眉,选中水印,点击删除。

第二十三届全国青少年信息学奥林匹克联赛初赛普及组 C++ 语言试题竞赛时间: 2019 年 10 月 14 日 14:30~16:30选手注意:●试题纸共有 7 页,答题纸共有 2 页,满分 100 分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20 题,每题 1.5 分,共计30 分;每题有且仅有一个正确选项)1.在 8 位二进制补码中, 10101011 表示的数是十进制下的()。

A. 43B. -85C. -43D. -842. 计算机存储数据的基本单位是( A. bit B. Byte C. GB)。

D. KB3.下列协议中与电子邮件无关的是()。

A. POP3B. SMTPC. WTOD. IMAP4. 分辨率为A. 937.5KB 800x600 、16 位色的位图,存储图像信息所需的空间为(B. 4218.75KBC. 4320KBD. 2880KB)。

5.计算机应用的最早领域是()。

A. 数值计算B. 人工智能C. 机器人D. 过程控制6.下列不属于面向对象程序设计语言的是( A. C B. C++ C. Java D. C#)。

7.NOI 的中文意思是()。

A. 中国信息学联赛B. 全国青少年信息学奥林匹克竞赛C. 中国青少年信息学奥林匹克竞赛D. 中国计算机协会8.2017 年 10 月 1 日是星期日, 1999 年 10 月 1 日是()。

A. 星期三B. 星期日C. 星期五D. 星期二9.甲、乙、丙三位同学选修课程,从 4 门课程中,甲选修 2 门,乙、丙各选修3 门,则不同的选修方案共有()种。

A. 36B. 48C. 96D. 19210. 设 G 是有 n 个结点、 m 条边( n ≤m)的连通图,必须删去 G 的()条边,才能使得 G 变成一棵树。

少儿编程NOIP2019年普及组复赛试题

少儿编程NOIP2019年普及组复赛试题

2019 年CCF 非专业级软件能力认证第二轮入门级2019 CCF CSP-J2时间:2019 年11 月16 日14:30 - 18:00二.提交源程序文件名注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。

2.C/C++ 中函数main() 的返回值类型必须是int,程序正常结束时的返回值必须是0。

3.提交的程序代码文件的放置位置请参照各省的具体要求。

4.因违反以上三点而出现的错误或问题,申诉时一律不予受理。

5.程序可使用的栈内存空间限制与题目的内存限制一致。

6.全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存32GB。

上述时限以此配置为准。

7.只提供Linux 格式附加样例文件。

8.评测在当前最新公布的NOI Linux 下进行,各语言的编译器版本以其为准。

9.最终评测时所用的编译命令中不含任何优化开关。

数字游戏(number.cpp/c/pas)【问题描述】小K 同学向小P 同学发送了一个长度为8 的01 字符串来玩数字游戏,小P 同学想要知道字符串中究竟有多少个1。

注意:01 字符串为每一个字符是0 或者1 的字符串,如“101”(不含双引号)为一个长度为3 的01 字符串。

【输入格式】输入文件名为number.in。

输入文件只有一行,一个长度为8 的01 字符串s。

【输出格式】输出文件名为number.out。

输出文件只有一行,包含一个整数,即01 字符串中字符 1 的个数。

见选手目录下的number/number1.in 和number/number1.ans。

【输入输出样例1 说明】该01 字符串中有 2 个字符1。

见选手目录下的number/number2.in 和number/number2.ans。

【输入输出样例2 说明】该01 字符串中有8 个字符1。

【输入输出样例3】见选手目录下的number/number3.in 和number/number3.ans。

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题〔普及组三小时完成〕【一】不高兴的津津【问题描述】津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

【输入文件】输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

【输出文件】输出文件unhappy.out包括一行,这一行只包含一个数字。

如果不会不高兴那么输出0,如果会那么输出最不高兴的是周几〔用1,2,3,4,5,6,7分别表示周一,周二,周三,周四,周五,周六,周日〕。

如果有两天或两天以上不高兴的程度相当,那么输出时间最靠前的一天。

【样例输入】53627253540406【样例输出】3【二】花生采摘(peanuts.pas/dpr/c/cpp)【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。

这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。

鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。

在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格〔如图1〕。

有经验的多多一眼就能看出,每棵花生植株下的花生有多少。

为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。

”我们假定多多在每个单位时间内,可以做以下四件事情中的一件:1)从路边跳到最靠近路边〔即第一行〕的某棵花生植株;2)从一棵植株跳到前后左右与之相邻的另一棵植株;3)采摘一棵植株下的花生;4)从最靠近路边〔即第一行〕的某棵花生植株跳回路边。

noip信息学联赛2019模拟试卷(四)解析

noip信息学联赛2019模拟试卷(四)解析

第二十五届全国青少年信息学奥林匹克联赛初赛(普及组 C++语言试题)竞赛时间:2019年10月13日14:30~16:30选手注意:●试题纸共有7页,答题纸共有2页,满分100分。

请在答题纸上作答,写在试题纸上一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料一.单项选择题(共20题,每题1.5分,共计30分。

每题有且仅有一个正确答案.)1.(2019)12+(9102)16=:14.dos、unix和windows的共同点是:A:都是硬件B:都是联网系统软件C:都是应用软件D:都已经过时15.html是一种高级语言,以下操作可以查看html代码的是:A:打开浏览器按F11 B:运行html.exeC:无法查看D:打开浏览器按F1216.以下关于计算机病毒的说法正确的是:A:防火墙可以防止感染B:通过生物传播C:一旦感染无法破解D:计算机一次感染终身免疫17.c++语言“实数下取整”操作是:A:(int)x B:float(x) C:floor(x) D:ceil(x)18.一棵n层二叉树的最多节点数减去最少节点数等于:A:2*n B:2n-n C:n2-n D:n*log2(n)-n19.现给出以下程序:#include<bits/stdc++.h>using namespace std;int i,x;int a[11]={0,10,2,3,5,14,8,20,1,7,-1};int main(){cin>>x;sort(a+1,a+11);for (i=1;i<=10;i++)if (a[i]>=x) break;cout<<i<<endl;}问若将此程序的输入输出看做函数,则此函数的图像不经过点:A:(0,2)B:(2,4)C:(11,9)D:(21,11)20.上题程序划线部分可替换为:A: cout<<upper_bound(a,a+10,x)<<endl;B: cout<<upper_bound(a+1,a+11,x)<<endl;C: cout<<upper_bound(a+1,a+11,x)-a<<endl;D: cout<<lower_bound(a+1,a+11,x)-a<<endl;二.问题求解(共2题,每题5分,共计10分)1.五位数的卡布列克运算循环节为:注释:卡布列克运算为将一数的所有数位数字重新排列可得的数的最大值减最小值(高位补零),保证有循环节,本题有三个答案,写出一个即得5分,各数字用逗号隔开。

2019年NOIP普及组C试题

2019年NOIP普及组C试题

第二十三届全国青少年信息学奥林匹克联赛初赛普及组 C++语言试题竞赛时间:2017 年 10 月 14 日 14:30~16:30选手注意:试题纸共有 7 页,答题纸共有 2 页,满分 100 分。

请在答题纸上作答,写在试题纸上的一律无效。

不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共 20 题,每题 分,共计 30 分;每题有且仅有一个正确选项)1. 在 8 位二进制补码中, 表示的数是十进制下的( )。

A. 43B. -85C. -43D. -842. 计算机存储数据的基本单位是( )。

A. bitB. ByteC. GBD. KB 3. 下列协议中与电子邮件无关的是( )。

A. POP3 B. SMTP C. WTO D. IMAP4. 分辨率为 800x600、16 位色的位图,存储图像信息所需的空间为( )。

A. B. C. 4320KB D. 2880KB5. 计算机应用的最早领域是( )。

A. 数值计算B. 人工智能C. 机器人D. 过程控制 6. 下列不属于面向对象程序设计语言的是( )。

A. C B. C++ C. Java D. C# 7. NOI 的中文意思是( )。

A. 中国信息学联赛 B. 全国青少年信息学奥林匹克竞赛 C. 中国青少年信息学奥林匹克竞赛 D. 中国计算机协会 8. 2017 年 10 月 1 日是星期日,1999 年 10 月 1 日是( )。

A. 星期三B. 星期日C. 星期五D. 星期二9. 甲、乙、丙三位同学选修课程,从 4 门课程中,甲选修 2 门,乙、丙各选修3 门,则不同的选修方案共有( )种。

CCF NOIP2017 初赛普及组 C++语言试题第1页,共7页A.36B. 48C.96D. 19210. 设G是有n个结点、m条边(n≤m)的连通图,必须删去 G 的()条边,才能使得G变成一棵树。

全国青少年信息学奥林匹克联赛培训习题与解答

全国青少年信息学奥林匹克联赛培训习题与解答

全国青少年信息学奥林匹克联赛培训习题与解答第一章计算机基础知识1、我国先后自行研制成功“银河”系列的巨型计算机,其中:“银河”于1983年问世,其运算速度为每秒 1亿次;―银河Ⅱ‖于1992年诞生,其运算速度为每秒 10亿次;“银河Ⅲ”于1997年通过国家鉴定,其运算速度为每秒130亿次。

2、计算机的特点:运算速度快、计算精度高,可靠性好、有记忆和逻辑判断能力、有自动0程序的能力、可处理各种类型的数据与信息。

3、计算机应用于:数字计算、信息处理、辅助设计(CAD)和辅助教学(CAI)、工业控制、多媒体应用、网络技术。

4、下列软件均属于操作系统的是:B (因为WPS、WORD、FOXBASE是应用软件)(A)WPS与PC DOS (B)WINDOWS与MS DOS(C)WORD与WINDOWS (C)FOXBASE与OS/25、操作系统是重要的系统软件,下面几个软件中不属于操作系统的是 C(A)MS-DOS (B)UCDOS (C)PASCAL (D)WINDOWS956、MS-DOS系统对磁盘信息进行管理和使用是以A 为单位的。

【对磁盘信息的存取必须以访问文件方式进行】(A)文件(B)盘片(C)字节(D)命令7、在计算机内部用来传送、存贮、加工处理的数据或指令(命令)都是以C 形式进行的【计算机内部无论是数据还是命令都需要转换成二进制码才能传送、存贮、加工处理】(A)十进制码(B)智能拼音码(C)二进制码(D)五笔字型码8、微机内的存储器的地址是以( B )编址的。

【字长表示一个存储单元由多少位数组成,八位机的一个字长是1B,十六位机的一个字长是2B,字长位越多,可访问的存储器的地址也越多】(A)二进制位(B)字长(C)字节(D)微处理器的型号9、下列诸因素中,对微机工作影响最小的是( B )(A)尘土(B)噪声(C)温度(D)湿度10、在24*24点阵的字库中,汉字“一”与“编”的字模占用字节数分别是( C )(A)32、32 (B)32、72 (C)72、72 (D)72、32【在汉字编码中,字模汉字占用字节数与笔画的多少无关,因每行24点需要3B存储空间,24行共需要72B存储空间】11、将DOS系统盘插入A驱动器启动机器,随后使用一批应用软件,在此过程中,DOS系统盘(C)(A)必须始终插入在A驱动器中(B)不必再用(C)可能有时要插入A驱动器中(D)可能有时要插入B驱动器中【因机器启动成功后,常用命令常驻内存中,当需要调用操作系统中的外部命令时,需要再次再次插入A盘】12、计算机能直接执行的指令包括两部分,它们是(B)(A)源操作数与目标操作数(B)操作码与操作数(C)ASCII码与汉字代码(D)数字与字符【因计算机指令系统由操作码和操作数组成】13、在微机中,通用寄存器的位数是( C )(A)8位(B)16位(C)计算机字长(D)32位【因微机寄存器的位数与机器有关,取决于计算机字长】14、在计算机中,ASCII码是( B )位二进制代码(A)8 (B)7 (C)12 (D)16【表示27个状态,用128个不同的二进制编码来表示控制符号、十进制数、字符、大小写英文字母,最高位设置为0】15、计算机的软件系统通常分为( A )(A)系统软件与应用软件(B)高级软件与一般软件(C)军用软件与民用软件(D)管理软件与控制软件16、启动计算机引导DOS是将操作系统( D )(A)从磁盘调入中央处理器(B)从内存储器调入高速缓冲存储器(C)从软盘调入硬盘(D)从系统盘调入内存储器17、不同的计算机,其指令系统也不相同,这主要取决于( C )(A)所用的操作系统(B)系统的总体结构(C)所用的CPU (D)所用程序设计语言【CPU包括运算器、控制器,所有的控制和运算操作,均由控制器中的微指令进行操作。

NOI2019笔试题库及答案

NOI2019笔试题库及答案

NOI2019笔试题库及答案1.NOI 机试使用的操作系统是:Linux2.Linux 中为文件改名使用的命令是:mv <旧文件名> <新文件名>3.在Linux 中返回上一级目录使用的命令是:cd ..4.在Linux 中删除当前目录下的test 目录的命令是:rm -r test5.当前目录下有一个编译好的可执行文件 a.out,执行它使用的命令是:./a.out6.使用高级语言编写的程序称之为:源程序7.在NOI Linux 系统中可以用来调试程序的程序是:gdb8.在Linux 系统中,文件夹中的文件可以与该文件夹同名吗:可以9.Linux 系统中杀死名为test 的后台进程的命令是:killall test10.Linux 系统中可以查看隐藏文件的命令是:ls -a11.Linux 系统中编译C 程序的编译器是:gcc12.Linux 系统中编译Pascal 程序的编译器是:fpc13.Linux 系统中编译C++程序的编译器是:g++14. Linux 系统中,将当前目录下的文件名打印到tmp 文件中的命令是:ls >tmp 15.Linux 系统中,测量当前目录下程序test 运行时间的命令是:time ./test16. vim 编辑器中,强制退出不保存修改应当输入::q!17. vim 编辑器中,强制退出并保存修改可输入以下三种命令之一::wq、ZZ、:x18.vim 编辑器中,定位到文件中第12 行应当输入::1219. vim 编辑器中,在文件中查找字符串“12”应当输入:/1220.使用gcc 编译C 程序时,生成调试信息的命令行选项是:-g21. 使用gcc 编译C 程序时,生成所有警告信息的命令行选项是:-Wall22.使用gcc 编译C 程序时,只编译生成目标文件的命令行选项是:-c23.使用gcc 编译C 程序时,指定输出文件名的命令行选项是:-o24.如果C 程序中使用了math.h 中的函数,在编译时需要加入选项:-lm25. Linux 系统中具有最高权限的用户是:root26. 在Linux 的各个虚拟控制台间切换的快捷键是:Ctrl+Alt+F[1-6]27. 在NOI Linux 中,从字符控制台切换回桌面环境使用的快捷键是:Ctrl+Alt+F728.在NOI Linux 中默认使用的Shell 是:bash29.在Linux 中查看当前系统中的进程使用的命令是:ps30.在Linux 中查看进程的CPU 利用率使用的命令是:ps31. 如果自己的程序进入死循环,应当如何终止:Ctrl-C32. 可执行文件a.out从标准输入读取数据。

2019年CSP-J初赛试题(NOIP普及组)试题详解

2019年CSP-J初赛试题(NOIP普及组)试题详解

2019年CSP-J初赛试(普及组)试题详解一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.中国的国家顶级域名是?A. CnB. ChC. ChnD. China【答案】A2.二进制数11 1011 1001 Olll和01 0110 1110 1011进行逻辑与运算的结果是?A. 01 0010 1000 1011B. 01 0010 1001 0011C. 01 0010 1000 0001D. 01 0010 1000 0011【答案】D【解析】3.一个32位整型变量占用的字节数是?A. 32B. 128C. 4D. 8【答案】C【解析】32÷8=4 (字节)4.若有如下程序段,其中s、a. b、C均已定义为整型变量,且a、C均已赋值(C 大于0):s=a;for (b=l;b<=c;b++)S=S-I;则与上述程序段功能等价的赋值语句是?A. s=a-c;B. s=a~b;C.S=S-C;D.s=b~c;【答案】A5.设有100个已排好序的数据元素,采用折半查找时,最大比较次数为?A. 7B. 10C. 6D. 8【答案】A【解析】26<100<276.链表不具有的特点是?A.插入删除不需要移动元素B•不必事先估计存储空间C•所需空间与线性表长度成正比D.可随机访问任一元素【答案】D7・7・把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法(如果8个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法)?A. 22B. 24C. 18D. 20【答案】C【解析】因为袋子数量不多,可以枚举岀所有分法:0, 0, 0, 0, 80, 0, 0, 1, 70, 0, 0, 2, 60, 0, 0, 3, 50, 0, 0, 4, 40, 0, 1, 1, 60, 0, 1, 2, 50, 0, 1, 3, 40, 0, 2, 2, 40, 0, 2, 3, 30, 1, 1, 1, 50, 1, 1, 2, 40, 1, 1, 3, 30, 1, 2, 2, 30, 2, 2, 2, 21, 1, 1, 1, 41, 1, 1, 2, 31, 1, 2, 2, 28.—棵二义树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二义树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i处右孩子位于下标2i+l处),则该数组的最大下标至少为?、A. 6B. 10C. 15.D. 12【答案】C【解析】2^4-l=159.100以内最大的素数是?A. 89B. 97.C. 91D. 93【答案】B10.319和377的最大公约数是?A. 27B. 33C. 29D. 31【答案】C11•新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。

第十九届信息学奥赛复赛题目[5篇材料]

第十九届信息学奥赛复赛题目[5篇材料]

第十九届信息学奥赛复赛题目[5篇材料]第一篇:第十九届信息学奥赛复赛题目一、基础知识(每小题5分,共20分)1、结构化程序设计所规定的三种基本控制结构是(C)A.输入、处理、输出B.树型、网型、环型C.顺序、选择、循环D.主程序、子程序、函数2、Windows中所指的剪贴板就是(D)中的一块区域。

A.高速缓存B.光盘C.硬盘D.内存3、电脑工作时,断电后,保存在(C)中的信息不会丢失。

A.ROM和RAMB.CPUC.ROMD.RAM4、算式1*2*3*4*5*……*39*40的结果(A)被37037整除。

A.能B.不能二、编程题(共80分)1、有一个等差数列,它的前四项之和为26,之积为880,输出它的前20项。

答案:CLSFOR i1 = 1 TO 6FOR n = 1 TO 5i2 = i1 + n: i3 = i2 + n: i4 = i3 + nIF i1 + i2 + i3 + i4 = 26 AND i1 * i2 * i3 * i4 = 880 THEN GOTO 10NEXT nNEXT i1FOR i = 1 TO 20PRINT i1,i1 = i1 + nNEXT iEND2、数学上有一个称为“角谷猜想”的经典题目:对于一个任意的正整数n,如果n为偶数,则把它除以2,如果n为奇数,则把它乘3再加上1。

依此类推,当经过有限次的这种运算后,总可以得到正整数1。

输入n>=2和n<=2013的正整数,键盘输入n,还要输出运算过程。

例如:N=55*3+1=1616/2=88/2=44/2=22/2=1答案:CLSINPUT “n=”;nIF n < 2 OR n > 2013 THEN PRINT “Data error!”: GOTO 10 20 IF n MOD 2 = 0 THENPRINT n;“/2=”;n = n / 2PRINT nDO: LOOP WHILE INKEY$ = “"ELSEPRINT n;”*3+1=“;n = n * 3 + 1PRINT nDO: LOOP WHI LE INKEY$ = ”“END IFIF n > 1 THEN 20END3、用0—9这十个自然数分别组成一个一位数、两位数、三位数和四位数。

(noip2019)二十三届全国青少年信息学奥赛初赛试题及答案c++

(noip2019)二十三届全国青少年信息学奥赛初赛试题及答案c++

第二十三届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2019年10月14日14:30~16:30选手注意:●试题纸共有7 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20 题,每题 1.5 分,共计30 分;每题有且仅有一个正确选项)1. 在8 位二进制补码中,10101011 表示的数是十进制下的()。

A. 43B. -85C. -43D. -842. 计算机存储数据的基本单位是()。

A. bitB. ByteC. GBD. KB3.下列协议中与电子邮件无关的是()。

A. POP3B. SMTPC. WTOD. IMAP4. 分辨率为800x600、16 位色的位图,存储图像信息所需的空间为()。

A. 937.5KBB. 4218.75KBC. 4320KBD. 2880KB5. 计算机应用的最早领域是()。

A. 数值计算B. 人工智能C. 机器人D. 过程控制6.下列不属于面向对象程序设计语言的是()。

A. CB. C++C. JavaD. C#7. NOI 的中文意思是()。

A. 中国信息学联赛B. 全国青少年信息学奥林匹克竞赛C. 中国青少年信息学奥林匹克竞赛D. 中国计算机协会8. 2017 年10 月1 日是星期日,1999 年10 月1 日是()。

A. 星期三B. 星期日C. 星期五D. 星期二9.甲、乙、丙三位同学选修课程,从4 门课程中,甲选修2 门,乙、丙各选修3门,则不同的选修方案共有()种。

A. 36B. 48C. 96D. 19210. 设G 是有n 个结点、m 条边(n ≤ m)的连通图,必须删去G 的()条边,才能使得G 变成一棵树。

A. m – n + 1B. m - nC. m + n + 1D. n – m + 111. 对于给定的序列{ak},我们把(i, j) 称为逆序对当且仅当i < j 且ai > aj。

2019年全国青少年信息学(计算机)奥林匹克分区联赛提高组复赛试题

2019年全国青少年信息学(计算机)奥林匹克分区联赛提高组复赛试题

2002年全国青少年信息学〔计算机〕奥林匹克分区联赛复赛提高组试题解题报告题一均分纸牌〔存盘名NOIPG1〕[问题描述]有N堆纸牌,编号分别为1,2,…,N。

每堆上有假设干张,但纸牌总数必为N 的倍数。

可以在任一堆上取假设干张纸牌,然后移动。

移牌规那么为:在编号为1堆上取的纸牌,只能移到编号为2的堆上;在编号为N的堆上取的纸牌,只能移到编号为N-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如N=4,4堆纸牌数分别为:①9②8③17④6移动3次可达到目的:从③取4张牌放到④〔981310〕->从③取3张牌放到②〔9111010〕->从②取1张牌放到①〔10101010〕。

[输入]:键盘输入文件名。

文件格式:N〔N堆纸牌,1<=N<=100〕A1A2…An〔N堆纸牌,每堆纸牌初始数,l<=Ai<=10000〕[输出]:输出至屏幕。

格式为:所有堆均达到相等时的最少移动次数。

‘[输入输出样例]a.in:498176屏慕显示:3分析:如果你想到把每堆牌的张数减去平均张数,题目就变成移动正数,加到负数中,使大家都变成0,那就意味着成功了一半!拿例题来说,平均张数为10,原张数9,8,17,6,变为-1,-2,7,-4,其中没有为0的数,我们从左边出发:要使第1堆的牌数-1变为0,只须将-1张牌移到它的右边〔第2堆〕-2中;结果是-1变为0,-2变为-3,各堆牌张数变为0,-3,7,-4;同理:要使第2堆变为0,只需将-3移到它的右边〔第3堆〕中去,各堆牌张数变为0,0,4,-4;要使第3堆变为0,只需将第3堆中的4移到它的右边〔第4堆〕中去,结果为0,0,0,0,完成任务。

每移动1次牌,步数加1。

也许你要问,负数张牌怎么移,不违反题意吗?其实从第i堆移动-m张牌到第i+1堆,等价于从第i+1堆移动m张牌到第i堆,步数是一样的。

2019年CSP-J初赛试题(NOIP普及组)试题详解

2019年CSP-J初赛试题(NOIP普及组)试题详解

2019年CSP-J初赛试题(普及组)试题详解一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.中国的国家顶级域名是?B.chC.chnD.china【答案】A2.二进制数11 1011 1001 0111和01 0110 1110 1011 进行逻辑与运算的结果是?A. 01 0010 1000 1011B. 01 0010 1001 0011C. 01 0010 1000 0001D. 01 0010 1000 0011【答案】D【解析】3.一个32位整型变量占用的字节数是?A.32B.128C.4D.8【答案】C【解析】32÷8=4(字节)4.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c 大于0):s=a;for(b=1;b<=c;b++)s=s-1;则与上述程序段功能等价的赋值语句是?A.s=a-c;B.s=a-b;C.s=s-c;D.s=b-c;【答案】A5.设有100个已排好序的数据元素,采用折半查找时,最大比较次数为?A.7B.10C.6D.8【答案】 A【解析】26<100<276.链表不具有的特点是?A. 插入删除不需要移动元素B.不必事先估计存储空间C.所需空间与线性表长度成正比D.可随机访问任一元素【答案】D7.7.把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法(如果8个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法)?【答案】C【解析】因为袋子数量不多,可以枚举出所有分法:0,0,0,0,80,0,0,1,70,0,0,2,60,0,0,3,50,0,0,4,40,0,1,1,60,0,1,2,50,0,1,3,40,0,2,2,40,0,2,3,30,1,1,1,50,1,1,2,40,1,1,3,30,1,2,2,30,2,2,2,21,1,1,1,41,1,1,2,31,1,2,2,28.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i处、右孩子位于下标2i+1处),则该数组的最大下标至少为?【答案】C【解析】2^4-1=159.100以内最大的素数是?A.89B.97.C.91D.93【答案】B10.319和377的最大公约数是?A.27B.33C.29D.31【答案】C11.新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。

noip2019普及组初赛试题c++

noip2019普及组初赛试题c++

第二十四届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2019年 10 月 13 日 14:30~16:30一、单项选择题(共15 题,每题2 分,共计30 分;每题有且仅有一个正确选项)1.:2.以下哪一种设备属于输出设备:()A.扫描仪B.键盘C.鼠标D.打印机3.下列四个不同进制数中,与其它三项数值上不相等的是()。

A.(269)16B.(617)10C.(1151)8D.(11)24.1MB 等于()。

A.¥B.1000 字节 B. 1024 字节C.1000 X 1000 字节D. 1024 X 1024字节5.广域网的英文缩写是()。

NB.WANC.MAND.LNA6.中国计算机学会于()年创办全国青少年计算机程序设计竞赛。

A.!B.1983C.1984D.1985E.19867.如开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsL。

ck、字母键A、字母键S、字母键D、字母键F的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第81个字符是字母A. AB. SC. DD. a8.根节点深度为0, 一棵深度为h的满k (k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有 k 个子结点的树,共有( )个结点。

A.】B.(k h+1 - 1) / (k - 1)C.k h-1D.k hE.(k h-1) / (k - 1)9. 以下排序算法中,不需要进行关键字比较操作的算法是( )。

A.基数排序B.冒泡排序C.堆排序D.¥E.直接插入排序10.给定一个含 N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要 N - 1 次比较操作。

则最坏情况下,在该数组中同时找最大与最小的数至少需要()次比较操作。

(「1表示向上取整,L」表示向下取整)A.「3N / 21 - 2B.L 3N / 2」- 2C.2N - 2D.2N - 411.下面的故事与( )算法有着异曲同工之妙。

信息学奥赛试题

信息学奥赛试题

信息学奥赛试题第19届全国青少年信息学(计算机)奥林匹克BASIC试题说明:请考生注意,所有试题的答案要求全部做在答题纸上。

一、基础知识单项选择题(共10题,每小题3分,共计30分)1、存储容量2GB相当于()A、2000KBB、2000MBC、2048MBD、2048KB2、输入一个数(可能是小数),再按原样输出,则程序中处理此数的变量最好使用()A、字符串类型B、整数类型C、实数类型D、数组类型3、下列关于计算机病毒的说法错误的是()A、尽量做到使用正版软件,是预防计算机病毒的有效措施。

B、用强效杀毒软件将U盘杀毒后,U盘就再也不会感染病毒了。

C、未知来源的程序很可能携带有计算机病毒。

D、计算机病毒通常需要一定的条件才能被激活。

4、国标码的“中国”二字在计算机内占()个字节。

A、2B、4C、8D、165、在计算机中,ASCⅡ码是( )位二进制代码。

A、8B、7D、166、将十进制数2013转换成二进制数是( )。

A、11111011100B、11111001101C、11111011101D、111111011017、现有30枚硬币(其中有一枚假币,重量较轻)和一架天平,请问最少需要称几次,才能找出假币( )。

A、3B、4C、5D、68、下列计算机设备中,不是输出设备的是()。

A、显示器B、音箱C、打印机D、扫描仪9、在windows窗口操作时,能使窗口大小恢复原状的操作是()A、单击“最小化”按钮B、单击“关闭”按钮C、双击窗口标题栏D、单击“最大化”按钮10、世界上第一台电子计算机于1946年诞生于美国,它是出于()的需要。

A、军事B、工业C、农业D、教学二、问题求解(共2题,每小题5分,共计10分)1、请观察如下形式的等边三角形:2 边长为4当边长为2时,有4个小三角形。

问:当边长为6时,有________个小三角形。

当边长为n时,有________个小三角形。

2、A、B、C三人中一位是工人,一位是教师,一位是律师。

历年noip普及组复赛试题

历年noip普及组复赛试题

历年noip普及组复赛试题
NOIP(全国青少年信息学奥林匹克竞赛)是中国的一项信息学竞赛活动,包括普及组和提高组两个组别。

普及组主要面向初中生和高中生,复赛试题是选拔普及组的参赛选手的关键环节。

以下是历年NOIP普及组复赛试题的一些例子:
1. 2019年NOIP普及组复赛试题:
题目1,给定一个长度为N的字符串S,求出它的最长回文子串的长度。

题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的最短路径长度。

2. 2018年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长上升子序列的长度。

题目2,给定一个N×N的矩阵,求出从左上角到右下角的
最短路径长度,每次只能向右或向下移动。

3. 2017年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递增子序列的长度。

题目2,给定一个N×M的棋盘,每个格子上有一个非负整数,求从左上角到右下角的路径,使得路径上的数字之和最小。

4. 2016年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递减子序列的长度。

题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的路径数。

以上只是一些例子,每年的试题都会涉及不同的知识点和算法,题目难度也会有所不同。

参赛选手需要具备扎实的编程基础和算法
思维,才能在复赛中取得好成绩。

希望以上内容能对你有所帮助。

noip2019普及组初赛试题c++

noip2019普及组初赛试题c++

]第二十四届全国青少年信息学奥林匹克联赛初赛普及组 C++语言试题竞赛时间:2019年 10 月 13 日 14:30~16:30一、单项选择题(共15 题,每题2 分,共计30 分;每题有且仅有一个正确选项)1.:2.以下哪一种设备属于输出设备:()A.扫描仪B. 键盘C. 鼠标D. 打印机3.下列四个不同进制数中,与其它三项数值上不相等的是()。

A.(269)16B.(617)10C.(1151)8D.(11)24.1MB 等于()。

A.¥B.1000 字节 B. 1024 字节C. 1000 X 1000 字节D. 1024 X 1024 字节5.广域网的英文缩写是()。

NB.WANC.MAND.LNA6.中国计算机学会于()年创办全国青少年计算机程序设计竞赛。

A.!B.1983C.1984D.1985E.19867.如开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键 S、字母键 D、字母键 F 的顺序循环按键,即 CapsLock、A、 S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第 81 个字符是字母()。

A. AB. SC. DD. a8.根节点深度为 0,一棵深度为 h 的满 k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有 k 个子结点的树,共有()个结点。

A.】B.(k h+1 - 1) / (k - 1)C.k h-1D.k hE.(k h-1) / (k - 1)9.以下排序算法中,不需要进行关键字比较操作的算法是()。

A.基数排序B.冒泡排序C.堆排序D.¥E.直接插入排序10.给定一个含 N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要 N - 1 次比较操作。

则最坏情况下,在该数组中同时找最大与最小的数至少需要()次比较操作。

(⌈⌉表示向上取整,⌊⌋表示向下取整)A.⌈3N / 2⌉ - 2B.⌊3N / 2⌋ - 2C.2N - 2D.2N - 411.下面的故事与()算法有着异曲同工之妙。

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题(无答案)

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题(无答案)

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题(初中组竞赛用时:3小时)1.设有一个n*m方格的棋盘(1≤m,n≤100)。

(30%)求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。

例如:当n=2,m=3时正方形的个数有8个;即边长为1的正方形有6个;边长为2的正方形有2个。

长方形的个数有10个;程序要求:输入:n和m 输出:正方形的个数与长方形的个数如上例:输入:2 3 输出:8,102.将1,2,······,9共9个数排成下列形态的三角形。

(30%)ab cd ef g h i其中:a~i分别表示1,2,······,9中的一个数字,并要求同时满足下列条件:(1)a<f<i;(2)b<d, g<h, c<e(3)a+b+d+f=f+g+h+i=i+e+c+a=P程序要求:根据输入的边长之和P输出所有满足上述条件的三角形的个数以及其中的一种方案。

3.设有一个N *M (l ≤ N ≤50, l ≤ M ≤ 50)的街道(如下图):(40%)规定行人从A(1,1)出发,在街道上只能向东或北方向行走。

如下为N =3,M=3的街道图,从A 出发到达B 共有6条可供行走的路径:A6 A7 B (N ,M ) A3 A4 A5 A A1 A2若在N *M 的街道中,设置一个矩形障碍区域(包括围住该区域的街道)不让行人通行,如图中用“*”表示的部分。

此矩形障碍区域用2对顶点坐标给出,前图中的2对顶点坐标为:(2,2),(8,4),此时从 A 出发到达B 的路径仅有两条。

程序要求:任务一:给出N ,M 后,求出所有从A 出发到达B 的路径的条数。

任务二:给出N ,M ,同时再给出此街道中的矩形障碍区域的2对顶点坐标(X1,y1), (X2,Y2),然后求出此种情况下所有从A 出发到达B 的路径的条数。

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题

noip2019第十年全国青少年信息学奥林匹克联赛普及组复赛试题〔普及组三小时完成〕【一】不高兴的津津【问题描述】津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

【输入文件】输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

【输出文件】输出文件unhappy.out包括一行,这一行只包含一个数字。

如果不会不高兴那么输出0,如果会那么输出最不高兴的是周几〔用1,2,3,4,5,6,7分别表示周一,周二,周三,周四,周五,周六,周日〕。

如果有两天或两天以上不高兴的程度相当,那么输出时间最靠前的一天。

【样例输入】53627253540406【样例输出】3【二】花生采摘(peanuts.pas/dpr/c/cpp)【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。

这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。

鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。

在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格〔如图1〕。

有经验的多多一眼就能看出,每棵花生植株下的花生有多少。

为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。

”我们假定多多在每个单位时间内,可以做以下四件事情中的一件:1)从路边跳到最靠近路边〔即第一行〕的某棵花生植株;2)从一棵植株跳到前后左右与之相邻的另一棵植株;3)采摘一棵植株下的花生;4)从最靠近路边〔即第一行〕的某棵花生植株跳回路边。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NOIP2002普及组解题报告题一:级数求和[问题描述]::Sn=1+1/2+1/3+…+1/n。

显然对于任意一个整数K,当n足够大的时候,Sn大于K。

现给出一个整数K〔1<=K<=15〕,要求计算出一个最小的n,使得Sn>K[问题分析]:这道题目非常简单,题目的意思已经把该题的算法描述得再清楚不过了,初始时Sn=0,n=0,然后每次循环n←n+1,Sn←Sn+1/n,,直到Sn大于K,最后输出K。

另外实型(Real 是最慢的,建议用Extended)的运算速度不是很快,而K为1~15之间的整数,所以最后可以交一张表〔常量数组〕,以达到最好的效果[参考程序]:programc1;varK:Byte;n:Longint;Sn:Extended;beginReadln(K);Sn:=0;n:=0;RepeatInc(n);Sn:=Sn+1/n;UntilSn>k;Writeln(n);end.题二:选数[问题描述]:n〔1<=n<=20〕个整数x1,x2,…,xn〔1<=xi<=5000000〕,以及一个整数k〔k<n〕。

从n 个整数中任选k个整数相加,可分别得到一系列的和。

现在,要求你计算出和为素数共有多少种。

[问题分析]:此题动态规划无从下手,也无数学公式可寻,看来只能搜索〔组合的生成算法〕,其实1<=n<=20这个约束条件也暗示我们此题搜索是有希望的,组合的生成可用简单的DFS来实现,既搜索这k个整数在原数列中的位置,由于组合不同于排列,与这k个数的排列顺序无关,所以我们可以令a[I]<a[I+1]〔a[I]表示第I个数在原数列中的位置〕,这个组合生成算法的复杂度大约为C(n,k),下面给出递归搜索算法的框架:接下来的问题就是判断素数,判断一个整数P(P>1)是否为素数最简单的方法就是看是否存在一个素数a(a<=sqrt(P))是P的约数,如果不存在,该数就为素数,由于在此题中1<=xi<=5000000,n<=20,所以要判断的数P不会超过100000000,sqrt(p)<=10000,因此,为了加快速度,我们可以用筛选法将2…10000之间的素数保存到一个数组里〔共1229个〕,这样速度估计将提高5~6倍。

特别注意:此题是要求使和为素数的情况有多少种,并不是求有多少种素数,比赛时就有很多同学胡乱判重而丢了12分;还有1不是素数,在判素数时要对1做特殊处理。

[参考程序]programc2;constMaxN=20;varN,M,i:Byte;ans,s:Longint;x:array[1..MaxN]ofLongint;f:array[1..10000]ofByte;p:array[1..1229]ofInteger;procedureGet_Prime;vari,j,s:Integer;begins:=0;f[1]:=0;fori:=2to10000dof[i]:=1;fori:=2to10000doiff[i]=1thenbeginInc(s);p[s]:=i;j:=2*i;whilej<=10000dobeginf[j]:=0;Inc(j,i)end;endend;procedureWork(S:Longint);vari:Integer;beginifS<=10000thenInc(ans,f[S])elsebegini:=1;whilesqr(longint(p[i]))<=SdobeginifSmodp[i]=0thenExit;Inc(i)end;Inc(ans)endend;procedureSearch(d,pre:Byte);vari:Byte;beginfori:=pre+1toN-(M-d)dobeginInc(S,x[i]);ifd=MthenWork(S)elseSearch(d+1,i);Dec(S,x[i])endend;beginReadln(N,M);fori:=1toNdoRead(x[i]);ans:=0;S:=0;Get_Prime;Search(1,0);Writeln(ans)end.题三:产生数[问题描述]:给出一个整数n(n<10^30)和k个变换规那么〔k<=15〕。

规那么:1个数字可以变换成另一个数字规那么的右部不能为零。

问题:给出一个整数n和k个规那么求出:经过任意次的变换〔0次或多次〕,能产生出多少个不同的整数。

[问题分析]:认真分析题目之后发现,此题搜索显然是不行的,而且对于只需计数而不需求具体方案的题目,一般都不会用搜索解决,其实此题不难看出,可以用乘法原理直接进行计数,用Fi表示数字i包括本身可以变成的数字总个数〔这里的变成可以是直接变成也可以是间接变成,比如3->5,5->7,那么3->7〕,那么对于一个数a〔用数组存,长度为n〕,根据乘法原理它能产生出F[a[1]]*F[a[2]]*F[a[3]]*…F[a[n]]个不同整数,相信这一点大家不难理解。

那么现在的关键就是如何求Fi,由于这些变换规那么都是反应的数字与数字之间的关系,这很容易让我们想到用图来表示这种关系:1:建立一个有向图G,初始化g[i,j]←False2:如果数字i能直接变成数字j,那么g[i,j]←True容易知如果数字i能变成数字j,那么i到j必须存在路径,否那么i是不可能变成j的,这样一来,Fi的求解就显得非常简单了,求一个顶点v包括本身能到达的顶点数的方法相当多,可以用BFS,DFS,Dijkstra,Floyd,这里介绍一种类似Floyd的有向图的传递闭包算法,该算法实现简单,在解决这类问题时比Floyd效率更高,所谓有向图的传递闭包就是指可达性矩阵A=[a[i,j]],其中a[i,j]=True从i到j存在通路a[i,j]=False从i到j不存在通路所以有向图传递闭包算法只需将floyd算法中的算术运算符操作‘+’用相应的逻辑运算符‘and’和’or’代替就可以了,其算法如下:fork←1tondofori←1tondoforj←1tondoa[i,j]=a[i,j]or(a[i,k]anda[k,j])最后值得注意的是当n很大时输出可能会超过Comp类型的范围,所以要使用高精度乘法,由于高精度算法是信息学竞赛中的基础,这里就不在详述。

[参考程序]programc3;constMaxLen=30;varLen,M:Byte;a:array[1..MaxLen]ofByte;f:array[0..9]ofByte;g:array[0..9,0..9]ofBoolean;procedureInit;vari:Byte;St:String;beginReadln(st);Len:=0;M:=0;i:=1;whilest[i]in['0'..'9']dobeginInc(Len);a[Len]:=Ord(st[i])-48;Inc(i)end; Repeatifst[i]in['0'..'9']thenM:=M*10+Ord(st[i])-48; Inc(i)Untili>Length(st)end;procedureMain;vari,j,k:Byte;beginFillchar(g,Sizeof(g),False);fork:=1toMdobeginReadln(i,j);g[i,j]:=Trueend;fork:=0to9dofori:=0to9doforj:=0to9dog[i,j]:=g[i,j]or(g[i,k]andg[k,j]);Fillchar(f,Sizeof(f),0);fori:=0to9dog[i,i]:=True;fori:=0to9doforj:=0to9doInc(f[i],Ord(g[i,j]))end;procedureShow;vari,j,k,g:Byte;ans:Array[1..MaxLen]ofByte;beginFillchar(ans,Sizeof(ans),0);ans[1]:=1;fork:=1toLendobeging:=0;fori:=1toMaxLendobeginans[i]:=ans[i]*f[a[k]]+g;g:=ans[i]div10;ans[i]:=ans[i]mod10endend;j:=MaxLen;Whileans[j]=0doDec(j);fori:=jdownto1doWrite(ans[i]);Writelnend;beginInit;Main;Showend.题四:过河卒[问题描述]:棋盘上A点有一个过河卒,需要走到目标B点。

卒行走的规那么:可以向下、或者向右。

同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。

棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过20的整数),同样马的位置坐标是需要给出的。

现在要求你计算出卒从A点能够到达B点的路径的条数[问题分析]:这是一道老得不能再老的题目了,很多书上都有类似的题目,NOIp97普及组的最后一题就和此题几乎一模一样。

有些同学由于没见过与之类似的题目,在比赛时用了搜索,当n 到14,15左右就会超时,其实,此题稍加分析,就能发现:要到达棋盘上的一个点,只能从左边过来或是从上面下来,所以根据加法原理,到达某一点的路径数目,等于到达其相邻上,左两点的路径数目之和,因此我们可以使用逐列〔或逐行〕递推的方法来求出从起始顶点到重点的路径数目,即使有障碍〔我们将马的控制点称为障碍〕,这一方法也完全适用,只要将到达该点的路径数目置为0即可,用F[i,j]表示到达点(i,j)的路径数目,g[i,j]表示点(i,j)有无障碍,递推方程如下:F[0,0]=1F[i,j]=0{g[x,y]=1}F[i,0]=F[i-1,0]{i>0,g[x,y]=0}F[0,j]=F[0,j-1]{j>0,g[x,y]=0}F[i,j]=F[i-1,j]+F[i,j-1]{i>0,j>0,g[x,y]=0}此题与第三题一样,也要考虑精度问题,当n,m都很大时,可能会超过MaxLongInt,所以要使用Comp类型计数(Comp类型已经足够了,即使n=20,m=20,没有任何障碍的情况下的结果也只有14,5位的样子)。

[参考程序]{$R-,S-,I-,Q-,N+}programc4;constdx:array[1..8]ofShortint=(-2,-1,1,2,2,1,-1,-2);dy:array[1..8]ofShortint=(1,2,2,1,-1,-2,-2,-1);varn,m,x,y,i,j:Byte;g:array[0..20,0..20]ofByte;f:array[0..20,0..20]ofComp;beginReadln(n,m,x,y);Fillchar(g,Sizeof(g),0);g[x,y]:=1;fori:=1to8doif(x+dx[i]>=0)and(x+dx[i]<=n)and(y+dy[i]>=0)and(y+dy[i]<=m)theng[x+dx[i],y+dy[i]]:=1;f[0,0]:=1;fori:=1tondoifg[i,0]=0thenf[i,0]:=f[i-1,0];fori:=1tomdoifg[0,i]=0thenf[0,i]:=f[0,i-1];fori:=1tondoforj:=1tomdoifg[i,j]=0thenf[i,j]:=f[i-1,j]+f[i,j-1];Writeln(f[n,m]:0:0)end.总结:四道题目其实都很容易,要想到正确可行的方法并不难,考察的是大家的编程基础,一些基本算法的简单应用,并不需要什么优化技巧,关键是看大家对这些基本算法是否已熟练掌握,只有熟练掌握这些算法,在考试中才能在较短的时间内做好每道题,我们一定要重视基础!。

相关文档
最新文档