全国信息学奥林匹克联赛(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 们,在努力一把也不迟啊。
- 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 。