NOIP2013初赛提高组Pascal试题及答案汇总
NOIP提高组初赛历年试题及答案求解题篇(完整资料).doc
【最新整理,下载后即可编辑】NOIP提高组初赛历年试题及答案求解题篇问题求解题(每次2题,每题5分,共计10分。
每题全部答对得5分,没有部分分)注:答案在文末提高组的问题求解题的知识点大多涉及计数问题、鸽巢原理、容斥问题、逻辑推理、递推问题、排列组合问题等。
NOIP2011-1.平面图可以画在平面上,且它的边仅在顶点上才能相交的简单无向图。
4个顶点的平面图至少有6条边,如图所示。
那么,5个顶点的平面图至多有_________条边。
NOIP2011-2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。
举例说明,对于字符串“BCA”可以将A移到B 之前,变字符串“ABC”。
如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要_________次操作。
NOIP2012-1. 本题中,我们约定布尔表达式只能包含p,q, r三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。
如果无论p, q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。
例如,(p∨q)∨r和p∨(q∨r)等价,p∨¬p 和q∨¬q 也等价;而p∨q 和p∧q不等价。
那么,两两不等价的布尔表达式最多有_________个。
NOIP2012-2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。
例如,图1有5个不同的独立集(1个双点集合、3个单点集合、1个空集),图2有14个不同的独立集。
那么,图3有_________个不同的独立集。
NOIP2013-1. 某系统自称使用了一种防窃听的方式验证用户密码。
密码是n个数s1,s2,…,sn,均为0或1。
该系统每次随机生成n个数a1,a2,…,an,均为0或1,请用户回答(s1a1+s2a2+…+snan)除以2的余数。
如果多次的回答总是正确,即认为掌握密码。
该系统认为,即使问答的过程被泄露,也无助于破解密码——因为用户并没有直接发送密码。
1999年至2013年历年信息学奥赛提高组初赛答案
NOIP2013第十九届全国青少年信息学奥林匹克联赛初赛(提高组)试题解析一、单选题(15*1.5)1、A,一个字节有8个bit,32位整型变量占用4个字节,故选A。
2、A,二进制11.01转为十进制,(11.01)2 = 1*2+1+0*0.5+1*0.25 = (3.25)10 。
3、B,老和尚给小和尚讲的故事里边有故事本身,递归是函数内部调用函数本身,故选B,递归。
4、D,香农信息论鼻祖。
5、A,一定是满二叉树时拥有2个字节点的节点数最多,最下一层会有2013-1023=990个节点,于是倒数第二层会有990/2=495个节点有2个字节点,从第1层到倒数第三层共有1023-2^9=511个节点,且这些节点都是用2个子节点的节点,所以共有495+511=1006个,选A。
6、B,要使图不联通,只要其中某一个节点不连通即可,所有顶点度最少是3,所以最少需要删除3条边,选B。
7、D,此题最开始一眼扫到的时候脑子进水,跟学生将选B,O(n),实际上不是,计算F1需要1次,计算F2需要一次,计算Fn需要计算F(n-1)的次数加上F (n-2)的次数,所以其实就是计算Fn次,于是答案选择D,至于这个Fn到底是多大,数学上可以计算,它等于O(((1+sqrt(5))/2)^n).8、B,这个必须是B,没有什么好说的,中序遍历保证左边都是小于根的,右边都是大于根的,所以可以保证是一个有序序列。
9、D,A项6和17对11取余都是6发生冲突,B项10的平方和17的平方对11取余都是1发生冲突,C项6的两倍和17的两倍对11取余都是1发生冲突,D项分别为1,2,3,4,不冲突。
10、D,IPV6地址是128位的。
谢谢网友指正!11、C,二分为6个和6个的顶点,此时边最多,有36条边。
12、B,我的学生几乎全选A去了,因为之前讲题只介绍过ASCII码,但是看到统一二字也应该想到Uni...前缀啊。
13、D,64位非零浮点数强制转换成32位浮点数,两个数会有大小上的细微差别,但不会发生符号变化,因为有专门的符号位。
NOIP2013初赛提高组Pascal试题及答案
第十九届全国青少年信息学奥林匹克联赛初赛提高组Pascal 语言试题竞赛时间:2013 年10 月13 日14:30~16:30选手注意:●试题纸共有12 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项)1. 一个32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282. 二进制数11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4. 1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A. 冯·诺伊曼(John von Neumann)B. 图灵(Alan Turing)C. 欧拉(Leonhard Euler)D. 克劳德·香农(Claude Shannon)5. 已知一棵二叉树有2013 个节点,则其中至多有()个节点有2 个子节点。
A. 1006B. 1007C. 1023D. 10246. 在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图,至少要删去其中的()条边。
A. 2B. 3C. 4D. 57. 斐波那契数列的定义如下:F1 = 1, F2 = 1, F n = F n – 1 + F n – 2 (n ≥ 3)。
如果用下面的函数计算斐波那契数列的第n 项,则其时间复杂度为()。
funtion F(n : longint) : longint;beginif n <= 2 thenF := 1elseF := F(n - 1) + F(n - 2);end;A. O(1)B. O(n)C. O(n2)D. O(F n)8. 二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
第十九届2013全国信息学奥林匹克联赛初赛试题c及解析
第十九届全国xx信息学奥林匹克联赛初赛提高组C++语言试题竞赛时间:2013年10月13日14:30~16:30选手注意:●试题纸共有12页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.一个32位整型变量占用()个字节。
A.4B.8C.32D.1282.二进制数11.01在十进制下是()。
A.3.25B.4.125C.6.25D.11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,xx有个xx在给小xx讲故事:?从前有座山,山里有座庙,xx有个xx在给小xx讲故事:‘从前有座山,山里有座庙,xx有个xx给小xx讲故事....’?A.枚举B.递归C.贪心D.分治4.1948年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A.xx·诺伊曼(John von Neumann)B.图灵(Alan Turing)C.xx(Leonhard Euler)D.克劳德·香农(Claude Shannon)5.已知一棵二叉树有2013个节点,则其中至多有()个节点有2个子节点。
A.1006B.1007C.1023D.10246.在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有5个顶点、8条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A.2B.3C.4D.57.斐波xx数列的定义如下:F1=1,F2=1,Fn=Fn–1+Fn–2(n≥3)。
如果用下面的函数计算斐波xx数列的第n项,则其时间复杂度为()。
int F(int n){if(n<=2)return 1;elsereturn F(n-1)+F(n-2);}A.O(1)B.O(n)C.O(n2)D.O(Fn)8.二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
NOIP提高组初赛历年试题及答案阅读题篇
NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。
程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。
因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。
1、分层读:高层入手,逐层深入,正确理解程序。
2、写注解:固化、总结、提炼已有的理解成果。
3、先模拟:根据代码顺序跟踪变量,模拟运算。
4、找规律:先模拟几次循环后,找出背后的规律。
5、看功能:从代码结构和运算结果判断程序功能。
6、猜算法:有时不知道算法,通过结构和函数猜一猜。
7、换方法:了解程序本质后,换一个熟悉的方法试试。
对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。
其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。
阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。
如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。
当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。
祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y) {if(x<n)f2(y,x+y);}void f2(int x,int y) {cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。
NOIP2013完整版第十九届全国奥林匹克信息学联赛初赛
}
A. O(1)
B. O(n)
C. O(n²) D. O(Fn)
8. 二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子
树上所有节点的值。那么,二叉查找树的( )是一个有序序列。
A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 宽度优先遍历
CCF NOIP2013 初赛提高组 C 语言试题 第 1 页,共 8 页
12 个顶点的二分图至多有( )条边。
A. 18
B. 24
C. 36
D. 66
12.( )是一种通用的字符编码,它为世界上绝大部分语言设定了统一并且唯一的二进制
编码,以满足跨语言、跨平台的文本交换。目前它已经收录了超过十万个不同字符。
A. ASCII B. Unicpde
C. GBK 2312 D.BIG5
CCF NOIP2013 初赛提高组 C 语言试题 第 5 页,共 8 页
注:本品是我据 NOIP2013C 语言初赛试题做出来的,若有侵权,请告知本人会尽快处理,若有转载,请说 明出处。
24
32
41
43
45
54
64 输出:
五、完善程序(第 1 题 15 分,第二题 13 分,共计 28 分) 1. (序列重排)全局数组变量 a 定义如下:
C. 欧拉 (Leohard Euler)
D. 克劳德·香农(Claude Shannon)
5. 已知一棵二叉树有 2013 个节点,则其中至多有( )个节点有两个子节点。
A. 1006
B. 1007
C. 1023
D.1024
6. 在一个无向图中,如果任意两点之间都存在路径相连,则称之为连通图。
2013年第十九届全国青少年信息学奥林匹克联赛提高组初赛试题
2013年第十九届全国青少年信息学奥林匹克联赛提高组初赛试题第十九届全国青少年信息学奥林匹克联赛初赛提高组Pascal语言试题竞赛时间:2013年10月13日14:30~16:30选手注意:●试题纸共12页,答题纸共2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子试备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.一个32位整型变量占用()个字节。
A.4 B.8 C.32 D.1282.二进制数11.01在十进制下是()。
A.3.25 B.4.125 C.6.25D.11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事…………………………’”A.枚举B.递归C.贪心D.分治4.1948年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A.冯·诺伊曼(John von Neumann) B.图灵(Alan Turing)C.欧拉(Leonhard Euler)D.克劳德·香农(Claude Shannon)5.已知一棵二叉树有2013个节点,则其中至多有()个节点有2个子节点。
A.1006 B.1007C.1023 D.10246.在一个有向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有5个顶点、8条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A.2 B.3 C.4 D.57.斐波那契数列的定义如下:F1=1,F2=1,F n=F n-1+F n-2(n≥3)。
如果用下面的函数计算斐波那契数列的第n项,则其时间复杂度为()。
function F(n:longint):longint;beginif n<=2 thenF:=1elseF:=F(n-1)+F(n-2);end;A.O(1) B.O(n) C.O(n2)D.O(F n)8.二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx
NOIP 提高组初赛历年试题及答案阅读题篇程序写果(共 4 ,每 8 分,共 32 分)程序的最好方法并非是依次从到尾。
程序不像迷,我无法从末尾几找到答案,也不像一本引人入的籍,只需直接翻到褶最多的那几,我就能找到最精彩的片断。
因此我在程序,最好逐一考察研究每一段代,搞清楚每一段代的来去脉,理解每一段代在程序中所起的作用,而形成一个虚的程序构,并以此基来行。
1、分:高入手,逐深入,正确理解程序。
2、写注解:固化、、提已有的理解成果。
3、先模:根据代序跟踪量,模运算。
4、找律:先模几次循后,找出背后的律。
5、看功能:从代构和运算果判断程序功能。
6、猜算法:有不知道算法,通构和函数猜一猜。
7、方法:了解程序本后,一个熟悉的方法。
大多数人来,写程序是令人开心的一件事情,人的程序却很痛苦,很恐惧,宁愿自己重写一遍。
其到好的程序,就像一篇美文,令人心神怡,豁然开朗,因背后是一个人的思,甚至整个人生。
人的程序不可以巩固自己的知,启自己的思,提升自己的修养,你收,其,也是在学、在、在工作中的最重要、最常用的基本功。
如果写程序是把自己的思化代,程序就是把代化你理解的人的思。
当你程序有烈的代入感,像演一,真正入到的精神世界,面部表情也随之日丰富起来。
祝你!你通关了!之,看得多,得多,拼得多,你就考得多⋯⋯NOIP2011-1 .#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i 值(中位数),而不是sum ,也不是a[x]输出: 3NOIP2011-2 .#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y){if(x<n)f2(y,x+y);}void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入: 30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出: 1 2 5 13 34NOIP2011-3 .#include <iostream>using namespace std; const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS ),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则 ans=len,可以说明这是个在图中用DFS找最长的路径的程序。
NOIP提高组初赛历年试题及答案阅读题篇
NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。
程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。
因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。
1、分层读:高层入手,逐层深入,正确理解程序。
2、写注解:固化、总结、提炼已有的理解成果。
3、先模拟:根据代码顺序跟踪变量,模拟运算。
4、找规律:先模拟几次循环后,找出背后的规律。
5、看功能:从代码结构和运算结果判断程序功能。
6、猜算法:有时不知道算法,通过结构和函数猜一猜。
7、换方法:了解程序本质后,换一个熟悉的方法试试。
对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。
其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。
阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。
如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。
当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。
祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。
NOIP2013提高组复赛试题
CCF 全国信息学奥林匹克联赛(NOIP2013)复赛提高组 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。
按照顺时针方向给 n 个位置编号,从 0 到 n-1。
最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。
游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n −m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。
现在,一共进行了10^k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为circle.in。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为c ircle.out。
输出共1行,包含1个整数,表示10k 轮后x号小伙伴所在的位置编号。
【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <m <n ,0 ≤ x ≤ n,0 < k< 109。
2.火柴排队(match.cpp/c/pas)【问题描述】涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 99,999,997 取模的结果。
NOIP初赛模拟试题(Pascal语言、提高组)
NOIP初赛模拟试题(Pascal语⾔、提⾼组)NOIP初赛模拟试题 by OI Store(提⾼组 Pascal语⾔⼆⼩时完成)⼀、单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有⼀个正确答案。
)1.建⽴了计算机最主要的结构原理的⼈是()。
A. 图灵B. ⽐尔·盖茨C. 冯·诺伊曼D. 克拉拉·丹E. 哥德尔2.设a、b、c是三个布尔型(boolean)的变量,则表达式(a∨?b)∧(b∨?c)∧(c∨?a)∧(a∧?a)∧(b∧?b)的值()。
A. 始终为trueB. 始终为falseC. 当且仅当c为true时为falseD. 当且仅当a与b均为true时为trueE.依赖于a、b、c三者的值3.设a、b为两个浮点(float)型变量,下⾯的表达式中最有可能为真的是()。
A. a=bB. a*a+2*a*b+b*b=(a+b)*(a+b)C. (a+b)*(a-b)+b*b-a*a<0.0001D. a/b=1/(b/a)E. sqrt(a)*sqrt(b)=sqrt(a*b)4.下⾯的数据中,在编程中⽤长整型(longint)表⽰最恰当的是()。
A. 宇宙中的原⼦数⽬B. ⼀头⼤象的体重(⽤吨表⽰)C. 姚明的⾝⾼(⽤厘⽶表⽰)D. ⼀个⼭村的准确⼈⼝数E.从现在(2006年)到2008奥运会开幕的倒计时秒数5.⼀个三叉树(即每个节点最多有三个孩⼦)中,有k个孩⼦的结点数⽬表⽰为S(k),则下列关系⼀定成⽴的是()。
A. S(0)=2*S(3)+S(2)-1B. S(0)>3*S(3)+2*S(2)-1C. S(0)<3*S(3)+2*S(2)+1D. S(0)<2*S(3)+S(2)E. S(0)<=3*S(3)+2*S(2)6.佳佳在⽹上购买了⼀个空间,建设了⼀个⽹站。
那么,他向⽹站上上传⽹页时最有可能采⽤的⽹络协议是()。
Noip 2013 解题报告与参赛总结(PASCAL版)
Noip 2013 解题报告与参赛总结(pascal版)Noip结束也有一段时间了,网上也能查到很多解题报告。
虽然意义不大,但就当做是一点纪念吧,纪念我的第一次Noip。
(也很可能是最后一次了)Day1T1:应该不难看出是快速幂,只要把模板背过就可以轻松AC了。
属于例行水题。
T2:首先分析出移动的结果应使得列中最大的数在一起,次大的数在一起,以此类推。
因为要使化简下来的式子中两数之积最大。
然后就是YY出只要移动一列即可达到效果。
在此基础上处理发现实际是求序列中的逆序对数。
这也不难,方法有两种,一种是树状数组或线段树,另一种更简单,代码也更容易实现。
是通过归并排序求逆序对。
只需要在归并排序中加一个计数器ANS。
在“并”这一部分中记录一下即可,详细的看代码。
T3:本次考试中较难的一道题,SPFA可以做到40-60分。
并查集至少60分,听神犇说可以AC。
比较常用的方法是树链剖分或树上倍增。
还是说一下倍增吧(因为前一种太wo简bu单hui)。
首先跑一遍最大生成树。
(显然答案都只会是这棵树上边的权值)。
然后处理倍增的数据,要记录两个内容,一个是2^k的祖先,另一个是到祖先的路上最小权值。
我用的是DFS的方法。
每处理完一个节点就把信息传递给儿子。
中间顺便记录每个节点的深度。
倍增时先把询问的两个点处理到同一深度,然后同时向上倍增,直至倍增的祖先恰好相同,同时ANS不断记录更小的权值。
Day2T1:竟然不是数论!数学弱渣太感谢出题人了。
方法很简单,从左到右扫一遍,如果当前点的高度大于前一个,就直接给ANS 加上差值。
T2:竟然也是O(N)!欺骗蒟蒻的感情!和T1一样简单,YY出ANS即为拐点的个数。
记录拐点时注意一下,处理连续相同的等高的花。
T3:我认为是这次比赛最难的一道题,因为我写的时间最长。
(其实是自己代码能力太渣)。
这题看了大神的题解才算有点眉目,朴素的BFS在大数据上明显超时,如果你不满足于60分的话就要压缩搜索中的冗余状态。
c03-NOIP2013初赛答案解析
一、单选题(15*1.5)1、A,一个字节有8个bit,32位整型变量占用4个字节,故选A。
2、A,二进制11.01转为十进制,(11.01)2 = 1*2+1+0*0.5+1*0.25 = (3.25)10 。
3、B,老和尚给小和尚讲的故事里边有故事本身,递归是函数内部调用函数本身,故选B,递归。
4、D,香农信息论鼻祖。
5、A,一定是满二叉树时拥有2个字节点的节点数最多,最下一层会有2013-1023=990个节点,于是倒数第二层会有990/2=495个节点有2个字节点,从第1层到倒数第三层共有1023-2^9=511个节点,且这些节点都是用2个子节点的节点,所以共有495+511=1006个,选A。
6、B,要使图不联通,只要其中某一个节点不连通即可,所有顶点度最少是3,所以最少需要删除3条边,选B。
7、D,此题最开始一眼扫到的时候脑子进水,跟学生将选B,O(n),实际上不是,计算F1需要1次,计算F2需要一次,计算Fn需要计算F(n-1)的次数加上F(n-2)的次数,所以其实就是计算Fn次,于是答案选择D,至于这个Fn到底是多大,数学上可以计算,它等于O(((1+sqrt(5))/2)^n).8、B,这个必须是B,没有什么好说的,中序遍历保证左边都是小于根的,右边都是大于根的,所以可以保证是一个有序序列。
9、D,A项6和17对11取余都是6发生冲突,B项10的平方和17的平方对11取余都是1发生冲突,C项6的两倍和17的两倍对11取余都是1发生冲突,D 项分别为1,2,3,4,不冲突。
10、D,IPV6地址是128位的。
谢谢网友指正!11、C,二分为6个和6个的顶点,此时边最多,有36条边。
12、B,我的学生几乎全选A去了,因为之前讲题只介绍过ASCII码,但是看到统一二字也应该想到Uni...前缀啊。
13、D,64位非零浮点数强制转换成32位浮点数,两个数会有大小上的细微差别,但不会发生符号变化,因为有专门的符号位。
2013普及组初赛试题
2013年第十九届全国青少年信息学奥林匹克联赛初赛普及组Pascal语言试题一、单项选择题(共20题,每题 1.5分,共计30分;每题有且仅有一个正确选项)1.一个32位整型变量占用()个字节。
A.4B.8 C.32 D.1282.二进制数11.01在十进制下是()。
A.3.25 B.4.125 C. 6.25 D.11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事........................’”A.枚举B.递归C.贪心D.分治4.逻辑表达式()的值与变量A的真假无关。
A.(A∨B)∧¬AB.(A∨B)∧¬BC.(A∧B)∨(¬A∧B)D.(A∨B)∧¬A∧B5.将(2,6,10,17)分别存储到某个地址区间为0~10的哈希表中,如果哈希函数h(x)=(),将不会产生冲突,其中a mod b表示a除以b的余数。
A.x mod11B.x2mod11C.2x mod11D.[X]mod11,其中[X]表示X下取整6.在十六进制表示法中,字母A相当于十进制中的()。
A.9B.10C.15D.167.下图中所使用的数据结构是()。
8.在Windows资源管理器中,用鼠标右键单击一个文件时,会出现一个名为“复制”的操作选项,它的意思是()。
A.用剪切板中的文件替换该文件B.在该文件所在文件夹中,将该文件克隆一份C.将该文件复制到剪切板,并保留原文件D.将该文件复制到剪切板,并删除原文件9.已知一棵二叉树有10个节点,则其中至多有()个节点有2个子节点。
A.4B.5C.6D.710.在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
下图是一个有4个顶点、6条边的连通图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十九届全国青少年信息学奥林匹克联赛初赛提高组Pascal 语言试题竞赛时间:2013 年10 月13 日14:30~16:30选手注意:●试题纸共有12 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项)1. 一个32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282. 二进制数11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4. 1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A. 冯·诺伊曼(John von Neumann)B. 图灵(Alan Turing)C. 欧拉(Leonhard Euler)D. 克劳德·香农(Claude Shannon)5. 已知一棵二叉树有2013 个节点,则其中至多有()个节点有2 个子节点。
A. 1006B. 1007C. 1023D. 10246. 在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图,至少要删去其中的()条边。
A. 2B. 3C. 4D. 57. 斐波那契数列的定义如下:F1 = 1, F2 = 1, F n = F n – 1 + F n – 2 (n ≥ 3)。
如果用下面的函数计算斐波那契数列的第n 项,则其时间复杂度为()。
funtion F(n : longint) : longint;beginif n <= 2 thenF := 1elseF := F(n - 1) + F(n - 2);end;A. O(1)B. O(n)C. O(n2)D. O(F n)8. 二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
那么,二叉查找树的()是一个有序序列。
A. 先序遍历B. 中序遍历C. 后序遍历D. 宽度优先遍历9. 将(2, 6, 10, 17)分别存储到某个地址区间为0~10 的哈希表中,如果哈希函数h(x) =(),将不会产生冲突,其中a mod b 表示a 除以b 的余数。
A. x mod 11B. x2 mod 11C. 2x mod 11D. ⌊√ ⌋mod 11,其中⌊√ ⌋表示√ 下取整10. IPv4 协议使用32 位地址,随着其不断被分配,地址资源日趋枯竭。
因此,它正逐渐被使用()位地址的IPv6 协议所取代。
A. 40B. 48C. 64D. 12811. 二分图是指能将顶点划分成两个部分,每一部分内的顶点间没有边相连的简单无向图。
那么,12 个顶点的二分图至多有()条边。
A. 18B. 24C. 36D. 6612. ()是一种通用的字符编码,它为世界上绝大部分语言设定了统一并且唯一的二进制编码,以满足跨语言、跨平台的文本交换。
目前它已经收录了超过十万个不同字符。
A. ASCIIB. UnicodeC. GBK 2312D. BIG513. 把64 位非零浮点数强制转换成32 位浮点数后,不可能()。
A. 大于原数B. 小于原数C. 等于原数D. 与原数符号相反14. 对一个n 个顶点、m 条边的带权有向简单图用Dijkstra 算法计算单源最短路时,如果不使用堆或其它优先队列进行优化,则其时间复杂度为()。
A. O(mn + n3)B. O(n2)C. O((m + n) log n)D. O((m + n2) log n)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)二、不定项选择题(共5 题,每题1.5 分,共计7.5 分;每题有一个或多个正确选项,多选或少选均不得分)2. ()的平均时间复杂度为O(n log n),其中n 是待排序的元素个数。
A. 快速排序B. 插入排序C. 冒泡排序D. 归并排序3. 以A0 作为起点,对下面的无向图进行深度优先遍历时(遍历的顺序与顶点字母的下标无关),最后一个遍历到的顶点可能是()。
A. A1B. A2C. A3D. A44. ()属于NP 类问题。
A. 存在一个P 类问题B. 任何一个P 类问题C. 任何一个不属于P 类的问题D. 任何一个在(输入规模的)指数时间内能够解决的问题5. CCF NOIP 复赛考试结束后,因()提出的申诉将不会被受理。
A. 源程序文件名大小写错误B. 源程序保存在指定文件夹以外的位置C. 输出文件的文件名错误D. 只提交了可执行文件,未提交源程序三、问题求解(共2 题,每题5 分,共计10 分;每题全部答对得5 分,没有部分分)1. 某系统自称使用了一种防窃听的方式验证用户密码。
密码是n 个数s1, s2, …, s n,均为0或1。
该系统每次随机生成n 个数a1, a2, …,a n,均为0 或1,请用户回答(s1a1 + s2a2 + …+ s n a n)除以2 的余数。
如果多次的回答总是正确,即认为掌握密码。
该系统认为,即使问答的过程被泄露,也无助于破解密码——因为用户并没有直接发送密码。
= ,2 = ,3 = ,4 = 。
12. 现有一只青蛙,初始时在n 号荷叶上。
当它某一时刻在k 号荷叶上时,下一时刻将等概率地随机跳到1, 2, …, k 号荷叶之一上,直至跳到1 号荷叶为止。
当n = 2 时,平均一共跳2 次;当n = 3 时,平均一共跳2.5 次。
则当n = 5 时,平均一共跳次。
1 2 3 4 5四、阅读程序写结果(共4 题,每题8 分,共计32 分)1. varn, i : integer; str :string; isPlalindrome :boolean;beginreadln(str);n := Length(str);isPlalindrome := true;for i := 1 to (n div 2) dobeginif (str[i] <> str[n-i+1]) thenisPlalindrome := false;end;if (isPlalindrome) thenwriteln('Yes')elsewriteln('No');end.输入:abceecba输出:2. vara, b, u, v, i, num : integer;beginreadln(a, b, u, v);num := 0;for i := a to b dobeginif (i mod u = 0) or (i mod v = 0) theninc(num);end;writeln(num);end.输入:1 1000 10 15输出:3. const SIZE = 100;varn, ans, i, j : integer;height, num : array[1..SIZE] of integer;beginread(n);for i := 1 to n dobeginread(height[i]);num[i] := 1;for j := 1 to i-1 dobeginif ((height[j] < height[i]) and (num[j] >= num[i])) thennum[i] := num[j]+1;end;end;ans := 0;for i := 1 to n dobeginif (num[i] > ans) thenans := num[i];end;writeln(ans);end.输入:83 2 5 11 12 74 10输出:4. const SIZE = 100;varn, m, p, count, ans, x, y, i, j : integer;a : array[1..SIZE, 1..SIZE] of integer;procedure colour(x, y : integer);begin inc(count);a[x][y] := 1;if (x > 1) and (a[x-1][y] = 0) thencolour(x-1, y);if (y > 1) and (a[x][y-1] = 0) thencolour(x, y-1);if (x < n) and (a[x+1][y] = 0) thencolour(x+1, y);if (y < m) and (a[x][y+1] = 0) thencolour(x, y+1);end;beginfillchar(a, sizeof(a), 0);readln(n, m, p);for i := 1 to p dobeginread(x, y);a[x][y] := 1;end;ans := 0;for i := 1 to n dofor j := 1 to m doif a[i][j] = 0 thenbegincount := 0;colour(i, j);if (ans < count) thenans := count;end;writeln(ans);end.输入:65 9142324324143455464输出:五、完善程序(第1 题15 分,第2 题13 分,共计28 分)1. (序列重排)全局数组变量a 定义如下:const int SIZE = 100;int a[SIZE], n;它记录着一个长度为n 的序列a[1], a[2], …, a[n]。
现在需要一个函数,以整数p (1 ≤p ≤ n)为参数,实现如下功能:将序列a 的前p 个数与后n –p 个数对调,且不改变这p 个数(或n –p 个数)之间的相对位置。
例如,长度为5 的序列1, 2, 3, 4, 5,当p = 2 时重排结果为3, 4, 5, 1, 2。
有一种朴素的算法可以实现这一需求,其时间复杂度为O(n)、空间复杂度为O(n):procedure swap1(p : longint);vari, j : longint;b : array[1..SIZE] of longint;beginfor i := 1 to p do//(2 分)for i := p + 1 to n dob[i - p] := a[i];for i := 1 to n doa[i] := b[i];end;我们也可以用时间换空间,使用时间复杂度为O(n2)、空间复杂度为O(1)的算法:procedure swap2(p : longint);vari, j, temp : longint;beginfor i := p + 1 to n dobegintemp := a[i];do //(2 分)a[j] := a[j - 1];:= temp; //(2 分)end;end;事实上,还有一种更好的算法,时间复杂度为O(n)、空间复杂度为O(1):procedure swap3(p : longint);varstart1, end1, start2, end2, i, j, temp : longint;beginstart1 := 1;end1 := p;start2 := p + 1;end2 := n;while true dobegini := start1;j := start2;while (i <= end1) and (j <= end2) dobegintemp := a[i];a[i] := a[j];a[j] := temp;inc(i);inc(j);end;if i <= end1 thenstart1 := ithen //(3 分)begin//(3 分)//(3 分)start2 := j;endelsebreak;end;end;2. (两元序列)试求一个整数序列中,最长的仅包含两个不同整数的连续子序列。