全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day2
CCF 全国信息学奥林匹克联赛(NOIP2015)复赛
提高组day2
(请选手务必仔细阅读本页内容)
一.题目概况
中文题目名称 跳石头 子串 运输计划 transport 英文题目与子目录名 stone substring substring 可执行文件名 stone stone.in transport transport.in 输入文件名 substring.in substring.out 输出文件名 stone.out 1 秒 transport.out 1 秒 每个测试点时限 1 秒 10 测试点数目 10 10 20 5 每个测试点分值 10 有 附加样例文件 有 有 结果比较方式 全文比较(过滤行末空格及文末回车) 题目类型 传统 传统 传统 256M 运行内存上限 128M 128M 二.提交源程序文件名
对于C++语言 stone.cpp substring.cpp transport.cpp transport.c 对于C语言 stone.c substring.c substring.pas 对于pascal语言 stone.pas transport.pas 三.编译命令(不包含任何优化开关)
对于C++语言 g++ -o stone stone.cpp -lm g++ -o substring substring.cpp -lm g++ -o transport transport.cpp -lm gcc -o transport transport.c -lm 对于C语言 gcc -o stone stone.c -lm gcc -o substring substring.c -lm fpcsubstring.pas 对于pascal语言 fpcstone.pas fpctransport.pas 注意事项:
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页共6页
全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day2
1.跳石头
(stone.cpp/c/pas)
【问题描述】
一年一度的“跳石头”比赛又要开始了!
这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。
为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走M块岩石(不能移走起点和终点的岩石)。
【输入格式】
输入文件名为 stone.in。
输入文件第一行包含三个整数L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。
接下来N行,每行一个整数,第i行的整数Di(0 < Di < L)表示第i块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。
【输出格式】
输出文件名为stone.out。
输出文件只包含一个整数,即最短跳跃距离的最大值。
【输入输出样例1】 stone.in stone.out 2552 4 2 11 14 17 21 见选手目录下的stone/stone1.in和stone/stone1.ans。
【输入输出样例1说明】
将与起点距离为2和14的两个岩石移走后,最短的跳跃距离为4(从与起点距离17 的岩石跳到距离 21 的岩石,或者从距离 21 的岩石跳到终点)。
【输入输出样例2】
见选手目录下的stone/stone2.in和stone/stone2.ans。
【数据规模与约定】
对于20%的数据,0≤M≤N≤10。 对于50%的数据,0≤M≤N≤100。
对于100%的数据,0≤M≤N≤50,000,1≤L≤1,000,000,000。
第2页共6页
全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day2
2.子串
(substring.cpp/c/pas)
【问题描述】
有两个仅包含小写英文字母的字符串A和B。现在要从字符串A中取出k个互不重叠的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得这个新串与字符串B相等?注意:子串取出的位置不同也认为是不同的方案。
【输入格式】
输入文件名为substring.in。
第一行是三个正整数n,m,k,分别表示字符串A的长度,字符串B的长度,以及问题描述中所提到的k,每两个整数之间用一个空格隔开。
第二行包含一个长度为n的字符串,表示字符串A。 第三行包含一个长度为m的字符串,表示字符串B。
【输出格式】
输出文件名为substring.out。
输出共一行,包含一个整数,表示所求方案数。由于答案可能很大,所以这里要求输出答案对1,000,000,007取模的结果。
【输入输出样例1】 substring.in 63 1 aabaab aab
【输入输出样例2】 substring.in 6 3 2 aabaab aab
【输入输出样例3】 substring.in substring.out 7 substring.out 2 substring.out 见选手目录下substring/substring1.in与substring/substring1.ans。 见选手目录下substring/substring2.in与substring/substring2.ans。 6 3 3 7 aabaab aab 见选手目录下substring/substring3.in与substring/substring3.ans。
第3页共6页
全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day2
【输入输出样例说明】
所有合法方案如下:(加下划线的部分表示取出的子串) 样例1:aabaab / aabaab
样例2:aabaab /aabaab/ aabaab/ aabaab
aabaab /aabaab/ aabaab
样例3:aabaab /aabaab/aabaab/aabaab
aa b aab / a abaab / aabaab
【输入输出样例4】
见选手目录下substring/substring4.in与substring/substring4.ans。
【数据规模与约定】
对于第1组数据:1≤n≤500,1≤m≤50,k=1;
对于第2组至第3组数据:1≤n≤500,1≤m≤50,k=2; 对于第4组至第5组数据:1≤n≤500,1≤m≤50,k=m;
对于第1组至第7组数据:1≤n≤500,1≤m≤50,1≤k≤m; 对于第1组至第9组数据:1≤n≤1000,1≤m≤100,1≤k≤m; 对于所有10组数据:1≤n≤1000,1≤m≤200,1≤k≤m。
第4页共6页
全国信息学奥林匹克联赛(NOIP2015)复赛
提高组 day2
3. 运输计划
(transport.cpp/c/pas)
【问题描述】
公元2044年,人类进入了宇宙纪元。
L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了L国的所有星球。
小P掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从ui号星球沿最快的宇航路径飞行到vi号星球去。显然,飞船驶过一条航道是需要时间的,对于航道j,任意飞船驶过它所花费的时间为tj,并且任意两艘飞船之间不会产生任何干扰。
为了鼓励科技创新,L国国王同意小P的物流公司参与L国的航道建设,即允许小P 把某一条航道改造成虫洞,飞船驶过虫洞不消耗时间。
在虫洞的建设完成前小P的物流公司就预接了m个运输计划。在虫洞建设完成后,这m个运输计划会同时开始,所有飞船一起出发。当这m个运输计划都完成时,小P的物流公司的阶段性工作就完成了。
如果小P可以自由选择将哪一条航道改造成虫洞,试求出小P的物流公司完成阶段性工作所需要的最短时间是多少?
【输入格式】
输入文件名为transport.in。
第一行包括两个正整数n、m,表示L国中星球的数量及小P公司预接的运输计划的数量,星球从1到n编号。
接下来n-1行描述航道的建设情况,其中第i行包含三个整数ai, bi和ti,表示第i 条双向航道修建在ai与 bi 两个星球之间,任意飞船驶过它所花费的时间为ti。
接下来m行描述运输计划的情况,其中第j行包含两个正整数uj和vj,表示第j个运输计划是从uj号星球飞往vj号星球。
【输出格式】
输出文件名为transport.out。
共1行,包含1个整数,表示小P的物流公司完成阶段性工作所需要的最短时间。
【输入输出样例1】 transport.in transport.out 6 3 1 23 1 64 3 17 4 36 3 55 3 6 2 5 4 5
【输入输出样例1说明】
第5页共6页
11 见选手目录下的transport/transport1.in与transport/transport1.ans。
NOIP2015提高组复赛试题Day2
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)