您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 高中教育 > NOIP2017_提高组复赛试题day2
全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第1页共8页CCF全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2(请选手务必仔细阅读本页内容)一.题目概况中文题目名称奶酪宝藏列队英文题目与子目录名cheesetreasurephalanx可执行文件名cheesetreasurephalanx输入文件名cheese.intreasure.inphalanx.in输出文件名cheese.outtreasure.outphalanx.out每个测试点时限1秒1秒2秒测试点数目102020每个测试点分值1055附加样例文件有有有结果比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统运行内存上限256M256M512M二.提交源程序文件名对于C++语言cheese.cpptreasure.cppphalanx.cpp对于C语言cheese.ctreasure.cphalanx.c对于pascal语言cheese.pastreasure.pasphalanx.pas三.编译命令(不包含任何优化开关)对于C++语言g++-ocheesecheese.cpp-lmg++-otreasuretreasure.cpp-lmg++-ophalanxphalanx.cpp-lm对于C语言gcc-ocheesecheese.c-lmgcc-otreasuretreasure.c-lmgcc-ophalanxphalanx.c-lm对于pascal语言fpccheese.pasfpctreasure.pasfpcphalanx.pas注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。3、全国统一评测时采用的机器配置为:CPUAMDAthlon(tm)IIx2240processor,2.8GHz,内存4G,上述时限以此配置为准。4、只提供Linux格式附加样例文件。5、提交的程序代码文件的放置位置请参照各省的具体要求。6、特别提醒:评测在当前最新公布的NOILinux下进行,各语言的编译器版本以其为准。全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第2页共8页1.奶酪(cheese.cpp/c/pas)【问题描述】现有一块大奶酪,它的高度为h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z=0,奶酪的上表面为z=h。现在,奶酪的下表面有一只小老鼠Jerry,它知道奶酪中所有空洞的球心所在的坐标。如果两个空洞相切或是相交,则Jerry可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry则可以从奶酪下表面跑进空洞;如果一个空洞与上表面相切或是相交,Jerry则可以从空洞跑到奶酪上表面。位于奶酪下表面的Jerry想知道,在不破坏奶酪的情况下,能否利用已有的空洞跑到奶酪的上表面去?空间内两点𝑃1(𝑥1,𝑦1,𝑧1)、𝑃2(𝑥2,𝑦2,𝑧2)的距离公式如下:dist(𝑃1,𝑃2)=√(𝑥1−𝑥2)2+(𝑦1−𝑦2)2+(𝑧1−𝑧2)2【输入格式】输入文件名为cheese.in。每个输入文件包含多组数据。输入文件的第一行,包含一个正整数T,代表该输入文件中所含的数据组数。接下来是T组数据,每组数据的格式如下:第一行包含三个正整数n,h和r,两个数之间以一个空格分开,分别代表奶酪中空洞的数量,奶酪的高度和空洞的半径。接下来的n行,每行包含三个整数x、y、z,两个数之间以一个空格分开,表示空洞球心坐标为(𝑥,𝑦,𝑧)。【输出格式】输出文件名为cheese.out。输出文件包含T行,分别对应T组数据的答案,如果在第i组数据中,Jerry能从下表面跑到上表面,则输出“Yes”,如果不能,则输出“No”(均不包含引号)。【输入输出样例1】cheese.incheese.out3241001003251001004252002204YesNoYes全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第3页共8页见选手目录下的cheese/cheese1.in和cheese/cheese1.ans。【输入输出样例1说明】第一组数据,由奶酪的剖面图可见:第一个空洞在(0,0,0)与下表面相切第二个空洞在(0,0,4)与上表面相切两个空洞在(0,0,2)相切输出Yes第二组数据,由奶酪的剖面图可见:两个空洞既不相交也不相切输出No第三组数据,由奶酪的剖面图可见:两个空洞相交且与上下表面相切或相交输出Yes【输入输出样例2】见选手目录下的cheese/cheese2.in和cheese/cheese2.ans。【数据规模与约定】对于20%的数据,n=1,1≤h,r≤10,000,坐标的绝对值不超过10,000。对于40%的数据,1≤n≤8,1≤h,r≤10,000,坐标的绝对值不超过10,000。对于80%的数据,1≤n≤1,000,1≤h,r≤10,000,坐标的绝对值不超过10,000。对于100%的数据,1≤n≤1,000,1≤h,r≤1,000,000,000,T≤20,坐标的绝对值不超过1,000,000,000。全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第4页共8页2.宝藏(treasure.cpp/c/pas)【问题描述】参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了n个深埋在地下的宝藏屋,也给出了这n个宝藏屋之间可供开发的m条道路和它们的长度。小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个宝藏屋距离地面都很远,也就是说,从地面打通一条到某个宝藏屋的道路是很困难的,而开发宝藏屋之间的道路则相对容易很多。小明的决心感动了考古挖掘的赞助商,赞助商决定免费赞助他打通一条从地面到某个宝藏屋的通道,通往哪个宝藏屋则由小明来决定。在此基础上,小明还需要考虑如何开凿宝藏屋之间的道路。已经开凿出的道路可以任意通行不消耗代价。每开凿出一条新道路,小明就会与考古队一起挖掘出由该条道路所能到达的宝藏屋的宝藏。另外,小明不想开发无用道路,即两个已经被挖掘过的宝藏屋之间的道路无需再开发。新开发一条道路的代价是:这条道路的长度×从赞助商帮你打通的宝藏屋到这条道路起点的宝藏屋所经过的宝藏屋的数量(包括赞助商帮你打通的宝藏屋和这条道路起点的宝藏屋)。请你编写程序为小明选定由赞助商打通的宝藏屋和之后开凿的道路,使得工程总代价最小,并输出这个最小值。【输入格式】输入文件名为treasure.in。第一行两个用空格分离的正整数n和m,代表宝藏屋的个数和道路数。接下来m行,每行三个用空格分离的正整数,分别是由一条道路连接的两个宝藏屋的编号(编号为1~n),和这条道路的长度v。【输出格式】输出文件名为treasure.out。输出共一行,一个正整数,表示最小的总代价。【输入输出样例1】treasure.intreasure.out451211331412343414见选手目录下的treasure/treasure1.in与treasure/treasure1.ans【输入输出样例1说明】全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第5页共8页小明选定让赞助商打通了1号宝藏屋。小明开发了道路12,挖掘了2号宝藏。开发了道路14,挖掘了4号宝藏。还开发了道路43,挖掘了3号宝藏。工程总代价为:1×1+1×1+1×2=4(12)(14)(43)【样例输入输出2】treasure.intreasure.out451211331412343425见选手目录下的treasure/treasure2.in与treasure/treasure2.ans。【输入输出样例2说明】小明选定让赞助商打通了1号宝藏屋。小明开发了道路12,挖掘了2号宝藏。开发了道路13,挖掘了3号宝藏。还开发了道路14,挖掘了4号宝藏。工程总代价为:1×1+3×1+1×1=5(12)(13)(14)【输入输出样例3】见选手目录下的treasure/treasure3.in和treasure/treasure3.out。全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第6页共8页【数据规模与约定】对于20%的数据:保证输入是一棵树,1≤n≤8,v≤5000且所有的v都相等。对于40%的数据:1≤n≤8,0≤m≤1000,v≤5000且所有的v都相等。对于70%的数据:1≤n≤8,0≤m≤1000,v≤5000对于100%的数据:1≤n≤12,0≤m≤1000,v≤500000全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第7页共8页3.列队(phalanx.cpp/c/pas)【问题描述】Sylvia是一个热爱学习的女孩子。前段时间,Sylvia参加了学校的军训。众所周知,军训的时候需要站方阵。Sylvia所在的方阵中有n×m名学生,方阵的行数为n,列数为m。为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从1到n×m编上了号码(参见后面的样例)。即:初始时,第i行第j列的学生的编号是(i−1)×m+j。然而在练习方阵的时候,经常会有学生因为各种各样的事情需要离队。在一天中,一共发生了q件这样的离队事件。每一次离队事件可以用数对(𝑥,𝑦)(1≤x≤n,1≤y≤m)描述,表示第x行第y列的学生离队。在有学生离队后,队伍中出现了一个空位。为了队伍的整齐,教官会依次下达这样的两条指令:1.向左看齐。这时第一列保持不动,所有学生向左填补空缺。不难发现在这条指令之后,空位在第x行第m列。2.向前看齐。这时第一行保持不动,所有学生向前填补空缺。不难发现在这条指令之后,空位在第n行第m列。教官规定不能有两个或更多学生同时离队。即在前一个离队的学生归队之后,下一个学生才能离队。因此在每一个离队的学生要归队时,队伍中有且仅有第n行第m列一个空位,这时这个学生会自然地填补到这个位置。因为站方阵真的很无聊,所以Sylvia想要计算每一次离队事件中,离队的同学的编号是多少。注意:每一个同学的编号不会随着离队事件的发生而改变,在发生离队事件后方阵中同学的编号可能是乱序的。【输入格式】输入文件名为phalanx.in。输入共q+1行。第1行包含3个用空格分隔的正整数n,m,q,表示方阵大小是𝑛行m列,一共发生了q次事件。接下来q行按照事件发生顺序描述了q件事件。每一行是两个整数x,y,用一个空格分隔,表示这个离队事件中离队的学生当时排在第x行第y列。【输出格式】输出文件名为phalanx.out。按照事件输入的顺序,每一个事件输出一行一个整数,表示这个离队事件中离队学生的编号。【输入输出样例1】phalanx.inphalanx.out223112212114全国信息学奥林匹克联赛(NOIP2017)复赛提高组day2第8页共8页见选手目录下的phalanx/phalanx1.in与phalanx/phalanx1.ans。【输入输出样例1说明】列队的过程如上图所示,每一行描述了一个事件。在第一个事件中,编号为1的同学离队,这时空位在第一行第一列。接着所有同学向左标齐,这时编号为2的同学向左移动一步,空位移动到第一行第二列。然后所有同学向上标齐,这时编号为4的同学向上一步,这时空位移动到第二行第二列。最后编号为1的同学返回填补到空位中。【样例输入输出2】见选手目录下的phalanx/phalanx2.in与phalanx/phalanx2.ans。【数据规模与约定】数据保证每一个事件满足1≤x≤n,1≤y≤m。
本文标题:NOIP2017_提高组复赛试题day2
链接地址:https://www.777doc.com/doc-4941202 .html