NOIP2015提高组
2015NOIP选手及指导老师须知(Windows)

NOIP2015选手及指导老师须知(windows)一、NOIP2015提高组考试时间为11月7日、8日上午8:30-12:00,普及组考试时间为11月7日下午2:30-6:00。
选手可提前20分钟进入考室,不得携带书包、书、纸、U盘、手机、计算器。
选手需持准考证、身份证(或其它有效证件)按座位号(非准考证号)就座进行考试。
迟到15分钟不得进考场,开考60分钟后方可离场。
二、11月6日下午2:45-5:00为提高组和普及组试机时间。
试机时,提供一道题目(见附录),供选手熟悉考试环境及选手信息的填写。
对于语言环境有任何问题请于6日试机的时候提出。
正式比赛时,每位选手请根据座位号入座。
如发现问题,向监考人示意协助解决。
三、选手提前20分钟入场后,右键单击屏幕右下角的(FrC客户端),填写选手信息(如右图)。
准考证一栏应填写选手准考证号。
其中,FJ两个字母必须大写;“-”不是下划线,而是减号。
在比赛开始前,考务人员将检查选手在FrC客户端中的准考证号。
在收取源程序时,若发现选手使用错误的准考证号或是他人的准考证号,一律以0分处理。
“工作文件夹”由软件默认,一般为最后一个盘,如“F:\”(个别考场根据监考人员通知)。
开始考试后,选手需要在工作文件夹上创建以选手准考证号命名的文件夹。
答题前,由选手为每道试题再单独建立一个子文件夹,子文件夹名与对应的试题英文名相同(英文小写,参见试题封面页),选手提交的每道试题的源程序必须存放在相应的子文件夹下(如右图示例)。
未按规定建立子文件夹、建立的子文件夹名出现错误、或提交的源程序没有存放在相应的子文件夹下等都会导致选手成绩为0分,责任由选手承担。
选手信息必须在考试正式开始前填写完毕,考试开始后不允许更改选手信息。
整个考试过程中,选手不得关闭FrC客户端。
四、每位选手提交的源程序后缀名只能为.c/.pas/.cpp之一,后缀名均用小写字母。
例如:题目有cashier、dune、manhattan三题,某选手分别是用C、Pascal、C++答题,最终提交的源程序为cashier.c、dune.pas、manhattan.cpp。
NOIP2015提高组解题报告

NOIP2015提高组解题报告T1 神奇的幻方【题目大意】告诉你幻方的构造方法,给出N*N幻方的方案。
N≤39且为奇数。
【解题说明】直接模拟即可【代码】#include<cstdio>int n,m,i,j,x,y,a[55][55];int main(){scanf("%d",&n);m=n*n;x=1;y=(n+1)/2;a[x][y]=1;for(i=2;i<=m;a[x][y]=i++)if(x==1&&y!=n)x=n,y++;else if(x!=1&&y==n)y=1,x--;else if(x==1&&y==n)x++,a[x][y]=i;else if(!a[x-1][y+1])x--,y++;else x++;for(i=1;i<=n;i++)for(j=1;j<=n;j++){printf("%d",a[i][j]);if(j<n)printf(" ");else puts("");}}【时间复杂度】O(n^2) 【空间复杂度】O(n^2)【思想难度】6 【编程难度】8 【总用时】5 minT2 信息传递【题目大意】在若干颗基环+内向树中找到一个最小的环。
N≤200000,无自环。
【解题说明】30分做法:Floyd找最小环60分做法:每个点BFS一遍就可以了100分做法:①基环+内向树的找环直接套模板即可②Tarjan 找到一个最小的size不为1的强连通分量即可③BFS/DFS 在暴力的基础上多加一个标记即可④并查集据说这也能做【代码】#include<cstdio>#include<algorithm>#define N 222222using namespace std;int n,i,tm,tp,now,ans,sz,to[N],dfn[N],low[N],st[N];bool is[N];void dfs(int x){dfn[x]=low[x]=++tm;st[++tp]=x;is[x]=1;int y=to[x];if(!dfn[y])dfs(y),low[x]=min(low[x],low[y]);else if(is[y])low[x]=min(low[x],dfn[y]);if(low[x]==dfn[x]){for(sz=now=0;now!=x;)now=st[tp--],sz++;if(sz>1)ans=min(ans,sz);}}int main(){for(ans=1e9,scanf("%d",&n),i=1;i<=n;i++)scanf("%d",&to[i]);for(i=1;i<=n;i++)if(!dfn[i])dfs(i);printf("%d",ans);}【时间复杂度】O(n) 【空间复杂度】O(n)【思想难度】25 【编程难度】25 【总用时】15 minT3 斗地主【题目大意】给你一副斗地主手牌,问你最快几次出完,数据随机,牌数不超过23。
NOIP2015提高组复赛试题

【输入输出样例1】 substring.in
6 3 1
aabaab
aab
substring.out
互
【输入输出样例2】
substring.in
632
aabaab
aab
substring.out
t
【输入输出样例说明】
所有合法方案如下∶(加下划线的部分表示取出的子串)
样例1∶aab aab / aab aab
测试点编号
“工
区
[3
问
100 仰
[100
100 100
100
区el
吕=I
亡
13
二
[15
100 二
100 [15
10 [16
[10
10
[1187
K 闷
了89
10
100
100
100
100
八闷1闪2
100 13
16 18
邻20
10 [19
10
10
分21
10有的手牌都是随机生成的。
1.若(K-1)在第一行但不在最后一列,则将K填在最后一行,(K-1)所在列
的右一列;
2. 若(K-1)在最后一列但不在第一行,则将K填在第一列,(K-1)所在行的上
一行∶
3. 若(K-1)在第一行最后一列,则将K填在(K-1)的正下方∶
4.若(K-1)既不在第一行,也不在最后一列,如果(K-1)的右上方还未填数,
的位置不同也认为是不同的方案。
【输入格式】
第一行是三个正整数n,m,k,分别表示字符串A的长度,字符串B的长度,以及问
题描述中所提到的k,每两个整数之间用一个空格隔开。
noip复习资料(提高组c++版)

if (条件)//如果条件成立,就执行if后面的A,否则执行B。
语句或语句块A
else
语句或语句块B
if (条件1)//实际上,这是if语句内的if语句,即if的嵌套。所以else和if中间要有空格。
语句或语句块A
else if (条件2)
语句或语句块B
……
else
语句或语句块N
2.switch语句:switch表示选择。它根据条件的不同取值来执行不同的语句。格式如下:
前
有一天,我整理了NOIP的笔记,并收集了一些经典算法。不过我感觉到笔记比较凌乱,并且有很多需要修改和补充的内容,于是我又搜集一些资料,包括一些经典习题,在几个月的时间内编写出了《NOIP复习资料》。
由于急于在假期之前打印出来并分发给同校同学(我们学校既没有竞赛班,又没有懂竞赛的老师。我们大家都是自学党),《NOIP复习资料》有很多的错误,还有一些想收录而未收录的内容。
命名空间:很多C++的东西都要引用std命名空间,所以代码中会有“using namespace std;”。
main():所有程序都要从main()开始。
在所有的算法竞赛中,main()的返回值必须是0,否则视为程序异常结束,得分为0分。
语句和语句块:
1.语句:一般情况下,一条语句要用一个分号“;”结束。为了美观和可读性,可以把一条语句扩展成几行,也可以把多个语句写到同一行上。
D.3关于清北学堂198
附录E竞赛简介199
E.1从NOIP到IOI199
E.2NOIP简介199
E.3常用语201
E.4第一次参加复赛……202
附录FNOIP复赛知识点分布204
附录G资料推荐205
历届noip提高组复赛试题

NOI’ 95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛复赛试题(高中组)(上机编程,完成时间:210 分钟)<1>编码问题:设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1 之间的整数,且A[i]≠ A[j](当i≠ j时)。
例如: N=6 时,有:此时,数组 A 的编码定义如下:A[0] 的编码为0;A[i] 的编码为:在A[0] ,A[1]∴上面数组 A 的编码为:A= ( 4,3, 0, 5,1, 2),, A[i-1] 中比 A[i] 的值小的个数(B= (0, 0,0,3,1, 2)i=1 ,2,, N-1 )程序要求解决以下问题:①给出数组 A 后,求出其编码。
②给出数组 A 的编码后,求出 A 中的原数据。
<2> 灯的排列问题:设在一排上有 N 个格子( N≤ 20),若在格子中放置有不同颜色的灯,每种灯的个数记为 N 1, N2, N k( k 表示不同颜色灯的个数)。
放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。
例如: N=8 (格子数)R=2 (红灯数)B=3 (蓝灯数)放置的方法有:R-B 顺序R R B B BR R B B BR R B B BR R B B BR R B B BR R B B BB-R顺序B B B BBBBBBBBBBBBBBR RRRBRRRRRRRR放置的总数为12 种。
数据输入的方式为:NP1(颜色,为一个字母)P2N1(灯的数量)N2Q(结束标记, Q 本身不是灯的颜色)程序要求:求出一种顺序的排列方案及排列总数。
<3> 设有一个四层的积木块,1~ 4 层积木块的数量依次为:5, 6,7, 8如下图所示放置:815851691423414326其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。
NOIP2015提高组day1第二题解题报告

NOIP2015提高组day1第二题解题报告NOIP2015提高组复赛Day1第二题解题报告By 某蒟蒻zrw1.题目大概描述(因为写的时候题目还没放出来)几个小盆友们在传递自己的信息(生日),并且每个小盆友只会把自己知道的信息传给唯一的一个人【但是自己可以收到很多信息,并会在收到信息的下一轮把这些信息传给那个唯一的人】(单相思233333),问多少轮后自己会收到自己一开始传递出去的自己的信息。
输入:第一行一个整数n,表示有n个人接下来n行,每行一个数j,设这是除第一行外的第i行,那么j 表示第i个人只会把信息传给第j个人。
输出:一个整数,表示最少几轮后自己的信息会回到自己手中。
样例输入:52 4 23 1样例输出:3数据规模:100% n<=200000 60% n<=2500 30% 记不住了……2.大概需要什么样的算法根据数据规模,我们可以大概判断需要多少效率的算法,甚至有的时候可以猜出这题用的是什么算法。
对于本题来说,60%大概就是O(n^2)的算法了,一般是裸的暴力回溯或者是暴力广搜,也有用floyd的(我是从NOIP吧上看到的)。
如果要AC的话,算法效率至少要在O(nlogn)以下(log在这里是以2为底不是以10为底)。
然而,本题是有O(n)算法的,下面会讲。
3.我们还是画个图吧(图可能比较难看,但能看就行)画画图,就会知道这是在做一件什么事情了。
以样例数据为例:我们很容易发现,2,3,4,形成了一个环,而1和5,并没有什么卵用……所以在环234中,由于每一轮可以把在上一轮知道的信息传给唯一的下一个人,在234环中,就需要3轮,信息才能传到多画几个图(由于本人很懒,就只画一张特殊情况比较多的小图):(有木有一种贵圈真乱的感觉)我们可以看出来,1,5,6,成了一个环,而2,3,4,8,也成了一个环,7,9,是来打酱油的。
那么对于这两个环来说,因为每一轮可以传递上一轮信息给下一个人,所以显然是1,5,6这个环比较早传完,3轮。
noip2015提高组复赛试题答案

noip2015提高组复赛试题答案一.单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确答案。
)1. 1MB等于()。
A. 1000字节B. 1024字节C. 1000⨯1000字节D. 1024⨯1024字节2. 在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指()。
A. 生产厂家名称B. 硬盘型号C. CPU的型号D. 显示器的型号3. 操作系统的作用是()。
A. 把源程序译成目标程序B. 便于进行数据管理C. 控制和管理系统资源D. 实现硬件之间的连接4. 在计算机内部用于传送、存贮、加工处理的数据或指令都是以()形式进行的。
A. 二进制码B. 八进制码C. 十进制码D. 智能拼音码5. 下列说法正确的是()。
A. CPU的主要任务是执行数据运算和程序控制B. 存储器具有记忆能力,其中信息任何时候都不会丢失C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同D. 个人用户只能使用Wifi的方式连接到Internet6.二进制数00100100和00010100的和是()。
A.00101000B. 01110011C.01000100D. 001110007. 与二进制小数0.1相等的十六进制数是()。
A. 0.8B. 0.4C. 0.2D. 0.18. 所谓中断是指()。
A. 操作系统随意停止一个程序的运行B. 当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程C.因停机而停止一个程序的运行D.电脑死机9. 计算机病毒是()。
A. 通过计算机传播的危害人体健康的一种病毒B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合C.一种由于计算机元器件老化而产生的对生态环境有害的物质D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒10. FTP可以用于()。
A. 远程传输文件B. 发送电子邮件C. 浏览网页D. 网上聊天11.下面哪种软件不属于即时通信软件()。
NOIP2015提高组Pascal试题及参考答案汇总

第二十一届全国青少年信息学奥林匹克联赛初赛提高组Pascal语言试题竞赛时间:2015年10月11日14:30~16:30选手注意:试题纸共有9页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的。
A. 二进制码B. 八进制码C. 十进制码D. 智能拼音码2. 下列说法正确的是()。
A. CPU的主要任务是执行数据运算和程序控制B. 存储器具有记忆能力,其中信息任何时候都不会丢失C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同D. 个人用户只能使用Wifi的方式连接到Internet3. 与二进制小数0.1相等的十六进制数是()。
A. 0.8B. 0.4C. 0.2D. 0.14. 下面有四个数据组,每个组各有三个数据,其中第一个数据为八进制数,第二个数据为十进制数,第三个数据为十六进制数。
这四个数据组中三个数据相同的是()。
A. 120 82 50B. 144 100 68C. 300 200 C8D. 1762 1010 3F25. 线性表若采用链表存储结构,要求内存中可用存储单元地址()。
A. 必须连续B. 部分地址必须连续C. 一定不连续D. 连续不连续均可6. 今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行进栈,进栈,出栈,进栈,进栈,出栈的操作,则此操作完成后,栈S的栈顶元素为()。
A. fB. cC. aD. b7. 前序遍历序列与后序遍历序列相同的二叉树为()。
A. 非叶子结点只有左子树的二叉树B. 只有根结点的二叉树C. 根结点无右子树的二叉树D. 非叶子结点只有右子树的二叉树8. 如果根的高度为1,具有61个结点的完全二叉树的高度为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CCF全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day1
(请选手务必仔细阅读本页内容)
注意事项:
1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz,
内存4G,上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1.神奇的幻方
(magic.cpp/c/pas)
【问题描述】
幻方是一种很神奇的 N∗N 矩阵:它由数字 1,2,3,……,N∗N 构成,且每行、每列及两条对角线上的数字之和都相同。
当 N 为奇数时,我们可以通过以下方法构建一个幻方:
首先将 1 写在第一行的中间。
之后,按如下方式从小到大依次填写每个数 K(K=2,3,…,N∗N) :
1.若(K−1)在第一行但不在最后一列,则将 K 填在最后一行,(K−1)所在列
的右一列;
2.若(K−1)在最后一列但不在第一行,则将 K 填在第一列,(K−1)所在行的上
一行;
3.若(K−1)在第一行最后一列,则将 K 填在(K−1)的正下方;
4.若(K−1)既不在第一行,也不在最后一列,如果(K−1)的右上方还未填数,
则将K填在(K−1)的右上方,否则将 K 填在(K−1)的正下方。
现给定 N,请按上述方法构造 N∗N 的幻方。
【输入格式】
输入文件名为magic.in。
输入文件只有一行,包含一个整数 N,即幻方的大小。
【输出格式】
输出文件名为magic.out。
输出文件包含 N行,每行 N个整数,即按上述方法构造出的 N∗N 的幻方。
相邻两个整数之间用单个空格隔开。
magic/magic1.in magic/magic1.ans
【输入输出样例2】
见选手目录下的magic/magic2.in和magic/magic2.ans。
【数据规模与约定】
对于 100% 的数据,1≤N≤39 且 N 为奇数。
2.信息传递
(message.cpp/c/pas)
【问题描述】
有 n 个同学(编号为1到 n)正在玩一个信息传递的游戏。
在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为T i的同学。
游戏开始时,每人都只知道自己的生日。
之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。
当有人从别人口中得知自己的生日时,游戏结束。
请问该游戏一共可以进行几轮?
【输入格式】
输入文件名为message.in。
输入共2行。
第1行包含1个正整数 n,表示 n 个人。
第2行包含 n 个用空格隔开的正整数 T1,T2,……,T n,其中第i 个整数T i表示编号为 i 的同学的信息传递对象是编号为T i的同学, T i≤n 且 T i≠i。
数据保证游戏一定会结束。
【输出格式】
输出文件名为message.out。
输出共1行,包含1个整数,表示游戏一共可以进行多少轮。
message/message1.in与message/message1.ans。
【输入输出样例1说明】
游戏的流程如图所示。
当进行完第3轮游戏后,4号玩家会听到2号玩家告诉他自己的生日,所以答案为3。
当然,第3轮游戏后,2号玩家、3号玩家都能从自己的消息来源得知自己的生日,同样符合游戏结束的条件。
【样例输入输出2】
见选手目录下的message/message2.in与message/message2.ans。
【数据规模与约定】
对于30%的数据,n≤200;
对于60%的数据,n≤2500;
对于100%的数据,n≤200000。
3. 斗地主
(landlords.cpp/c/pas)
【问题描述】
牛牛最近迷上了一种叫斗地主的扑克游戏。
斗地主是一种使用黑桃、红心、梅花、方片的A到K加上大小王的共54张牌来进行的扑克牌游戏。
在斗地主中,牌的大小关系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<K<A<2<小王<大王,而花色并不对牌的大小产生影响。
每一局游戏中,一副手牌由n张牌组成。
游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。
现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。
请你帮他解决这个问题。
需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。
具体规则如下:
牌型牌型说明牌型举例照片
火箭即双王(双鬼牌)。
炸弹四张同点牌。
如四个A。
单张牌单张牌,比如3。
对子牌两张码数相同的牌。
三张牌三张码数相同的牌。
三带一三张码数相同的牌 + 一张单牌。
例如:
三张3+单4
三带二三张码数相同的牌 + 一对牌。
例如:三
张3+对4
单顺子五张或更多码数连续的单牌(不包括2
点和双王)例如:单7+单8+单9+单10+
单J。
另外,在顺牌(单顺子、双顺子、
三顺子)中,牌的花色不要求相同。
双顺子三对或更多码数连续的对牌(不包括2
点和双王)。
例如:对3+对4+对5。
三顺子二个或更多码数连续的三张牌(不能包
括2点和双王)。
例如:三张3+三张4+
三张5。
四带二四张码数相同的牌+任意两张单牌(或任
意两对牌)例如:四张5+单3+单8或四
张4+对5+对7
【输入格式】
输入文件名为landlords.in。
第一行包含用空格隔开的2个正整数 T,n ,表示手牌的组数以及每组手牌的张数。
接下来 T 组数据,每组数据 n 行,每行一个非负整数对 a i,b i,表示一张牌,其中 a i表示牌的数码,b i表示牌的花色,中间用空格隔开。
特别的,我们用 1 来表示数码A,11表示数码J,12表示数码Q,13表示数码K;黑桃、红心、梅花、方片分别用1-4来表示;小王的表示方法为0 1,大王的表示方法为0 2。
【输出格式】
输出文件名为landlords.out。
共T 行,每行一个整数,表示打光第i组手牌的最少次数。
【输入输出样例1】
【输入输出样例1说明】
共有1组手牌,包含8张牌:方片7,方片8,黑桃9,方片10,黑桃J,黑桃5,方片A以及黑桃A。
可以通过打单顺子(方片7,方片8,黑桃9,方片10,黑桃J),单张牌(黑桃5)以及对子牌(黑桃A以及方片A)在3次内打光。
见选手目录下的landlords/landlords2.in与landlords/landlords2.ans。
【样例输入输出3】
见选手目录下的landlords/landlords3.in与landlords/landlords3.ans。
【数据规模与约定】
对于不同的测试点,我们约定手牌组数 T 与张数 n 的规模如下:。