全国信息学奥林匹克联赛(noip2013)复赛试题
NOIP 2013 解题报告
Solution By Doveccl
什么是逆序对呢?
在一个数组 A 中,如果 i>j 且 Ai>Aj ,则称(Ai,Aj)是一个逆序对 比如数组 A={4,1,3,2},有(4,1) , (4,3) , (4,2) , (3,2) 4 个逆序对。 求逆序对可以用定义法,双重循环搜索,O(n2):
for(int i=1;i<n;i++) for(int j=i+1;i<=n;j++) if(a[i]>a[j]) ans++;
第 6 页共 26 页
NOIP 2013 senior
if(b[i]<=b[j]) a[k++]=b[i++]; else {
a[k++]=b[j++]; sum+=(m-i+1); sum%=mod; } } while(i<=m) a[k++]=b[i++]; while(j<=r) a[k++]=b[j++]; return sum; } inline LL merge_sort(int *a,int l,int r,int *b) { LL sum=0; if(l<r) { int m=(l+r)>>1; sum+=merge_sort(a,l,m,b); sum+=merge_sort(a,m+1,r,b); sum+=merge(a,l,m,r,b); sum%=mod; } return sum; } int main() { freopen("match.in","r",stdin); freopen("match.out","w",stdout); int n,i; LL sum; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]), aa[i]=i; for(i=1;i<=n;i++) scanf("%d",&b[i]), bb[i]=i; qs(a,aa,1,n); qs(b,bb,1,n); for(i=1;i<=n;i++) b[aa[i]]=bb[i]; sum=merge_sort(b,1,n,temp); printf("%I64d",sum); return 0; }
NOIP2013普及组C++试题概论
第十九届全国青少年信息学奥林匹克联赛初赛普及组 C++语言试题竞赛时间:2013 年 10 月 13 日 14:30~16:30选手注意:●试题纸共有9 页,答题纸共有 2 页,满分 100 分。
请在答题纸上作答,写在试题纸上的一律无效。
● 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共 20 题,每题 1.5 分,共计 30 分;每题有且仅有一个正确选项)一个字节=8个二进制位1. 一个 32 位整型变量占用(A )个字节。
A. 4B. 8C. 32D. 1282. 二进制数 11.01 在十进制下是( A )。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与( B )算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山 里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个 老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4. 逻辑表达式( C )的值与变量 A 的真假无关。
A. (A ˅ B) ˄ ¬A B. (A ˅ B) ˄ ¬B C. (A ˄ B) ˅ (¬A ˄ B)D. (A ˅ B) ˄ ¬A ˄ B˅:或 ˄:与¬:非5. 将(2, 6, 10, 17)分别存储到某个地址区间为 0~10 的哈希表中,如果哈希函数 h (x )= (D ),将不会产生冲突,其中 a mod b 表示 a 除以 b 的余数。
A. x mod 11 6 17冲突B. x 2 mod 11C. 2x mod 11D.⌊√⌋ mod 11,其中⌊√ ⌋表示√ 下取整6. 在十六进制表示法中,字母 A 相当于十进制中的( B )。
A. 9B. 10C. 15D. 16CCF NOIP2013 初赛普及组 C++语言试题第1页,共9页7.下图中所使用的数据结构是( B )。
NOIP2013年普及组复赛真题解析
NOIP2013年普及组复赛真题解析T1 计数问题解析:对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
枚举每个数的每一位就行。
程序:include<cstdio>#include<iostream>using namespace std;int main(){int n,x;cin>>n>>x;int i,c=0;for(i=1;i<=n;i++){int a=i;while(a!=0){if(a%10==x)c++;a/=10;}}cout<<c;return 0;}===================================================T2 表达式求值解析:对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100;对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤1000;对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100000。
程序:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;char last;char c;int x=0;int a=0,b=1;int sum=0;int main(){int i,j;bool flag=1;do{if(cin>>c);else{flag=0;c='+';//相当于在整个串最后补个+号,以完成全部运算}if(c>='0' && c<='9')x=x*10+c-'0';//读取数else{a=x;//如果读到的不是数字,把之前读到的数存起来x=0;//初始化}if(c=='*'){//处理乘号,方法是先记下这个数,下次读到乘号再计算last=1;b=(a*b)%10000;//有连续乘号时,累乘}if(c=='+'){if(last){//上一个是乘号的情况a=(a*b)%10000;sum=(sum+a)%10000;b=1;last=0;}else sum+=a;//上一个是加号的情况}}while(flag==1);printf("%d",sum%10000);return 0;}===================================================T3解析:Case 1:小朋友的特征值分别为1、3、6、10、15,分数分别为1、2、5、11、21,最大值21对997 的模是21。
第十九届2013全国信息学奥林匹克联赛初赛试题c及解析
第十九届全国xx信息学奥林匹克联赛初赛提高组C++语言试题竞赛时间:2013年10月13日14:30~16:30选手注意:●试题纸共有12页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.一个32位整型变量占用()个字节。
A.4B.8C.32D.1282.二进制数11.01在十进制下是()。
A.3.25B.4.125C.6.25D.11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,xx有个xx在给小xx讲故事:?从前有座山,山里有座庙,xx有个xx在给小xx讲故事:‘从前有座山,山里有座庙,xx有个xx给小xx讲故事....’?A.枚举B.递归C.贪心D.分治4.1948年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A.xx·诺伊曼(John von Neumann)B.图灵(Alan Turing)C.xx(Leonhard Euler)D.克劳德·香农(Claude Shannon)5.已知一棵二叉树有2013个节点,则其中至多有()个节点有2个子节点。
A.1006B.1007C.1023D.10246.在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有5个顶点、8条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A.2B.3C.4D.57.斐波xx数列的定义如下:F1=1,F2=1,Fn=Fn–1+Fn–2(n≥3)。
如果用下面的函数计算斐波xx数列的第n项,则其时间复杂度为()。
int F(int n){if(n<=2)return 1;elsereturn F(n-1)+F(n-2);}A.O(1)B.O(n)C.O(n2)D.O(Fn)8.二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
NOIP2013复赛模拟8解题报告
NOIP2008模拟试题1(4P24)普及组1.报数(read.pas/c/cpp) OIP2010模拟试题4(4P36)[题目描述]CG同学又弄到一批新牛,新牛到了农场以后,首先要学习汉语,数的朗读成为新牛的一个难题,朗读绝对值小于10亿的数。
新牛们知道汉语中有如下的读数规则:1.首先读符号位,然后读整数部分,整数部分之后可能出现小数点,如果有小数部分则小数点一定出现,并且读出小数点之后读小数部分。
2.符号位的读法是:⑴正数,不论正号”+”是否出现,都不必读出符号位;⑵负数的最左边的符号是”-“,读成”负”(以“F”来表示“负”)。
3.整数部分的读法是:⑴如果整数部分不存在或者整数部分全是零则直接读成“零”(以“0”来表示“零”);⑵否则从整数部分中最左边的非零数字开始读起,然后以十、百、千、万、亿(分别以”S”、”B”、”Q”、”W”、“Y”来表示)等数量单位来拼读整数部分。
4.整数部分中:⑴每一个非零数字都必须结合各个相应的数量单位读出来;⑵每一段连续的“零”只能读成一个“零”,但是某一段连续的“零”的左侧或者右侧不存在非零数字(这里只考虑整数部分)则这一段“零”不应该读出来;5.如果有小数部分,则首先读“点”(以“D”来表示“点”),然后从左至右有顺序地读出各个小数位。
在读小数部分的时候不可以使用十、百、千、万、亿等数量单位;但是小数部分的每一个数字都需要读出来,连续的零不可以读成一个“零”,而应该分别读出。
6.如果数中有小数点而没有小数部分,则不应该把小数点读出来。
例如:-0020030004.567应该读成”F2Q03W04D567”,000.89应该读成”0D89”。
请你编写程序帮助新牛把给定的数正确地读出来。
[输入数据]输入文件仅一行,存放了一个数(不超过50字符),其绝对值小于10亿.[输出数据]输出文件仅一行,输出这个数的正确读法。
[样例输入]-0020030004.567[样例输出]F2Q03W04D567program cz;varst,s,t:string;p,i:integer;beginassign(input,'read.in');reset(input);assign(output,'read.out');rewrite(output);readln(st);if st[1]='-' then begindelete(st,1,1);i:=1;while (i<length(st)) do beginif (st[i]<>'0') then beginwrite('F');break;end;inc(i);end;end;p:=pos('.',st);if (p=0) then p:=length(st);i:=1;while (st[i]='0') and (i+1<p) doinc(i);delete(st,1,i-1);p:=pos('.',st)-1;if (p=-1) then p:=length(st);s:='';i:=(p-1) mod 4+1;while (i>0) and (i<=p) do begint:='';if (i>3) thenif (st[i-3]>'0') thent:=t+st[i-3]+'Q'else if (s<>'') and (s[length(s)]<>'0') thent:=t+'0';if (i>2) thenif (st[i-2]>'0') thent:=t+st[i-2]+'B'else if (t<>'') and (t[length(t)]<>'0') thent:=t+'0';if (i>1) thenif (st[i-1]>'0') thent:=t+st[i-1]+'S'else if (t<>'')and(t[length(t)]<>'0') thent:=t+'0';if (i>0) thenif (st[i]>'0') then t:=t+st[i]+'';if (t[length(t)]='0') then delete(t,length(t),1); if (t<>'') then begins:=s+t;case (p-i) div 4 of1:s:=s+'W';2:s:=s+'Y';end;end;inc(i,4);end;if (s='') then s:='0';write(s);if (pos('.',st)>0)and(length(st)>pos('.',st)) thenwrite('D',copy(st,p+2,length(st)-p-1));writeln;close(input);close(output);end.2.背单词(words)源程序名:words.pas/c/cpp输入文件名:word.in输出文件名:word.out时限:1秒问题描述:英语四级考试临近了,小Y却发现他已经把以前学的单词几乎忘光了。
全国青少年信息学奥林匹克联赛试题整合
全国青少年信息学奥林匹克联赛初赛提高组C++语言试题竞赛时间:2013年10月13日14:30~16:30选手注意:试题纸共有12页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.一个32位整型变量占用()个字节。
A.4 B.8 C.32 D.1282.二进制数11.01在十进制下是()。
A.3.25 B.4.125 C.6.25D.11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:?从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’?A.枚举B.递归C.贪心D.分治4.1948年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A.冯·诺伊曼(John von Neumann)B.图灵(Alan Turing)C.欧拉(Leonhard Euler)D.克劳德·香农(Claude Shannon)5.已知一棵二叉树有2013个节点,则其中至多有()个节点有2个子节点。
A.1006B.1007C.1023D.10246.在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有5个顶点、8条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A.2B.3C.4D.57.斐波那契数列的定义如下:F1=1,F2=1,Fn=Fn–1+Fn–2(n≥3)。
如果用下面的函数计算斐波那契数列的第n项,则其时间复杂度为()。
int F(int n){if(n<=2)return 1;elsereturn F(n-1)+F(n-2);}A.O(1)B.O(n)C.O(n2)D.O(F n)8.二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
NOIP2013提高组C试题
第十九届全国青少年信息学奥林匹克联赛初赛提咼组C++语言试题竞赛时间:2013年10月13日14:30-16:30选手注意:试题纸共有12页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上 的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确 选项)1.一个32位整型变量占用()个字节。
4. 1948年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A.冯•诺伊曼(John von Neumann )B. 图灵(Alan Turing )C. 欧拉(Leonhard Euler )D.克劳德•香农(ClaudeShannon )5.已知一棵二叉树有2013个节点,则其中至多有(A. 4B. 8C. 32D. 1282. 二进制数11.01在十进制下是( )。
A. 3.25B. 4.125C. 6.25D. 11.1253.下面的故事与( )算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:山 里有座庙,庙里有个老和尚在给小和尚讲故事: 个老和尚给小和尚讲故事....'?A.枚举B.递归C.贪心 从前有座山,'从前有座山,山里有座庙,庙里有 D.分治)个节点有2个子节点。
A. 1006B. 1007C.1023D. 10246.在一个无向图中,如果任意两点之间都存在路径相连, 图。
右图是一个有 5个顶点、8条边的连通图。
图,至少要删去其中的( )条边。
则称其为连通 若要使它不再是连通9.将(2, 6, 10, 17)分别存储到某个地址区间为 0~10的哈希表中,如果哈希函数h (x )=(),将不会产生冲突,其中a modb 表示a 除以b 的余数。
2B.x mod 11D. ? mod 11,其中?/ 示/取整10. IPv4协议使用32位地址,随着其不断被分配,地址资源日趋枯竭。
NOIP2013普及组模拟试题1
全国信息学奥林匹克联赛(NOIP2013)复赛模拟普及组一.题目概览中文题目名称lignment 消息传递Cow Crossings算周长英文题目名称lignment relay crossings perimeter可执行文件名lignment relay crossings perimeter 输入文件名lignment.in relay.in crossings.in perimeter.in 输出文件名lignmentout relay.out crossings.out perimeter.out 每个测试点时限1秒1秒1秒1秒测试点数目10 10 10 10每个测试点分值10 10 10 10 比较方式全文比较全文比较全文比较全文比较题目类型传统传统传统传统二.提交源程序文件名对于pascal语言alignment pas relay.pas crossings.pas perimeter.pas 对于C语言alignment.c relay.c crossings.c perimeter.c 对于C++语言alignment.cpp relay.cpp crossings.cpp perimeter.cpp三.编译命令(不包含任何优化开关)对于pascal语言fpc queue.pas fpc windows.pas fpc s4.pas fpc book.pas对于C语言gcc –o queuequeue.c gcc –o windowswindows.cgcc –o s4s4.cgcc –o bookbook.c对于C++语言g++ –o queuequeue.cpp g++ –o windowswindows.cppg++ –o s4s4.cppg++ –obookbook.cpp四.运行内存限制运行内存上限50M 50M 50M 50M注意事项:1、文件名(程序名和输入输出文件名)必须使用小写。
第十九届全国奥林匹克信息学联赛初赛(NOIP2013)
第十九届全国青少年信息学奥林匹克联赛初赛提高组C语言试题竞赛时间:2013年10月13日14:30~16:30选手注意:●试题纸共有12页,满分100分。
请在答题纸上做答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分:每题仅有一个正确选项)1.一个32位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282. 二进制数11.01在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事……’”A. 枚举B. 递归C. 贪心D. 分治4. 1948年,()将热力学的熵引入信息通信领域,标志着信息理论的开端。
A. 冯·诺依曼(John von Neumann)B. 图灵 (Alan Turing)C. 欧拉 (Leohard Euler)D. 克劳德·香农(Claude Shannon)5. 已知一棵二叉树有2013个节点,则其中至多有()个节点有两个子节点。
A. 1006B. 1007C. 1023D.10246. 在一个无向图中,如果任意两点之间都存在路径相连,则称之为连通图。
右图是一个右五个顶点、八条边的连通图。
若要使它不再是连通图,至少要删去其中()条边。
A. 2B. 3C. 4D. 57. 斐波那契数列定义如下:F1=1,F2=1,Fn=(n-1)+f(n-2)。
如果用下面的函数计算斐波那契数列的第n项,则其时间复杂度为()。
int F(int n){if(n<=2)return 1;elsereturn F(n-1)+F(n-2)}A. O(1)B. O(n)C. O(n²)D. O(Fn)8. 二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的值、小于其右子树上所有节点的值。
历届NOIP试题及详解
间的整数,且 A[i]≠A[j](当 i≠j 时)。
例如:N=6 时,有:
A=(4,3,0,5,1,2)
此时,数组 A 的编码定义如下:
A[0]的编码为 0;
A[i]的编码为:在 A[0],A[1],……A[i-1]中比 A[i]的值小的个数(i=1,2……N-1)
∴上面数组 A 的编码为:
B=(0,0,0,3,1,2)
输出: A=(3,2,1,0,4,5,6)
<5> 本题共 30 分(10%+10%+10%)
① 数据输入: N=6
P1=R
N1=1
Q
排列方案: R ② 排数列据总输数入=:6 N=6 R
P1=R
NR1=2
P2=Y
N2=1 R
Q
R
排列方案: R ③ 排数列据总输数入=:12N=1R2
P1=RR
R
Y
R R N1= 3
③ 同一种颜色的灯不能分开;
④ 不同颜色的灯之间至少要有一个空位置。
例如:N=8(格子数) R=2(红灯数) B=3(蓝灯数)
放置的方法有:
R-B 顺序
RR
BBB
RR
BBB
RR
BBB
RR
BBB
RR
BBB
B-R 顺序
RR
BBB
BBB
RR
BBB
RR
BBB
RR
BBB
RR
BBB
RR
放置的总数为 12 种。 数据输入的方式为:
提示:文档已分节,可用 word 跳转节功能 本文为本人将 1995-2008 年历届 NOIP 试题、研究成果整理而成,由于“年代久远”所以有不少 资料没有找到。但本人都尽量整理最有价值的信息记录于此。 资料来源皆为网络,若引用请注明出处 一不注意就 208 页了呢~ 其实最初只是想方便自己,看着一下午的成果,就忍不住放到了网络 上。由于赶时间,质量不太好,而且历届 NOIP 的排版也不一样,只是做了粗略的整理、排 版,若有错误之处,敬请谅解。 回首历届 NOIP,甚至比我自己出生的还早的老题,一代代 OIer 就从这条路上走过,作为一个 不大努力的 OIer,我甚至为自己感到愧疚。总之,为了报答一代代出题人、教师、主办方以及 OIer 们,在努力一把也不迟啊。
NOIP2013普及组C++试题
第十九届全国青少年信息学奥林匹克联赛初赛(2013年)由“小码世界”()整理一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1.一个32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282.二进制数11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253.下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4.逻辑表达式()的值与变量A 的真假无关。
A. (A ˅ B) ˄ ¬AB. (A ˅ B) ˄ ¬BC. (A ˄ B) ˅ (¬A ˄ B)D. (A ˅ B) ˄ ¬A ˄ B5.将(2, 6, 10, 17)分别存储到某个地址区间为0~10 的哈希表中,如果哈希函数h(x) =(),将不会产生冲突,其中a mod b 表示a 除以b 的余数。
A. x mod 11B. x2 mod 11C. 2x mod 11D. ⌊√⌋ mod 11,其中⌊√⌋表示√下取整6.在十六进制表示法中,字母A 相当于十进制中的()。
A. 9B. 10C. 15D. 167.下图中所使用的数据结构是()。
A. 哈希表B. 栈C. 队列D. 二叉树8.在Windows 资源管理器中,用鼠标右键单击一个文件时,会出现一个名为“复制”的操作选项,它的意思是()。
A. 用剪切板中的文件替换该文件B. 在该文件所在文件夹中,将该文件克隆一份C. 将该文件复制到剪切板,并保留原文件D. 将该文件复制到剪切板,并删除原文件9.已知一棵二叉树有10 个节点,则其中至多有()个节点有2 个子节点。
noip普及组复赛模拟试题13答案
越野跑【描述】为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练。
贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:奶牛独自进山的时间不得超过M秒(1 <=M<=10,000,000)。
整条山路被贝茜划分成T个长度相同的小段(1 <= T <= 100,000),并且,贝茜用S_i表示第i个小段的路况。
S_i为u,f,d这3个字母之一,它们分别表示第i个小段是上坡、平地,或是下坡。
贝茜要花U秒(1<=U<=100)才能跑完一段上坡路,跑完一段平地的耗时是F 秒(1<=F<=100),跑完一段下坡路要花D秒(1<=D<=100)。
注意,沿山路原路返回的时候,原本是上坡路的路段变成了下坡路,原本是下坡路的路段变成了上坡路。
贝茜想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多远。
【输入格式】* 第1行: 5个用空格隔开的整数:M,T,U,F,以及D*第2..T+1行:第i+1行为1个字母S_i,描述了第i段山路的路况【输出格式】*第1行:输出1个整数,为贝茜在按时回到农场的前提下,最多能跑到多远【样例输入】13 5 3 2 1ufudf【样例输出】3【题解】模拟一下跑步的过程。
用s记录跑到第i段路并返回的时间若s=m则输出i并退出,若s>m则输出I-1并退出。
【参考程序】program dfjk;var i,s,m,t,u,f,d:longint;a:array[1..100000]of char;beginreadln(m,t,u,f,d);for i:=1 to t doreadln(a[i]);s:=0;for i:=1 to t dobegincase a[i] of'u':s:=s+u+d;'f':s:=s+2*f;'d':s:=s+u+d;end;if s>=m then break;end;if s=m then writeln(i);if s>m then writeln(i-1);end.输入85 6 23 12 31ufdfdu 输出2输入985 10 430 325 314ufdfdufuud输出1数字反转(reverse.pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。
NOIP历年复赛提高组试题(2004-2013)
第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。
每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。
因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。
津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。
到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。
有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。
如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。
如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出文件】输出文件save.out包括一行,这一行只包含一个整数。
如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
NOIP2013全国青少年信息学奥林匹克联赛初赛参考答案(提高组PASCAL)
(或count1 = count1 – 1,
或--count1)
2
(4)
dec(count2)
(或count2 := count2 – 1)
count2--
(或count2 = count2 – 1,
或--count2)
2
(5)
cur1 := a[j]
cur1 = a[j]
3
Pascal语言
C++语言
C语言
分值
1.
(1)
n – p +i
2
(2)
i– p + 1
2
(3)
a[i– p]
2
(4)
j <= end2
3
(5)
i(或start2,或end1 + 1)
3
(6)
j – 1
3
2.
(1)
j - 1
3
(2)
cur1
3
(3)
dec(count1)
(或count1 := count1 – 1)
第十九届全国青少年信息学奥林匹克联赛初赛
提高组参考答案
一、单项选择题(共15题,每题1.5分,共计22.5分)
1
2
3
4
5
6
7
8
A
A
B
D
A
B
D
B
9
10
11
12
13
14
15
D
D
C
B
D
B
B
二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,没有部分分)
NOIP2013普及组C试题
第十九届全国青少年信息学奥林匹克联赛初赛普及组C 语言试题竞赛时间:2013 年10 月13 日14:30~16:30选手注意:●试题纸共有9 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 一个32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282. 二进制数11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4. 逻辑表达式()的值与变量A 的真假无关。
A. (A ˅ B) ˅ ¬AB. (A ˅ B) ˅¬BC. (A ˅ B) ˅(¬A ˅ B)D. (A ˅ B) ˅ ¬A ˅ B5. 将(2, 6, 10, 17)分别存储到某个地址区间为0~10 的哈希表中,如果哈希函数h(x) =(),将不会产生冲突,其中a mod b 表示a 除以b 的余数。
A. x mod 11B. x2 mod 11C. 2x mod 11D. ⌊⌋mod 11,其中⌊⌋表示下取整6. 在十六进制表示法中,字母A 相当于十进制中的()。
A. 9B. 10C. 15D. 167. 下图中所使用的数据结构是()。
压入 AA压入 BB A弹出 BA压入 CC AA. 哈希表B. 栈C. 队列D. 二叉树8. 在 Windows 资源管理器中,用鼠标右键单击一个文件时,会出现一个名为“复制”的 操作选项,它的意思是( )。
NOIP2013普及组,复赛试题
CCF全国信息学奥林匹克联赛(NOIP2013)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+,2.71GHz,内存2G,上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在NOI Linux下进行。
1.记数问题(count.cpp/c/pas)【问题描述】试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在1到11中,即在1、2、3、4、5、6、7、8、9、10、11中,数字1出现了4次。
【输入】输入文件名为count.in。
输入共1行,包含2个整数n、x,之间用一个空格隔开。
【输出】输出文件名为count.out。
输出共1行,包含一个整数,表示x出现的次数。
【数据说明】对于100%的数据,1≤n≤1,000,000,0≤x≤9。
2.表达式求值(expr.cpp/c/pas)【问题描述】给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
【输入】输入文件为expr.in。
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到231-1之间的整数。
输入数据保证这一行只有0~ 9、+、*这12种字符。
【输出】输出文件名为expr.out。
输出只有一行,包含一个整数,表示这个表达式的值。
注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。
【输入输出样例1】【输入输出样例2】【输入输出样例说明】样例1计算的结果为8,直接输出8。
样例2计算的结果为1234567891,输出后4位,即7891。
样例3计算的结果为1000000004,输出后4位,即4。
NOIP2013提高组复赛试题
CCF 全国信息学奥林匹克联赛(NOIP2013)复赛提高组 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。
按照顺时针方向给 n 个位置编号,从 0 到 n-1。
最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。
游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n −m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。
现在,一共进行了10^k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为circle.in。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为c ircle.out。
输出共1行,包含1个整数,表示10k 轮后x号小伙伴所在的位置编号。
【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <m <n ,0 ≤ x ≤ n,0 < k< 109。
2.火柴排队(match.cpp/c/pas)【问题描述】涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 99,999,997 取模的结果。
noip复赛模拟试题
noip复赛模拟试题第一题:最大字符(zdzf.c/cpp)读入一串由大写、小写、数字组成的字符(<256位),输出ASCII 表值最大的那个字符出来。
例如:读入:abeADEf3输出:e第二题:盖房子(gfz.c/cpp)题目正文【问题描述】永恒の灵魂最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房子,这个房子必须是正方形的。
但是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵)。
这些瑕疵十分恶心,以至于根本不能在上面盖一砖一瓦。
他希望找到一块最大的正方形无瑕疵土地来盖房子。
【输入格式】输入文件第一行为两个整数n,m(1<=n,m<=1000),接下来n 行,每行m个数字,用空格隔开。
0表示该块土地有瑕疵,1表示该块土地完好。
【输出格式】一个整数,最大正方形的边长。
【输入样例】4 40 1 1 11 1 1 00 1 1 01 1 0 12第三题:IQ(iq.c/cpp)题目正文【问题描述】根据世界某权威学会的一项调查,学信息学的学生IQ非常高。
举个最好的例子,如果我们把学信息学的一些学生调去学数学,那么两个竞赛的学生平均IQ都会提升!!现在给出一群数学竞赛全体学生的IQ和信息学竞赛全体学生IQ,问最多能把几个学信息学的学生调去学数学,而两个竞赛的学生平均IQ都有提升呢?每次只调一个学生,而且每次调配,两个竞赛的学生平均IQ都要提升。
【输入格式】输入数据的第一行一个正整数N,代表数学竞赛班学生的数目。
N <= 100接下来一行,有N个正整数,代表每个数学学生的IQ(1 到 200 之间)。
然后一个整数M,代表信息学竞赛班学生数目 M <= 100接下来一行,有M一个正整数,代表每个信息学竞赛班学生的IQ (1 到 200 之间)输入数据保证信息学学生平均IQ高于数学学生。
输出格式:输出只有一行,一个正整数,代表能从信息学调去学数学的学生的个数。
NOIP2013提高组复赛试题day1+day2
全国信息学奥林匹克联赛(2013)复赛提高组11.转圈游戏()【问题描述】n 个小伙伴(编号从0 到1)围坐一圈玩游戏。
按照顺时针方向给n 个位置编号,从0 到1。
最初,第0 号小伙伴在第0 号位置,第1 号小伙伴在第1 号位置,……,依此类推。
游戏规则如下:每一轮第0 号位置上的小伙伴顺时针走到第m 号位置,第1 号位置小伙伴走到第1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第0 号位置,第1 号位置上的小伙伴走到第1 号位置,……,第1 号位置上的小伙伴顺时针走到第1 号位置。
现在,一共进行了10k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为。
输出共1 行,包含1 个整数,表示10k 轮后x 号小伙伴所在的位置编号。
【输入输出样例】10 3 4 55【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <m <n ,0 ≤ x ≤ n,0 < k< 109。
2.火柴排队()【问题描述】涵涵有两盒火柴,每盒装有n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中表示第一列火柴中第i 个火柴的高度,表示第二列火柴中第i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对99,999,997 取模的结果。
【输入】输入文件为。
共三行,第一行包含一个整数n,表示每盒中火柴的数目。
第二行有n 个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国信息学奥林匹克联赛(NOIP2013 )复赛
普及组
1.记数问题
(count.cpp/c/pas)
【问题描述】
试计算在区间1 到n 的所有整数中,数字x (0 ≤x ≤ 9)共出现了多少次?例如,在1 到11 中,即在1、2、3、4 、5、6、7、8、9、10、11 中,数字1 出现了4 次。
【输入】
输入文件名为count.in。
输入共1 行,包含2 个整数n 、x ,之间用一个空格隔开。
【输出】
输出文件名为count.out。
输出共1 行,包含一个整数,表示x 出现的次数。
【输入输出样例】
count.in count.out
11 1 4
【数据说明】
对于100%的数据,1≤ n ≤ 1,000,000,0 ≤x ≤ 9。
2.表达式求值
(expr.cpp/c/pas)
【问题描述】
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
【输入】
输入文件为expr.in。
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+ ”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0 到231-1 之间的整数。
输入数据保
证这一行只有0~ 9、+ 、*这12 种字符。
【输出】
输出文件名为expr.out。
输出只有一行,包含一个整数,表示这个表达式的值。
注意:当答案长度多于4 位时,请只输出最后4 位,前导0 不输出。
第2 页共5 页
【输入输出样例1】
expr.in expr.out
1+1*3+4 8
【输入输出样例2 】
expr.in expr.out
1+1234567890*1 7891
【输入输出样例3 】
expr.in expr.out
1+1000000003*1 4
【输入输出样例说明】
样例1 计算的结果为8,直接输出8。
样例2 计算的结果为1234567891,输出后4 位,即7891 。
样例3 计算的结果为1000000004,输出后4 位,即4 。
【数据范围】
对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 100;
对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 1000;
对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 100000。
3.小朋友的数字
(number.cpp/c/pas)
【问题描述】
有n 个小朋友排成一列。
每个小朋友手上都有一个数字,这个数字可正可负。
规定每个
小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。
作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),
小朋友分数加上其特征值的最大值。
请计算所有小朋友分数的最大值,输出时保持最大值的符号,将其绝对值对 p 取模后输出。
【输入】
输入文件为number.in。
第一行包含两个正整数n 、p ,之间用一个空格隔开。
第二行包含n 个数,每两个整数之间用一个空格隔开,表示每个小朋友手上的数字。
【输出】
输出文件名为number.out。
输出只有一行,包含一个整数,表示最大分数对p 取模的结果。
【输入输出样例1】
number .in number .out
5 997 21
1 2 3 4 5
【输入输出样例说明】
小朋友的特征值分别为 1、3、6、10、15,分数分别为 1、2、5、11、21,最大值 21
对997 的模是21。
【输入输出样例2 】
number .in number .out
5 7 -1
-1 -1 -1 -1 -1
【输入输出样例说明】
小朋友的特征值分别为-1、-1、-1、-1、-1,分数分别为-1、-2、-2、-2、-2,最大值
-1 对7 的模为-1,输出-1。
【数据范围】
对于50%的数据,1 ≤ n ≤ 1,000,1 ≤ p ≤ 1,000所有数字的绝对值不超过1000;
9 9
对于100%的数据,1 ≤ n ≤ 1,000,000,1 ≤ p ≤ 10 ,其他数字的绝对值均不超
过10 。
4.车站分级
(level.cpp/c/pas)
【问题描述】
一条单向的铁路线上,依次有编号为1, 2, …, n 的n 个火车站。
每个火车站都有一
个级
别,最低为1 级。
现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟
车
次停靠了火车站x ,则始发站、终点站之间所有级别大于等于火车站x 的都必须停靠。
(注
意:起始站和终点站自然也算作事先已知需要停靠的站点)
例如,下表是5 趟车次的运行情况。
其中,前4 趟车次均满足要求,而第5 趟车次由
于
停靠了3 号火车站(2 级)却未停靠途经的6 号火车站(亦为2 级)而不满足要求。
车站编号 1 2 3 4 5 6 7 8
车站级别
3 1 2 1 3 2 1 1 3 车次
1 始→→→停→→→停→终
2 始→→→停→终
3 始→→→→→→→停→→→→→→→终
4 始→停→停→停→停→终
5 始→→→停→→→→→→→终
现有m 趟车次的运行情况(全部满足要求),试推算这n 个火车站至少分为几个不同的
级别。
【输入】
输入文件为level.in 。
第一行包含2 个正整数n, m ,用一个空格隔开。
第i + 1 行(1 ≤ i ≤ m )中,首先是一个正整数s (2 ≤ s ≤ n ),表示第i 趟车次有s 个停
i i i
靠站;接下来有s 个正整数,表示所有停靠站的编号,从小到大排列。
每两个数之间用一个
i
空格隔开。
输入保证所有的车次都满足要求。
【输出】
输出文件为level.out。
输出只有一行,包含一个正整数,即n 个火车站最少划分的级别数。
【输入输出样例】
level.in level.out
9 2 2
4 1 3
5 6
3 3 5 6
9 3 3 4 1 3 5 6
3 3 5 6
3 1 5 9
【数据范围】
对于20% 的数据,1 ≤ n, m ≤ 10 ;
对于50%的数据,1 ≤ n, m ≤ 100 ;
对于100%的数据,1 ≤ n, m ≤ 1000 。