广场舞python代码

import math as m
n=int(input())
cor=[list(map(int,input().split()))for _ in range(n)]
ans=0
leftmax,rightmax,upmax,downmax=0,0,0,0
for i in range(len(cor)):
    if cor[i][0]<leftmax:
        leftmax=cor[i][0]
    if cor[i][0]>rightmax:
        rightmax=cor[i][0]
    #########确定四个最端点##########
for i in range(leftmax,rightmax):
    for j in range(len(cor)-1):
        d=[]
        p=[]
        if i in range(cor[j][0],cor[j+1][0]):
            y1=(i-cor[j][0])/(cor[j+1][0]-cor[j][0])*(cor[j+1][1]-cor[j][1])+cor[j][1]
            y2=(i-cor[j][0])/(cor[j+1][0]-cor[j][0])*(cor[j+1][1]-cor[j][1])+cor[j][1]
            d.append((y1,y2))
        d.sort(key=lambda x:x[1]+x[0])
        for k in range(len(d)):
            if k%2==0:
               p.append(int(min(d[k][0],d[k][1])))
            if k % 2 == 1:
               p.append(m.ceil(max(d[k][0],d[k][1])))
        cnt=0
        for i in range(len(p)):
            if i%2==0:
                cnt+=p[i]
            else:
                if p[i]>=p[i-1]:
                    cnt-=p[i-1]
                else:cnt-=p[i]
        ans+=cnt
print(ans)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值