CCF全国信息学奥林匹克联赛(NOIP2018)普及组复赛试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

全国信息学奥林匹克联赛(NOIP2018)复赛普及组第1页共9页CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况中文题目名称标题统计龙虎斗摆渡车对称二叉树英文题目与子目录名titlefightbustree可执行文件名titlefightbustree输入文件名title.infight.inbus.intree.in输出文件名title.outfight.outbus.outtree.out每个测试点时限1秒1秒2秒1秒测试点数目20252025每个测试点分值5454附加样例文件有有有有结果比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统传统运行内存上限256M256M256M256M二.提交源程序文件名对于C++语言title.cppfight.cppbus.cpptree.cpp对于C语言title.cfight.cbus.ctree.c对于pascal语言title.pasfight.pasbus.pastree.pas三.编译命令(不包含任何优化开关)对于C++语言g++-otitletitle.cpp-lmg++-ofightfight.cpp-lmg++-obusbus.cpp-lmg++-otreetree.cpp-lm对于C语言gcc-otitletitle.c-lmgcc-ofightfight.c-lmgcc-obusbus.c-lmgcc-otreetree.c-lm对于pascal语言fpctitle.pasfpcfight.pasfpcbus.pasfpctree.pas注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。3、全国统一评测时采用的机器配置为:Intel(R)Core(TM)i7-8700KCPU@3.70GHz,内存32GB。上述时限以此配置为准。4、只提供Linux格式附加样例文件。5、特别提醒:评测在当前最新公布的NOILinux下进行,各语言的编译器版本以其为准。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第2页共9页1.标题统计(title.cpp/c/pas)【问题描述】凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。【输入格式】输入文件名为title.in。输入文件只有一行,一个字符串s。【输出格式】输出文件名为title.out。输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。【输入输出样例1】title.intitle.out2343见选手目录下的title/title1.in和title/title1.ans。【输入输出样例1说明】标题中共有3个字符,这3个字符都是数字字符。【输入输出样例2】title.intitle.outCa454见选手目录下的title/title2.in和title/title2.ans。【输入输出样例2说明】标题中共有5个字符,包括1个大写英文字母,1个小写英文字母和2个数字字符,还有1个空格。由于空格不计入结果中,故标题的有效字符数为4个。【数据规模与约定】规定|s|表示字符串s的长度(即字符串中的字符和空格数)。对于40%的数据,1≤|s|≤5,保证输入为数字字符及行末换行符。对于80%的数据,1≤|s|≤5,输入只可能包含大、小写英文字母、数字字符及行末换行符。对于100%的数据,1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第3页共9页2.龙虎斗(fight.cpp/c/pas)【问题描述】轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有𝑛个兵营(自左至右编号1~𝑛),相邻编号的兵营之间相隔1厘米,即棋盘为长度为𝑛−1厘米的线段。𝑖号兵营里有c𝑖位工兵。下面图1为𝑛=6的示例:图1.𝑛=6的示例轩轩在左侧,代表“龙”;凯凯在右侧,代表“虎”。他们以m号兵营作为分界,靠左的工兵属于龙势力,靠右的工兵属于虎势力,而第𝐦号兵营中的工兵很纠结,他们不属于任何一方。一个兵营的气势为:该兵营中的工兵数×该兵营到m号兵营的距离;参与游戏一方的势力定义为:属于这一方所有兵营的气势之和。下面图2为n=6,𝑚=4的示例,其中红色为龙方,黄色为虎方:图2.n=6,𝑚=4的示例游戏过程中,某一刻天降神兵,共有𝑠1位工兵突然出现在了𝑝1号兵营。作为轩轩和凯凯的朋友,你知道如果龙虎双方气势差距太悬殊,轩轩和凯凯就不愿意继续玩下去了。为了让游戏继续,你需要选择一个兵营𝑝2,并将你手里的𝑠2位工兵全部派往兵营𝑝2,使得双方气势差距尽可能小。注意:你手中的工兵落在哪个兵营,就和该兵营中其他工兵有相同的势力归属(如果落在m号兵营,则不属于任何势力)。【输入格式】输入文件名为fight.in。输入文件的第一行包含一个正整数𝑛,代表兵营的数量。接下来的一行包含𝑛个正整数,相邻两数之间以一个空格分隔,第𝑖个正整数代表编号为𝑖的兵营中起始时的工兵数量𝑐𝑖。接下来的一行包含四个正整数,相邻两数间以一个空格分隔,分别代表𝑚,𝑝1,𝑠1,𝑠2。【输出格式】输出文件名为fight.out。输出文件有一行,包含一个正整数,即𝑝2,表示你选择的兵营编号。如果存在多个编号同时满足最优,取最小的编号。【输入输出样例1】fight.infight.out623232346522全国信息学奥林匹克联赛(NOIP2018)复赛普及组第4页共9页见选手目录下的fight/fight1.in和fight/fight1.ans。【输入输出样例1说明】见问题描述中的图2。双方以𝑚=4号兵营分界,有𝑠1=5位工兵突然出现在𝑝1=6号兵营。龙方的气势为:2×(4−1)+3×(4−2)+2×(4−3)=14虎方的气势为:2×(5−4)+(3+5)×(6−4)=18当你将手中的𝑠2=2位工兵派往𝑝2=2号兵营时,龙方的气势变为:14+2×(4−2)=18此时双方气势相等。【输入输出样例2】fight.infight.out6111111654111见选手目录下的fight/fight2.in和fight/fight2.ans。【输入输出样例2说明】双方以𝑚=5号兵营分界,有𝑠1=1位工兵突然出现在𝑝1=4号兵营。龙方的气势为:1×(5−1)+1×(5−2)+1×(5−3)+(1+1)×(5−4)=11虎方的气势为:16×(6−5)=16当你将手中的𝑠2=1位工兵派往𝑝2=1号兵营时,龙方的气势变为:11+1×(5−1)=15此时可以使双方气势的差距最小。【输入输出样例3】见选手目录下的fight/fight3.in和fight/fight3.ans。【数据规模与约定】1𝑚𝑛,1≤𝑝1≤𝑛。对于20%的数据,𝑛=3,𝑚=2,𝑐𝑖=1,𝑠1,𝑠2≤100。另有20%的数据,𝑛≤10,𝑝1=𝑚,𝑐𝑖=1,𝑠1,𝑠2≤100。对于60%的数据,𝑛≤100,𝑐𝑖=1,𝑠1,𝑠2≤100。对于80%的数据,𝑛≤100,𝑐𝑖,𝑠1,𝑠2≤100。对于100%的数据,𝑛≤105,𝑐𝑖,𝑠1,𝑠2≤109。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第5页共9页3.摆渡车(bus.cpp/c/pas)【问题描述】有𝑛名同学要乘坐摆渡车从人大附中前往人民大学,第𝑖位同学在第𝑡𝑖分钟去等车。只有一辆摆渡车在工作,但摆渡车容量可以视为无限大。摆渡车从人大附中出发、把车上的同学送到人民大学、再回到人大附中(去接其他同学),这样往返一趟总共花费𝑚分钟(同学上下车时间忽略不计)。摆渡车要将所有同学都送到人民大学。凯凯很好奇,如果他能任意安排摆渡车出发的时间,那么这些同学的等车时间之和最小为多少呢?注意:摆渡车回到人大附中后可以即刻出发。【输入格式】输入文件名为bus.in。第一行包含两个正整数𝑛,m,以一个空格分开,分别代表等车人数和摆渡车往返一趟的时间。第二行包含𝑛个正整数,相邻两数之间以一个空格分隔,第i个非负整数𝑡𝑖代表第i个同学到达车站的时刻。【输出格式】输出文件名为bus.out。输出一行,一个整数,表示所有同学等车时间之和的最小值(单位:分钟)。【输入输出样例1】bus.inbus.out51344350见选手目录下的bus/bus1.in和bus/bus1.ans。【输入输出样例1说明】同学1和同学4在第3分钟开始等车,等待0分钟,在第3分钟乘坐摆渡车出发。摆渡车在第4分钟回到人大附中。同学2和同学3在第4分钟开始等车,等待0分钟,在第4分钟乘坐摆渡车出发。摆渡车在第5分钟回到人大附中。同学5在第5分钟开始等车,等待0分钟,在第5分钟乘坐摆渡车出发。自此所有同学都被送到人民大学。总等待时间为0。【输入输出样例2】bus.inbus.out5511131554见选手目录下的bus/bus2.in和bus/bus2.ans。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第6页共9页【输入输出样例2说明】同学3在第1分钟开始等车,等待0分钟,在第1分钟乘坐摆渡车出发。摆渡车在第6分钟回到人大附中。同学4和同学5在第5分钟开始等车,等待1分钟,在第6分钟乘坐摆渡车出发。摆渡车在第11分钟回到人大附中。同学1在第11分钟开始等车,等待2分钟;同学2在第13分钟开始等车,等待0分钟。他/她们在第13分钟乘坐摆渡车出发。自此所有同学都被送到人民大学。总等待时间为4。可以证明,没有总等待时间小于4的方案。【输入输出样例3】见选手目录下的bus/bus3.in和bus/bus3.ans。【数据规模与约定】对于10%的数据,𝑛≤10,𝑚=1,0≤𝑡𝑖≤100。对于30%的数据,𝑛≤20,𝑚≤2,0≤𝑡𝑖≤100。对于50%的数据,𝑛≤500,𝑚≤100,0≤𝑡𝑖≤104。另有20%的数据,𝑛≤500,𝑚≤10,0≤𝑡𝑖≤4×106。对于100%的数据,𝑛≤500,𝑚≤100,0≤𝑡𝑖≤4×106。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第7页共9页4.对称二叉树(tree.cpp/c/pas)【问题描述】一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树:1.二叉树;2.将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。下图中节点内的数字为权值,节点外的𝑖𝑑表示节点编号。对称二叉树非对称二叉树(权值不对称)非对称二叉树(结构不对称)原树所有节点的左右子树交换后现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。注意:只有树根的树也是对称二叉树。本题中约定,以节点𝑇为子树根的一棵“子树”指的是:节点𝑇和它的全部后代节点构成的二叉树。【输入格式】输入文件名为tree.in。第一行一个正整数𝑛,表示给定的树的节点的数目,规定节点编号1~n,其中节点1是树根。第二行𝑛个正整数,用一个空格分隔,第𝑖个正整数𝑣𝑖代表节点𝑖的权值。接下来𝑛行,每行两个正整数𝑙𝑖,𝑟𝑖,分别表示节点𝑖的左右孩子的编号。如果不存在左/右孩子,则以−1表示。两个数之间用一个空格隔开。【输出格式】输出文件名为tree.out。输出文件共一行,包含一个整数,表示给定的树的最大对称二叉子树的节点数。全国信息学奥林匹克联赛(NOIP2018)复赛普及组第8页共9页【输入输出样例1】tree.intree.out2132-1-1-11见选手目录下的tree/tree1.in和tree/tree1.ans。【输入输出样例1说明】最大的对

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功