CCF 202009-2:风险人群筛查

这篇博客介绍了一个Java程序,该程序用于计算给定坐标中,有多少人经过和逗留在指定矩形区域内。程序首先读取居民数量、连续逗留点数k和时刻t,然后通过判断坐标是否在矩形内来统计经过和逗留人数。重点在于如何判断连续的点在矩形内,通过累加计数并在点离开矩形时保存最大计数值。最终输出经过和逗留的风险区域人数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目内容

 

 二、题目分析

        这题没什么难点,只要将输入的坐标储存在数组中,然后一个个查看,如果在矩形范围内,就让cnt加一,但是唯一一点就是,我们需要输出经过和逗留的人数,经过的人数很容易得出,只要有一个点在矩形内就可以判定经过风险区,而逗留却需要连续的k个及以上的点在矩形内,所以这题的难点就是如何判断连续的点,在这里我只需要当点在矩形内就加一,如果某一次出去了,就将刚才的数据保存并清零,最后将最大停留时间和k比较,如果大于k,说明此人逗留了,就让逗留人数加一即可。

     

三、完整代码

        

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //居民数量
        int n=sc.nextInt();
        //连续k个点则逗留
        int k=sc.nextInt();
        //时刻t,给2t个数作为坐标
        int t=sc.nextInt();
        //左下右上坐标
        int x1=sc.nextInt();
        int y1=sc.nextInt();
        int x2=sc.nextInt();
        int y2=sc.nextInt();
        int [][]arr=new int[n][2*t];
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<2*t;j++)
            {
                arr[i][j]=sc.nextInt();
            }
        }
        int cntdouliu=0,cntjingguo=0;
        for(int i=0;i<n;i++)
        {
            int tmpcnt=0;
            int max=0;
            for(int j=0;j<2*t;j+=2)
            {
                if(arr[i][j]>=x1&&arr[i][j]<=x2&&arr[i][j+1]>=y1&&arr[i][j+1]<=y2){
                    tmpcnt++;
                }
                else{

                    tmpcnt=0;
                }
                max=Math.max(max,tmpcnt);
            }
            if(max!=0)
                cntjingguo++;
            if(max>=k)
                cntdouliu++;
        }
        System.out.println(cntjingguo);
        System.out.println(cntdouliu);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少๑渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值