NOIP提高组复赛试题.docx

上传人:b****6 文档编号:6959698 上传时间:2023-01-13 格式:DOCX 页数:11 大小:102.14KB
下载 相关 举报
NOIP提高组复赛试题.docx_第1页
第1页 / 共11页
NOIP提高组复赛试题.docx_第2页
第2页 / 共11页
NOIP提高组复赛试题.docx_第3页
第3页 / 共11页
NOIP提高组复赛试题.docx_第4页
第4页 / 共11页
NOIP提高组复赛试题.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

NOIP提高组复赛试题.docx

《NOIP提高组复赛试题.docx》由会员分享,可在线阅读,更多相关《NOIP提高组复赛试题.docx(11页珍藏版)》请在冰豆网上搜索。

NOIP提高组复赛试题.docx

NOIP提高组复赛试题

CCF全国信息学奥林匹克联赛(NmP2012)复赛提高组day2

2.1·同余方程

〖问题描述〗

求关于的同余方程三1(mod句的最小正整数解。

输入〗

输入文件为mod.ino

输入只有一行,包含两个正整数用一个空格隔开

输出〗

输出文件为mod.outo

输出只有一行,包含一个正整数№即最小正整数解。

输入数据保证一定有解。

〖输入输出样例〗

mod.in

mod.out

310

7

〖数据范围〗

对于40%的数据,2L000:

对于60%的数据,250,000,000:

对于100%的数据,2,2,000,000,000。

2·借教室(classroom.cpp/c/pas)

问题描述〗

在大学期间,经常需要租借教室。

大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。

教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。

面对海量租借教室的信息,我们自然希望编程解决这个问题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。

共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借dj个教室。

我们假定,租借者对教室的大小、地点没有要求。

即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。

借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。

如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。

这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。

现在我们需要知道,是否会有订单无法完全满足。

如果有,需要通知哪一个申请人修改

输入〗

输入文件为classroom.in

第一行包含两个正整数n,m,表示天数和订单的数量。

第二行包含n个正整数,其中第i个数为ri,表示第i天可用于租借的教室数量。

接下来有m行,每行包含三个正整数dJ,s],t],表示租借的数量,租借开始、结束分别在第几天。

每行相邻的两个数之间均用一个空格隔开。

天数与订单均用从1开始的整数编号。

〖输出〗

输出文件为classroom.outo

如果所有订单均可满足,则输出只有一行,包含一个整数0。

否则(订单无法完全满足)输出两行,第一行输出一个负整数一1,第二行输出需要修改订单的申请人编号。

〖输入输出样例〗

01ssroom.in

classroom.00t

2543

213

324

424

2

输入输出样例说明〗

第1份订单满足后,4天剩余的教室数分别为0,3,2,3。

第2份订单要求第2天到第4天每天提供3个教室,而第3天剩余的教室数为2,因此无法满足。

分配停止,通知第

2个申请人修改订单。

〖数据范围〗

对于10%的数据,有1孓n,m孓10;对于30%的数据,有1孓n,m孓1000;对于70%的数据,有1孓n,m孓105;

对于100%的数据,有1孓n,m孓106,0孓ri,dj孓109,1

3·疫情控制(blockade.cpp/c/pas

〖问题描述〗

H国有n个城市,这n个城市用n-l条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点。

H国的首都爆发了一种危害性极高的传染病。

当局为了控制疫清,不让疫情扩散到边境城市(叶子节点所表示的城市),决定动用军队在一些城市建立检查点,使得从首都到边境城市的每一条路径上都至少有一个检查点,边境城市也可以建立检查点。

但特别要注意的是,首都是不能建立检查点的。

现在,在H国的一些城市中已经驻扎有军队,且一个城市可以驻扎多个军队。

一支军

队可以在有道路连接的城市间移动,并在除首都以外的任意一个城市建立检查点,且只能在一个城市建立检查点。

一支军队经过一条道路从一个城市移动到另一个城市所需要的时间等于道路的长度(单位:

小时)。

请问最少需要多少个小时才能控制疫情。

注意:

不同的军队可以同时移动。

〖输入〗

输入文件名为blockade.ino第一行一个整数n,表示城市个数。

接下来的n.1行,每行3个整数,u、v、w,每两个整数之间用一个空格隔开,表示从城市u到城市v有一条长为w的道路。

数据保证输入的是一棵树,且根节点编号为1。

接下来一行一个整数m,表示军队个数。

接下来一行m个整数,每两个整数之间用一个空格隔开,分别表示这m个军队所驻扎的城市的编号。

〖输出〗

输出文件为b工ockade.outo

共一行,包含一个整数,表示控制疫情所需要的最少时间。

如果无法控制疫情则输出.1。

〖输入输出样例〗

b工ockade.in

blockade.out

4

121

132

343

2

22

3

输入输出样例说明〗

第一支军队在2号点设立检查点,第二支军队从2号点移动到3号点设立检查点,所需时间为3个小时。

〖数据范围〗

保证军队不会驻扎在首都。

对于20%的数据,荃10;

对于40%的数据,2囟50,()w<105;对于60%的数据,2n1000,0

对于80%的数据,2n引0,000;

对于100%的数据,2nn50,000,()w<109

 

CCF全国信息学奥林匹克联赛(NOIP2012)复赛

提高组day1

1.Vigenère密码

(vigenere.cpp/c/pas)

【问题描述】

16世纪法国外交家BlaisedeVigenère设计了一种多表密码加密算法——Vigenère密码。

Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用

C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。

在Vigenère密码中,密钥k是一个字母串,k=k1k2…kn。

当明文M=m1m2…mn时,得到的密文C=c1c2…cn,其中ci=mi®ki,运算®的规则如下表所示:

Vigenère加密在操作时需要注意:

1.®运算忽略参与运算的字母的大小写,并保持字母在明文M中的大小写形式;

2.当明文M的长度大于密钥k的长度时,将密钥k重复使用。

例如,明文M=Helloworld,密钥k=abc时,密文C=Hfnlpyosnd。

明文

H

e

l

l

o

w

o

r

l

d

密钥

a

b

c

a

b

c

a

b

c

a

密文

H

f

n

l

p

y

o

s

n

d

【输入】

输入文件名为vigenere.in。

输入共2行。

第一行为一个字符串,表示密钥k,长度不超过100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。

【输出】

输出文件名为vigenere.out。

输出共1行,一个字符串,表示输入密钥和密文所对应的明文。

【输入输出样例】

vigenere.in

vigenere.out

CompleteVictory

Yvqgpxaimmklongnzfwpvxmniytm

Wherethereisawillthereisaway

 

【数据说明】

对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。

3.国王游戏

(game.cpp/c/pas)

【问题描述】

恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。

首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。

然后,让这n位大臣排成一排,国王站在队伍的最前面。

排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:

排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。

国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。

注意,国王的位置始终在队伍的最前面。

【输入】

输入文件为game.in。

第一行包含一个整数n,表示大臣的人数。

第二行包含两个整数a和b,之间用一个空格隔开,分别表示国王左手和右手上的整数。

接下来n行,每行包含两个整数a和b,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。

【输出】

输出文件名为game.out。

输出只有一行,包含一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。

【输入输出样例】

game.in

game.out

3

11

23

74

46

2

 

【输入输出样例说明】按1、2、3号大臣这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按1、3、2这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按2、1、3这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按2、3、1这样排列队伍,获得奖赏最多的大臣所获得金币数为9;按3、1、2这样排列队伍,获得奖赏最多的大臣所获得金币数为2;按3、2、1这样排列队伍,获得奖赏最多的大臣所获得金币数为9。

因此,奖赏最多的大臣最少获得2个金币,答案输出2。

【数据范围】

对于20%的数据,有1≤n≤10,0

对于60%的数据,有1≤n≤100;

对于60%的数据,保证答案不超过109;

对于100%的数据,有1≤n≤1,000,0

 

4.开车旅行

(drive.cpp/c/pas)

【问题描述】

小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市i的海拔高度为Hi,城市i和城市j之间的距离d[i,j]恰好是这两个城市海拔高度之差的绝对值,即

d[i,j]=|𝐻𝑖−𝐻𝑗|。

旅行过程中,小A和小B轮流开车,第一天小A开车,之后每天轮换一次。

他们计划选择一个城市S作为起点,一直向东行驶,并且最多行驶X公里就结束旅行。

小A和小B的驾驶风格不同,小B总是沿着前进方向选择一个最近的城市作为目的地,而小A总是沿着前进方向选择第二近的城市作为目的地(注意:

本题中如果当前城市到两个城市的距离相同,则认为离海拔低的那个城市更近)。

如果其中任何一人无法按照自己的原则选择目的城市,或者到达目的地会使行驶的总距离超出X公里,他们就会结束旅行。

在启程之前,小A想知道两个问题:

1.对于一个给定的X=X0,从哪一个城市出发,小A开车行驶的路程总数与小B行驶的路程总数的比值最小(如果小B的行驶路程为0,此时的比值可视为无穷大,且两个无穷大视为相等)。

如果从多个城市出发,小A开车行驶的路程总数与小B行驶的路程总数的比值都最小,则输出海拔最高的那个城市。

2.对任意给定的X=Xi和出发城市Si,小A开车行驶的路程总数以及小B行驶的路程总数。

【输入】

输入文件为drive.in。

第一行包含一个整数N,表示城市的数目。

第二行有N个整数,每两个整数之间用一个空格隔开,依次表示城市1到城市N的海拔高度,即H1,H2,……,Hn,且每个Hi都是不同的。

第三行包含一个整数X0。

第四行为一个整数M,表示给定M组Si和Xi。

接下来的M行,每行包含2个整数Si和Xi,表示从城市Si出发,最多行驶Xi公里。

【输出】

输出文件为drive.out。

输出共M+1行。

第一行包含一个整数S0,表示对于给定的X0,从编号为S0的城市出发,小A开车行驶的路程总数与小B行驶的路程总数的比值最小。

接下来的M行,每行包含2个整数,之间用一个空格隔开,依次表示在给定的Si和

Xi下小A行驶的里程总数和小B行驶的里程总数。

【输入输出样例1】

drive.in

drive.out

4

2314

3

4

13

23

33

43

1

11

20

00

00

【输入输出样例1说明】

各个城市的海拔高度以及两个城市间的距离如上图所示。

如果从城市1出发,可以到达的城市为2,3,4,这几个城市与城市1的距离分别为1,1,2,但是由于城市3的海拔高度低于城市2,所以我们认为城市3离城市1最近,城市2离城市1第二近,所以小A会走到城市2。

到达城市2后,前面可以到达的城市为3,4,这两个城市与城市2的距离分别为2,1,所以城市4离城市2最近,因此小B会走到城市4。

到达城市4后,前面已没有可到达的城市,所以旅行结束。

如果从城市2出发,可以到达的城市为3,4,这两个城市与城市2的距离分别为2,1,由于城市3离城市2第二近,所以小A会走到城市3。

到达城市3后,前面尚未旅行的城市为4,所以城市4离城市3最近,但是如果要到达城市4,则总路程为2+3=5>3,所以小B会直接在城市3结束旅行。

如果从城市3出发,可以到达的城市为4,由于没有离城市3第二近的城市,因此旅行还未开始就结束了。

如果从城市4出发,没有可以到达的城市,因此旅行还未开始就结束了。

【输入输出样例2】

drive.in

drive.out

10

45612378910

7

10

17

27

37

47

57

67

77

87

97

107

2

32

24

21

24

51

51

21

20

00

00

 

【输入输出样例2说明】当X=7时,

如果从城市1出发,则路线为1->2->3->8->9,小A走的距离为1+2=3,小B走的距离为1+1=2。

(在城市1时,距离小A最近的城市是2和6,但是城市2的海拔更高,视为与城市1第二近的城市,所以小A最终选择城市2;走到9后,小A只有城市10可以走,没有第2选择可以选,所以没法做出选择,结束旅行)

如果从城市2出发,则路线为2->6->7,小A和小B走的距离分别为2,4。

如果从城市3出发,则路线为3->8->9,小A和小B走的距离分别为2,1。

如果从城市4出发,则路线为4->6->7,小A和小B走的距离分别为2,4。

如果从城市5出发,则路线为5->7->8,小A和小B走的距离分别为5,1。

如果从城市6出发,则路线为6->8->9,小A和小B走的距离分别为5,1。

如果从城市7出发,则路线为7->9->10,小A和小B走的距离分别为2,1。

如果从城市8出发,则路线为8->10,小A和小B走的距离分别为2,0。

如果从城市9出发,则路线为9,小A和小B走的距离分别为0,0(旅行一开始就结束了)。

如果从城市10出发,则路线为10,小A和小B走的距离分别为0,0。

从城市2或者城市4出发小A行驶的路程总数与小B行驶的路程总数的比值都最小,

但是城市2的海拔更高,所以输出第一行为2。

 

【数据范围】对于30%的数据,有1≤N≤20,1≤M≤20;对于40%的数据,有1≤N≤100,1≤M≤100;对于50%的数据,有1≤N≤100,1≤M≤1,000;

对于70%的数据,有1≤N≤1,000,1≤M≤10,000;

对于100%的数据,有1≤N≤100,000,1≤M≤10,000,-1,000,000,000≤Hi≤1,000,000,000,0≤X0≤1,000,000,000,1≤Si≤N,0≤Xi≤1,000,000,000,数据保证Hi互不相同。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1