灰度图存储
nums1 = [int(x) for x in input().split(" ")]
nums2 = [int(x) for x in input().split(" ")]
target_position = nums2[0]*nums1[1] + nums2[1] + 1
total_sum = 0
i=3
while(True):
if(i>=len(nums1)):
break
else :
if (total_sum + nums1[i] < target_position) :
total_sum += nums1[i]
else :
print(nums1[i - 1])
break
i+=2
精准核酸检测
n = int(input())
target = [int(x) for x in input().split(",")]
visited = [0 for x in range(n)]
matrix = []
for i in range(n):
matrix.append([int(x) for x in input().split(",")])
def dfs(index) :
visited[index] = 1
i=0
while(True):
if(i>=n):
break
else :
if (matrix[index][i] == 1 and visited[i]==0) :
dfs(i)
i+=1
for i in range(len(target)):
dfs(target[i])
result = 0
i=0
while(True):
if(i>=n):
break
else :
if (visited[i]==1) :
flag = False
for j in range(len(target)):
if(target[j] == i):
flag = True
break
if(not flag) :
result += 1
i+=1
print(result)
运输时间
- m辆车要在一条不能超车的单行道行驶,距离长度为n;
- 速度快的车追上前车后,以前车速度继续行驶;
- 每辆车固定间隔1小时触发,如第一辆0时出发,第二辆1时出发,依次类推;
- 求最后一辆车到达终点的花费时间;
输入描述:
第一行输入m,n 分别表示车辆数、终点距离,空格隔开
1<m<20
1<n<400
0<s<30
第二行开始,每行为一辆车的速度值;
输出描述:
最后一辆车到达终点花费的时间
示例1
输入:
2 11
3
2
输出:
5.5
示例2
输入:
3 11
3
2
4
输出:
4.5
示例3
输入:
3 20
4
5
6
输出:
3.3333
思路:
- 在前一辆车到达终点前,后一辆车能否追上?
- 能追上,则 t = t_前 - 1
- 不能追上,则 t = s/v
- 动态规划
# __author__ = "laufing"
class TransmitTime:
def solution(self, speeds, n):
"""
:param speeds: m辆车的速度列表
:param n: 总距离
:return:
"""
m = len(speeds)
result = 0
for i in range(m):
if i == 0: # 第一辆车不受影响
result = n / speeds[i]
elif n / speeds[i] > result - 1: # 追不上
result = n / speeds[i]
else: # 在一辆车到达终点前,后一辆追得上
result -= 1
print(result)
if __name__ == '__main__':
transmit_time = TransmitTime()
while True:
try:
m, n = list(map(int, input().strip().split()))
speeds = []
for i in range(m):
speeds.append(int(input().strip()))
transmit_time.solution(speeds, n)
except KeyboardInterrupt:
break