1.
三
角
形
1. 三角形
1.三角形
(
t
r
i
a
n
g
l
e
.
c
p
p
)
(triangle.cpp)
(triangle.cpp)
【问题描述】
凯凯有一把末地水晶剑和一把不死图腾之剑和一把萤石剑,长度分别为a、b、c,他用这三把剑来组成一个三角形剑阵,他想知道这个三角形剑阵是不是直角三角形:
如果是直角三角形,需要输出这个三角形的斜边长的平方;
如果不是直角三角形,需要输出以其中任意两条边为直角边的直角三角形的斜边平方的最大值;
提示:最长边的平方如果等于剩余两边的平方和,这个三角形就是直角三角形。
若最长边为c,如果c2=a2+b2,说明这个三角形是直角三角形。
【输入格式】
输入文件名为 triangle.in。
一行3个空格分隔的整数 a,b,c,表示凯凯的三把剑的长度。
【输出格式】
输出文件名为 triangle.out。
一行1个整数,为题目要求输出的直角三角形斜边平方。
【输入输出样例 1】
triangle.in triangle.out
3 4 5 25
【输入输出样例 1 说明】
组成一个直角三角形,斜边平方为 5 ∗ 5 = 25 5 * 5 = 25 5∗5=25 。
【输入输出样例 2】
triangle.in triangle.out
3 4 6 52
【输入输出样例 2 说明】
不是直角三角形,任意两边为直角边能组成的直角三角形斜边最大值的为 4 ∗ 4 + 6 ∗ 6 = 16 + 36 = 52 4 * 4 + 6 * 6 = 16 + 36 = 52 4∗4+6∗6=16+36=52。
【数据规模与约定】
对于20% 的数据,1≤a<b<c。
对于50% 的数据,1≤a,b,c≤100且组成的三角形是直角三角形。
对于100% 的数据,1≤a,b,c≤100且可以组成三角形。
2.
涂
色
2. 涂色
2.涂色
(
c
o
l
o
r
.
c
p
p
)
(color.cpp)
(color.cpp)
【问题描述】
凯凯最近迷上了《我的世界》,他准备给自己的房子的地板涂色,地板由N×M 个小方块组成,凯凯对自己的地板有如下要求:
<1>地板分为上、中、下三部分,这三部分的比例可以自由控制,但每部分至少占1行。
<2>最上面一部分的地板全部是白色的,中间一部分的地板全部是蓝色的,最下面一部分的地板全部是红色的。
<3>地板一开始是有颜色的,现在需要用新的颜色盖住之前的颜色。
由于凯凯是未成年,所以每周只有三个小时可以玩《我的世界》,所以他希望涂最少的颜色,将房间的地板涂成满足要求的样子。
【输入格式】
输入文件名为 color.in。
第一行是两个整数N,M。
接下来N行表示地板初始颜色,每一个小方块是W(白)、B(蓝)、R(红)中的一个。
【输出格式】
输出文件名为 color.out。
一个整数,表示至少有几块地板需要涂色。
【输入输出样例 1】
color.in color.out
4 5
WRWRW 11
BWRWB
WRWRW
RWBWR
【输入输出样例 1 说明】
地板染色后的状态为:
WWWWW
BBBBB
RRRRR
RRRRR
一共需要改11个格子。
【输入输出样例 2】
color.in color.out
3 3
WWW 1
BBB
RBR
【数据规模与约定】
对于100%的数据,N,M≤50。
3.
滴
滴
打
车
3. 滴滴打车
3.滴滴打车
(
c
a
r
.
c
p
p
)
(car.cpp)
(car.cpp)
【问题描述】
轩轩和凯凯准备去卡其米星球找其他小朋友一起玩《我的世界》。滴滴打车推出了“拼车”活动,对于某一目的地,不论一个人坐车去还是一堆人一起去,总共需要支付的钱是一样的(每辆车上除了司机最多坐4人)。
这时,凯凯家门口聚集了很多小朋友,原来他们也都准备带着自己的模组去卡其米星球,假设有 N 位小朋友准备拼车,此时为0时刻,从凯凯家到卡其米星球需要花 D 元打车费,凯凯想在 S 分钟以前(包括第S分钟)到达卡其米星球,因为太晚了模组会坏掉,现在给出S分钟当中所有 K 辆出租车先后达到凯凯家门口的时间Ti及里面剩余座位Zi。
凯凯心里想:“time is money”,凯凯觉得每个人等车的分钟数等同于花了相同多的钱(比如凯凯等了40分钟,相当于他多额外花了40元钱)。
在保证所有小朋友都能在模组损坏前到达卡其米星球的情况下,请你计算他们最少需要花费多少钱?
【输入格式】
输入文件名为 car.in。
第一行,四个整数,N,K,D,S,具体含义参照题目描述。
接下来有K行,每行两个整数Ti和Zi,表示第i辆车在第Ti分钟到达凯凯家门口,空余的座位数为Zi(到达时间已按先后顺序给出)。
【输出格式】
输出文件名为 car.out。
一行,如果所有小朋友能在模组损坏前到卡其米星球,则输出一个整数,代表所有小朋友最少需要花的钱(单位:元),否则请输出“impossible”。
【输入输出样例 1】
car.in car.out
2 2 10 5 14
1 1
2 2
【输入输出样例 1 说明】
2个小朋友坐第2分钟到达凯凯家门口的车,每个人等2分钟,最少花费为10+2*2=14元。
【数据规模与约定】
对于100%的数据,N ≤ 100,K ≤ 100,D ≤ 100,S ≤ 100,1 ≤ Zi ≤ 4,1≤ Ti ≤ Ti+1 ≤ S。
4.
时
间
4. 时间
4.时间
(
t
i
m
e
.
c
p
p
)
(time.cpp)
(time.cpp)
【问题描述】
凯凯的学校颁布了一条新的规定,要求凯凯要在早上4:00之前到达学校,否则这个
的月考成绩按0分计算。可是凯凯每天都想多睡一会,为了保住自己的成绩,凯凯制作了
一个时间距离传送器,每秒钟可以传送2k千米(k为任意自然数)。
但是,这个机器有个小的缺陷,凯凯在发明它时,用的数据类型为int,所以总的传送距离不能超过231-1千米。凯凯到学校的路可以看做一个有向图,凯凯家在1号点,学校在n号点,每条边的长度均为1km。
凯凯想每天能尽量多睡会儿,请你帮凯凯计算,他最少需要几秒才能到学校。
【输入格式】
输入文件名为 time.in。
第一行是两个整数n,m,表示点的数量和边的数量。
接下来m行,每行两个数字u,v,表示有一条从u通往v的路。
【输出格式】
输出文件名为 time.out。
输出仅一行,一个数字,表示凯凯到学校的最少秒数。
【输入输出样例 1】
time.in time.out
4 4 1
1 1
1 2
2 3
3 4
【输入输出样例 1 说明】
凯凯从家到学校,总路径长度为4千米,需要使用一次时间距离传送器即可。
【数据规模与约定】
对于50%的数据:路径总长度≤1000。
对于100%的数据:n≤50,m≤10000,路径总长度<=
2
31
−
1
2^{31}-1
231−1。