3 条题解
-
1
n,d=map(int,input().split()) #print(n,d) p=[] flag=True for i in range(n): x,y=map(int,input().split()) if abs(y)>d: flag=False break p.append([x-(d*d-y*y)**0.5,x+(d*d-y*y)**0.5]) if flag: # print('ok') for i in range(n-1): for j in range(i,n-1): if p[j][0]>p[j+1][0]: p[j+1],p[j]=p[j],p[j+1] tmp=p[0][1] ans=1 for i in range(1,n): if p[i][0]>tmp: ans+=1 tmp=p[i][1] print(ans) else: print("无法覆盖")
-
0
程序思路还是很简单的,这里直接介绍代码:
Python
from typing import Tuple def gen_point(x: int, y: int, d: int) -> Tuple[float, float]: return x - ( d * d - y * y) ** 0.5, x + (d * d - y * y) ** 0.5 def main() -> None: n, d = map(int, input().split()) x, y = map(int, input().split()) pre_point = gen_point(x, y, d) ans: int = 1 for _ in range(n - 1): x, y = map(int, input().split()) if y > d: print("无法覆盖") return point = gen_point(x, y, d) if point[0] > pre_point[1]: ans += 1 pre_point = point print(ans) return main()
typing
库只是3.8及以下python
用来提供类型注释等的,使数据类型更好维护和更易读无typing纯享版
def main(): n, d = map(int, input().split()) x, y = map(int, input().split()) pre_point = [x - ( d * d - y * y) ** 0.5, x + (d * d - y * y) ** 0.5] ans = 1 for _ in range(n - 1): x, y = map(int, input().split()) if y > d: print("无法覆盖") return point = [x - ( d * d - y * y) ** 0.5, x + (d * d - y * y) ** 0.5] if point[0] > pre_point[1]: ans += 1 pre_point = point print(ans) return main()
-
0
n,d=map(int,input().split()) x=[] y=[] e=[] flag=1 for i in range(n): xi,yi=map(int,input().split()) x.append(xi);y.append(yi) if yi>d: flag=0 break if flag==0: print("无法覆盖") else: for i in range(n-1): for j in range(i+1,n): if x[j]<x[i]: x[i],x[j]=x[j],x[i] y[i],y[j]=y[j],y[i] #print(x) #print(y) for i in range(n): flag=1 if len(e)==0: ei=(d**2-y[i]**2)**0.5+x[i] e.append(ei) else: for tot in e: if (x[i]-tot)**2+y[i]**2<=d**2: flag=0 break if flag==1: ei=(d**2-y[i]**2)**0.5+x[i] e.append(ei) ans=len(e) print(ans) ''' 3 5 6 3 -1 4 5 4 '''
- 1
信息
- ID
- 928
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 131
- 已通过
- 21
- 上传者