蓝桥杯 平面切割 Python

简介: 蓝桥杯 平面切割 Python

8e65e25479294f1ea7cb0686a0bac8f4.png

问题分析: 对于我而言,首先将输入储存成[(A1,B1),(A2,B2)...]有点困难了一开始

参考了别人的代码 知道了。利用循环+map赋值 添加到列表当中

N=int(input())
s=[]
for i in range(N):
    a,b=map(int,input().split())
    s.append((a,b))

其次,学到了,计算两直线的交点时,可以定义一个函数 坐标结果精确到10位(差不多了) ,不必再用分数表示(我自己想出来的办法,效率不高就不阐述了)

比如给定列表[(1,2),(2,4),(4,6)....]我们可以这样定义函数求其中某一条直线与先前直线的交点

def getnode(line1,line2):
    A1,A2=line1[0],line2[0]
    B1,B2=line1[1],line2[1]
    if A1==A2:
        return
    else:
        x=(B2-B1)/(A1-A2)
        y=A1*x+B1
        x,y=round(x,10),round(y,10)
        return (x,y)

上面都是一些基本操作,要先熟悉,然后回到本题,下面讲述本题的关键点。

还是找规律

5295450e815a4a2d957c631812e48416.jpg

所以定义c[i]为加入第条直线后 区域的增加量 结果对其求和即可


现在的问题就是:获取一条直线后 求它和先前直线的交点个数:由于交点有可能重合,又只能算一个,我们不妨使用集合,每次做这项工作的时候set.clear(),解出一个交点就update([(#坐标)]),然后计算每次工作set的长度即交点个数,返回到c[i]中  


n = int(input())
lines = []
for i in range(n):
    a, b = list(map(int, input().split()))
    lines.append((a, b))
lines = list(set(lines))#这里是去掉重复直线
n = len(lines)
def getnode(lines1, lines2):#得到两条直线交点,若平行,返回None
    A1 = lines1[0]
    B1 = lines1[1]
    A2 = lines2[0]
    B2 = lines2[1]
    if A1 - A2 == 0:
        return 
    x = (B2 - B1) / (A1 - A2)
    y = A1 * x + B1
    x = round(x, 10)
    y = round(y, 10)
    return (x, y)
ci = [1] * (n + 1)
node = set()
for i in range(1, n):
    node.clear()
    for j in range(i):
        tmp = getnode(lines[i], lines[j])
        if tmp == None: continue
        node.add(tmp)
    ci[i] += len(node)
print(sum(ci[:n]) + 1)        

我是小郑 一个在备战蓝桥杯的大一学生 一起加油!


相关文章
|
2月前
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
139 0
|
2月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
109 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2月前
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
42 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
2月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
43 0
|
7月前
|
算法 机器人 Python
Python实现教程:平面最短路径算法
Python实现教程:平面最短路径算法
114 1
|
7月前
|
索引 Python 容器
【备战蓝桥杯】探索Python内置标准库collections的使用
【备战蓝桥杯】探索Python内置标准库collections的使用
100 1
|
7月前
|
开发者 Python
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
72 1
|
7月前
|
Python
Python数学基础-识图一、平面直角坐标系
Python数学基础-识图一、平面直角坐标系
104 0
|
Python
蓝桥杯 平面切割 Python
蓝桥杯 平面切割 Python
122 0
蓝桥杯 平面切割 Python
|
13天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!