当前位置:文档之家› 2016年“京胜杯”安徽省大学生程序设计大赛

2016年“京胜杯”安徽省大学生程序设计大赛

2016年‚京胜杯‛安徽省大学生程序设计大赛比赛题目全国大学生信息安全竞赛安徽省赛区组委会安徽省大学生程序设计大赛技术委员会2016年5月24日合肥目录A.砝码称重B. 阵前第一功C. 箭无虚发D. 梯田AGAINE. 转啊转F. 吃在工大G. 木条染色H. 单身晚会I. 恶魔A+B J. YZK的大别墅K. 纸上谈兵A. 砝码称重Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:小明非常喜爱物理,有一天,他对物理实验室中常用的弹簧拉力计产生了兴趣。

实验室中有两种质量不同的砝码,小明分别用a个第一种砝码放在弹簧拉力计上和b个第二种砝码放在弹簧拉力计上,假设每增加单位重量的砝码,弹簧拉力计的长度增加1,那么两次称量弹簧拉力计的长度差是多少呢?(假设拉力计不发生非弹性形变)输入格式:第一行一个整数T,表示有T组数据。

之后T行,每行数据包含四个正整数,分别表示第一种砝码重量a,第一种砝码数量b,第二种砝码重量c,第二种砝码数量d。

T<250<a,b,c,d<=100输出格式:对于每组数据,输出一个正整数,表示弹簧拉力计的长度差值。

输入样例:31 2 3 41 42 21 32 1输出样例:101注解:这是一道简单题,注意条件T<250<a,b,c,d<=100 即可。

B. 阵前第一功Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:A国每个国民都有一定战斗力,每年国家都要对人民的战斗力进行一次排序统计,他们的排序规矩是相同战斗力的排名一样,而且只占一个排序名额。

比如,有5个人:100,100,90,90,70. 两个100的并列第一,称为第一战斗力,两个90的并列第二,称为第二战斗力,依次类推……现在你想查询第K战斗力是多少输入描述:先输入一个整数T,表示T(T<50)组数据。

每组第一行一个正整数N(1000>N>0),表示表示有N个人。

接下里一行N 个正整数ai(2^30>=ai>=0),表示每个人的战斗力。

接下输入一个正整数K(N>=K>0)。

(保证输入都合法)输出描述:输出第K战斗力,输出占一行输入样例:25100 90 90 100 702101 2 3 3 3 400 3 4 3 14输出样例:902注解:这是一道简单题,用简单的排序算法就可以。

C. 箭无虚发Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:JH苦练10年,终于成为了一个神箭手,在下山之前,大师兄YZ不放心,想考验他,只给他一定时间t,同时给他n支箭,最终根据他的表现,考虑他是否能下山。

对于每发一次箭,YZ给他4种成绩(优、良、中、差),JH有三种拉弓以及瞄准时间a ,b,c(a>=b>=c)分别能拿优,良,中等级,如果不拉弓不瞄(直接射),只能拿差(不能中靶)了。

现在JH想知道,在保证自己弹无虚发(不获得差)的情况下,最多能拿多少个优。

如果JH不能做到弹无虚发,输出Oh,my god!输入描述:输入数据包含T组:对于每组数据,第一行为一个整数n,表示总共有n支箭。

0<n<=1000)之后n行,每行包含三个数字a,b,c,分别表示拿对应等级所需要花的时间。

(0<c<=b<=a<=1000)之后一个数字t,表示JH有考核总时间为t(0<=t<=1000000)输出描述:对于每组输入,如果JH能箭无虚发,则输出一个数字x,表示最多能拿到的优的数量。

如果不能,则输出Oh,my god!输入样例:313 2 1123 2 13 2 1423 2 13 2 11输出样例:1Oh,my god!注解:简单题,贪心算法,每次总是先考虑拿优(但是为了保证每次都不脱靶,因此,如果有n支箭,就先从总的考核时间扣掉每一个c,如果总的考核时间不够扣,则输出‚OMG‛,否则再把评分标准降为2,1,0后)。

D. 梯田AGAINTime Limit: 1000 MS Memory Limit: 65536 KB题目描述:大家还记得去年的梯田吗?土豪YZK在一块小岛上有着一大片n*m的梯田,每块1*1的田地都有它的高度。

奴隶们不甘被YZK剥削,他们联合起来决定发动一场海啸淹掉YZK的部分梯田。

奴隶们去年尝试了一下,结果发现,由于土质太过松软,水能够透过土地渗入到相邻的梯田,即对于海啸高度h,梯田中所有小于等于h的土地都会由于土质松软而被被淹没。

现在给你一个n*m的矩阵,代表梯田中每块田地的高度。

然后给定q个询问,每个询问给定一个海啸高度h,问在此高度下,不被淹没的梯田数量是多少。

输入格式:第一行一个整数T,表示测试数据组数。

对于每组测试数据:第一行三个数字n,m,q,表示梯田的行数,列数和询问数。

之后n行,每行m个数字,表示每块田地的高度,梯田高度不大于1000000。

之后q行,每行给出一个海啸高度h,问大于这个高度的梯田有多少块。

0<T<20。

0<n,m<=200。

0<=q<1000。

0<=h<=1000000。

输出格式:对于每个询问,给出一个整数,表示大于这个海啸高度的梯田数量。

输入样例:22 2 21 23 4232 3 31 2 33 4 545输出样例:2161简单题,统计就可以。

由于1000000远小于65536KB,而且矩阵最大规模是200*200,因此直接定义int count[1000000]对各种高度计数即可。

E. 转啊转Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:在二维平面上,有一个固定的圆和一个固定的点(保证该点不在圆上),还有一个动点在圆上以角速度w绕圆心一直转。

在t时刻,连接该动点与定点成一条直线k,求直线k被圆所截线段的长度(即直线k在圆内部分长度)。

动点初始时刻在圆的三点钟方向(即与x轴正方向平行),并以逆时针方向绕圆转。

输入描述:先输入一个整数T,表示T(T<50)组数据。

每组数据一行七个实数a,b,r(r>0),x,y,w(w>=0),t(t>=0) 分别表示圆的圆心坐标(a,b),半径r,固定点坐标(x,y),角速度w,要查询的时刻t。

上述所有数据的绝对值小于10000。

输出描述:输出答案占一行,保留2位小数。

输入样例:11 1 1 3 1 3 0输出样例:2.00角速度定义:一个以弧度为单位的圆(一个圆周为2π,即:360度=2π),在单位时间内所走的弧度即为角速度。

注解:这个题没仔细想,难道不是先推出物理式子,再把数据往里面套吗?就是调用数学库函数F. 吃在工大Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:JH和他的好朋友YZ两名程序员回访母校合工大,准备在这住一段日子,都说‚玩在安大,吃在工大‛,JH又是一名典型吃货,于是决定在工大食堂好好吃一段日子,但是,面对美食诱惑:黄焖鸡、风暴干锅、麻辣香锅、奥尔良烤翅…由于时间有限,JH不知道哪顿饭吃哪个菜好。

于是YZ为了帮助他解决这个问题,也顺便考考他,给他出了一个问题:‚黄焖鸡必须在干锅花菜前面吃,干锅牛肉必须在干锅鱿鱼前面吃….你按这个要求下,就知道吃的顺序啦‛。

JH抓抓头,分分钟写了个程序搞定,现在,让你来写写看?输出一组JH符合条件下吃的食物的序列。

假设JH每顿只吃一种食物,且每顿吃的都不同,食物编号1到N。

输入描述:先输入一个整数T,表示T(T<20)组数据。

每组数据第一行输出一个整数,N,M,分别表示有N(N<=1000)种食物,总共有M(M<5000)个约束条件,接下来M行每行输入两个正整数a,b(n>=a>0,n>=b>0),表示食物a必须在食物b之前吃。

输出描述:各组数据输出答案占一行,输出一组符合条件的序列(要求输出字典序最大的那一组),如果答案不存在,输出‚-1‛。

输入样例:14 31 22 34 3输出样例:4 1 2 3注解:图论(数据结构),拓扑排序的简化版。

G. 木条染色Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:小明是一个非常浪漫的画家,他喜欢画各种奇奇怪怪的画,虽然没人理解他画的究竟是什么东西。

有一天,他突发奇想,对于一根木条,他每次从木条中选取一个区间[l,r]进行染色,多次染色之后,他想知道在[a,b]区间中有几个未被染色的子区间?可惜小明虽然画画非常厉害,但是并不擅长解决这类问题,于是,他拿着这根木条来找你,希望你能够给他帮助。

假设木条无限长,所有查询都在木条长度范围内,未被染色的子区间是指,木条上染过色的区间的间断部分。

输入格式:第一行一个整数T,代表数据组数。

对于每组数据,第一行给出两个整数n,q,分别代表染色的区间个数,以及查询个数。

之后n行,每行两个整数l,r,表示将l到r的区间进行染色,包含l,r 两个节点。

之后q行,每行两个整数a,b,表示询问a到b总共有多少未被染色的子区间。

两组数据之间用一个空行隔开。

T<20n<10000q<1000000<=l<r<10000000<=a<=b<1000000输出格式:对于每次询问,输出一个整数,表示查询结果。

每组数据之后,请输出一个空行。

输入样例:22 31 23 41 33 45 5331 52 85 60 50 99 9输出样例:11121样例解释:对于第一组数据,[0,1),(2,3),(4,+∞)是未染色的子区间,因此查询[1,3]可以找到(2,3)这个子区间,而对于[3,4]不能找到,对于[5,5]可以找到[5,5]。

对于第二组数据,[0,1)和(8,+∞)是未染色的子区间,因此对于[0,5]只有子区间[0,1),对于查询[0,9],有子区间[0,1)和(8,9],对于查询[9,9],有[9,9]这个子区间。

思路:现将区间[a,b]按照b排序,然后合并区间,然后再统计。

应该不难H. 单身晚会Time Limit: 1000 MS Memory Limit: 65536 KB题目描述:ZJ和ZCX在一起很久了,两个人都互生爱意,最终决定喜结良缘,从此踏入浪漫的婚姻殿堂。

但是,ZJ的好基友们想到以后ZJ就不能经常跟他们一起愉快的玩耍了,都觉得非常伤心难过,于是他们决定在最后一晚为ZJ开一场单身晚会,玩整晚紧张刺激的飞行棋。

ZJ的好基友居住在城市的各个地方(每个地方不一定只有一个基友),他们需要从各个地方赶到其中一个朋友的家里来参加这最后的单身PARTY,ZJ被基友们的热情深深感动了,决定对基友们来时的路费进行报销。

相关主题