您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > NOIP2011普及组复赛试题
全国信息学奥林匹克联赛(NOIP2011)复赛普及组第1页共5页全国信息学奥林匹克联赛(NOIP2011)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况中文题目名称数字反转统计单词数瑞士轮表达式的值英文题目与子目录名reversestatswissexp可执行文件名reversestatswissexp输入文件名reverse.instat.inswiss.inexp.in输出文件名reverse.outstat.outswiss.outexp.out每个测试点时限1秒1秒1秒1秒测试点数目10101010每个测试点分值10101010附加样例文件有有有有结果比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统传统二.提交源程序文件名对于C++语言reverse.cppstat.cppswiss.cppexp.cpp对于C语言reverse.cstat.cswiss.cexp.c对于pascal语言reverse.passtat.passwiss.pasexp.pas三.编译命令(不包含任何优化开关)对于C++语言g++-oreversereverse.cpp-lmg++-ostatstat.cpp-lmg++-oswissswiss.cpp-lmg++-oexpexp.cpp-lm对于C语言gcc-oreversereverse.c-lmgcc-ostatstat.c-lmgcc-oswissswiss.c-lmgcc-oexpexp.c-lm对于pascal语言fpcreverse.pasfpcstat.pasfpcswiss.pasfpcexp.pas四.运行内存限制内存上限128M128M128M128M注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。3、全国统一评测时采用的机器配置为:CPUP43.0GHz,内存1G,上述时限以此配置为准。4、特别提醒:评测在NOILinux下进行。全国信息学奥林匹克联赛(NOIP2011)复赛普及组第2页共5页1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。【输入】输入文件名为reverse.in。输入共1行,一个整数N。【输出】输出文件名为reverse.out。输出共1行,一个整数,表示反转后的新数。【输入输出样例1】reverse.inreverse.out123321【输入输出样例2】Reverse.inreverse.out-380-83【数据范围】-1,000,000,000≤N≤1,000,000,000。2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。【输入】输入文件名为stat.in,2行。第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。全国信息学奥林匹克联赛(NOIP2011)复赛普及组第3页共5页【输出】输出文件名为stat.out。只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。【输入输出样例1】stat.instat.outTotobeornottobeisaquestion20【输入输出样例1说明】输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。【输入输出样例2】stat.instat.outtoDidtheOttomanEmpireloseitspoweratthattime-1【输入输出样例2说明】表示给定的单词to在文章中没有出现,输出整数-1。【数据范围】1≤单词长度≤10。1≤文章长度≤1,000,000。3.瑞士轮(swiss.cpp/c/pas)【背景】在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。本题中介绍的瑞士轮赛制,因最早使用于1895年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折衷,既保证了比赛的稳定性,又能使赛程不至于过长。【问题描述】2*N名编号为1~2N的选手共进行R轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。每轮比赛的对阵安排与该轮比赛开始前的排名有关:第1名和第2名、第3名和第4名、……、第2K–1名和第2K名、……、第2N–1名和第2N名,各进行一场比赛。每场比赛胜者得1分,负者得0分。也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。现给定每个选手的初始分数及其实力值,试计算在R轮比赛过后,排名第Q的选手编全国信息学奥林匹克联赛(NOIP2011)复赛普及组第4页共5页号是多少。我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。【输入】输入文件名为swiss.in。输入的第一行是三个正整数N、R、Q,每两个数之间用一个空格隔开,表示有2*N名选手、R轮比赛,以及我们关心的名次Q。第二行是2*N个非负整数s1,s2,…,s2N,每两个数之间用一个空格隔开,其中si表示编号为i的选手的初始分数。第三行是2*N个正整数w1,w2,…,w2N,每两个数之间用一个空格隔开,其中wi表示编号为i的选手的实力值。【输出】输出文件名为swiss.out。输出只有一行,包含一个整数,即R轮比赛结束后,排名第Q的选手的编号。【输入输出样例】swiss.inswiss.out242766710520151【输入输出样例说明】本轮对阵本轮结束后的得分选手编号/①②③④初始/7667第1轮①—④②—③7678第2轮④—①③—②7689第3轮④—③①—②8699第4轮③—④①—②96109【数据范围】对于30%的数据,1≤N≤100;对于50%的数据,1≤N≤10,000;对于100%的数据,1≤N≤100,000,1≤R≤50,1≤Q≤2N,0≤s1,s2,…,s2N≤108,1≤w1,w2,…,w2N≤108。4.表达式的值(exp.cpp/c/pas)【问题描述】对于1位二进制变量定义两种运算:全国信息学奥林匹克联赛(NOIP2011)复赛普及组第5页共5页运算符运算规则 ⊕0⊕0=0 0⊕1=1 1⊕0=1 1⊕1=1 ×0 × 0=0 0 × 1=0 1 × 0=0 1 × 1=1 运算的优先级是:1.先计算括号内的,再计算括号外的。2.“×”运算优先于“⊕”运算,即计算表达式时,先计算×运算,再计算⊕运算。例如:计算表达式A⊕B×C时,先计算B×C,其结果再与A做⊕运算。现给定一个未完成的表达式,例如_+(_*_),请你在横线处填入数字0或者1,请问有多少种填法可以使得表达式的值为0。【输入】输入文件名为exp.in,共2行。第1行为一个整数L,表示给定的表达式中除去横线外的运算符和括号的个数。第2行为一个字符串包含L个字符,其中只包含’(’、’)’、’+’、’*’这4种字符,其中’(’、’)’是左右括号,’+’、’*’分别表示前面定义的运算符“⊕”和“×”。这行字符按顺序给出了给定表达式中除去变量外的运算符和括号。【输出】输出文件exp.out共1行。包含一个整数,即所有的方案数。注意:这个数可能会很大,请输出方案数对10007取模后的结果。【输入输出样例1】exp.inexp.out4+(*)3【输入输出样例说明】 给定的表达式包括横线字符之后为:_+(_*_) 在横线位置填入(0、0、0)、(0、1、0)、(0、0、1)时,表达式的值均为0,所以共有3种填法。 【数据范围】对于20%的数据有0≤L≤10。对于50%的数据有0≤L≤1,000。对于70%的数据有0≤L≤10,000。对于100%的数据有0≤L≤100,000。对于50%的数据输入表达式中不含括号。
本文标题:NOIP2011普及组复赛试题
链接地址:https://www.777doc.com/doc-4503749 .html