第96题:Py的寻路系统
题目描述:Py是个没有方向感的人,经常在校园内迷路,所以他经常手里拿着一张地图。每天Py都在校园内转来转去,但是Py不是一个喜欢浪费时间的人,每次转悠的时候,他总想找到一条从起点到终点的最短路。现在这个任务就交给了你,希望你给Py设计一个查询系统,Py每次只需要输入起点和终点,你就要告诉Py这两点间的最短路的长度是多少。
现在给你两个整数n和m以及一个三元组列表L,n表示地图上路口的数目,m表示地图上小路的个数,
其中1 <= n <= 100,0 <= m < n(n-1)/2。
列表L由m个三元组构成,每个三元组[a, b, len]表示一条连接路口a和路口b的小路,小路长为len,路口的编号从1开始,即 1 <= a,b <= n,这里的路都是双向的,没有一条路是连接两个相同的路口。
现在Py想从s路口到t路口,请你输出s路口到t路口的最短路径的长度,若不可达,则输出-1.
例如:
n=3,m=3 L=[[1,2,1],[2,3,1],[1,3,1]] s=1, t=2
则输出1,即从路口1到路口2的最短路径长度为1.示
例:输入:n = 3
m = 3
s = 1
t = 2
L = [[1, 2, 1], [2, 3, 1], [1, 3, 1]]
输出:1
============================================================
第97题:圆的面积
题目描述:给你两个圆,每个圆由三个参数表示,x,y,r, 其中(x,y)表示圆心坐标,r表示半径。
现在给你这两个圆的参数,x1, y1, r1; x2,y2,r2, 请你求出这两个圆相交部分的面积,保留小数点后三位数。
如:
x1=20.0,y1=30.0,r1=15.0,x2=40.0,y2=30.0,r2=30.0
则输出608.366。
示例:输入:x1 = 20.0
y1 = 30.0
r1 = 15.0
x2 = 40.0
y2 = 30.0
r2 = 30.0
输出:608.366
============================================================
第98题:寻找临界楼层
题目描述:你是国际民用压缩技术公司(International Civil Pack-technical Company, ICPC)的产品测试员。
现在你有一项任务:测试包有特殊缓冲材料的玻璃围棋子的牢固度。
如果围棋子从某个足够高的楼层落下来就会碎,但如果没有碎,缓冲材料会自动修复损伤部分,
也就是说如果从6楼落下来不碎,从6楼把同一颗棋子丢1000次,它都不会碎(当然在现实中,围棋子从手中多落下几次就会碎)。
我们定义一个临界楼层:围棋子从这个楼层或更高落下来会碎,且围棋子从任何比这个楼层低的楼层落下都不会碎。
如果棋子从1楼丢下来也碎了,临界楼层就是1。
你的任务就是利用你面前这座偶然发现的大厦,寻找手中这种围棋子的临界楼层。
当然,大厦不一定足够高,我们规定如果你从最高层丢棋子仍然没有摔碎棋子,还是算找到了临界楼层。
策略1:如果你只有1颗棋子,那你不得不从1楼开始尝试丢,如果没碎就到2楼丢,还没碎就到3楼丢……
直到棋子碎了,那你现在所在的楼层就是临界楼层(显然这是只用一颗棋子确保能发现临界楼层的唯一方法)。
策略2:你现在有两颗棋子,你可以从10楼开始试,每次上升10层,直到第1颗棋子碎了(比如在60楼);
然后用策略1,从51楼开始用第2颗棋子1层层试上去。这样,如果大厦共100层,你最多只要试20次就能找到这个临界楼层。
但是这不是最佳策略:最佳策略最多只要尝试14次(最佳策略指的是在最坏情况下能用最少次数测出临界楼层的策略)。
现在给出你面前的大厦的楼层数。请你构思出最佳测试策略,用你手中的两颗棋子最多测几次就能确保找到那个临界楼层?
(注意:正如刚才提到的,因为大厦不一定足够高,即使在100层的大厦里你从99层丢棋子没有摔碎,
也不能认定100层一定是临界层,而至少要到100层丢一次。当然,这一次无论棋子是否摔碎都算是找到了临界层)。
现在给你楼层的高度n,输出对于高度为n层的大厦而言测量临界楼层的最佳策略所需的最多次数。
如n=5, 则输出3.
示例:输入:n = 6
输出:3
============================================================
第99题:编辑距离
题目描述:设 A 和 B 是 2 个字符串。要用最少的字符操作将字符串 A 转换为字符串 B。
这里所说的字符操作包括
(1)删除一个字符;
(2)插入一个字符;
(3)将一个字符改为另一个字符。
将字符串 A 变换为字符串 B 所用的最少字符操作数称为字符串 A 到 B 的编辑距离,记为d(A,B)。
试设计一个有效算法,对任给的 2 个字符串 A 和 B,计算出它们的编辑距离 d(A,B)。
如:
A="fxpimu"
B="xwrs"
则输出5.
示例:输入:A = "fxpimu"
B = "xwrs"
输出:5
============================================================
第100题:计算GPA
题目描述:每门课程的成绩分为五个等级:A,B,C,D,F(注意没有E),它们分别代表可以获得4,3,2,1,0个绩点.
现在给你一个由大写字母构成的列表L,请你计算平均绩点,保留小数点后两位。
若L中包含非法成绩等级,则输出-1.
如:
L = ["A", "B", "C", "D", "F"]
则输出2.00
示例:输入:L = ["A", "B", "C", "D", "F"]
输出:2.00