栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[Python解CSP之路]风险人群筛查

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Python解CSP之路]风险人群筛查

题目

  • 样例1:
    输入
5 2 6 20 40 100 80
100 80 100 80 100 80 100 80 100 80 100 80
60 50 60 46 60 42 60 38 60 34 60 30
10 60 14 62 18 66 22 74 26 86 30 100
90 31 94 35 98 39 102 43 106 47 110 51
0 20 4 20 8 20 12 20 16 20 20 20

输出

3
2
  • 样例2
    输入
1 3 8 0 0 10 10
-1 -1 0 0 0 0 -1 -1 0 0 -1 -1 0 0 0 0

输出

1
0

题解

一开始感觉能直接写,先判断是否在区域范围内,对在范围内的点进行计数,若达到k值就计入停留数据
但是emmm……好像放到一起写不知道哪出错了没过……
先贴上记录一下再看看到底哪出的错……
(烦请大佬指正!)

n,k,t,xl,yd,xr,yu = map(int,input().split())
position = []
passby,stay = 0,0
for _ in range(n):
    position=list(map(int,input().split()))
    flag = -1
    for i in range(0,2*t,2):
        if xl<=position[i]<=xr and yd<=position[i+1]<=yu:
            if flag == -1:
                passby+=1
                flag=1
            elif flag >= k:
                stay+=1
                break
            elif 0<=flag 

多个判断进程的分开写比较靠谱一点,分一部分独立好找问题

def ispass(lis,xl,yd,xr,yu):
    for i in range(0,len(lis),2):
        if xl <= lis[i] <= xr and yd<=lis[i+1]<=yu:
            return True
    return False

def iswait(lis,xl,yd,xr,yu,k):
    time_max,time = 0,0
    for i in range(0,len(lis),2):
        if xl<=lis[i]<=xr and yd<=lis[i+1]<=yu:
            time+=1
        if lis[i]xr or lis[i+1]yu:
            time = 0
        if time > time_max:
            time_max = time
    if time_max>=k:
        return True
    return False

n,k,t,xl,yd,xr,yu = map(int,input().split())
passby,stay = 0,0
for i in range(n):
    lis=list(map(int,input().split()))
    if ispass(lis,xl,yd,xr,yu):
        passby+=1
        if iswait(lis,xl,yd,xr,yu,k):
            stay+=1
print(passby)
print(stay)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号