平面切分/计算几何

题解:

解决步骤

  • 不要想着一次性就将所有直线放到这些平面上,应该一条一条的把直线放到平面上。

  • 每次放入一条直线,看看这条直线会与平面上已有的直线产生多少个不同的交点。假如会产生a个交点,那么可以知道,放入了这条直线后,部分平面的个数会增加a+1

  • 从第2条直线开始遍历,然后将第二条直线之前的所有直线与它进行判断

n = eval(input())
line = [tuple(map(int,input().split(" "))) for i in range(n)]
se = set(line)
line = list(se)  #去重后的线
if line:
    ans=2
    for i in range(1,len(line)):
        a1,b1=line[i]
        pos=set()
        for j in range(i):
            a2,b2=line[j]
            if a1==a2:
                continue
            x=(b1-b2)/(a1-a2)     #斜率
            y=a1*x+b1
            pos.add((x,y))
        ans += len(pos)+1
print(ans)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值