201609-1 最大波动

文章目录


前言

你好啊,我是努力奔跑的追梦人~我始终相信着未来,一分耕耘一分收获。


提示:以下是本篇文章正文内容,所有题解均使用 C/C++ 编程语言。

#include <iostream>
using namespace std;

bool InArea(int xl, int yd, int xr, int yu, int dstX, int dstY) // 判断(dstX, dstY)是否在区域内
{
    return xl <= dstX && dstX <= xr && yd <= dstY && dstY <= yu;
}

int main()
{
    int n, k, t;
    int xl, yd, xr, yu;

    cin >> n >> k >> t;
    cin >> xl >> yd >> xr >> yu;

    int passNum = 0;
    int stayNum = 0;
    int px, py;
    for (int i = 0; i < n; i++) {
        bool isPass = false; // 是否经过区域
        bool isStay = false; // 是否逗留区域
        int maxKNum = 0; // 最大连续位于区域内
        for (int j = 0; j < t; j++) {
            cin >> px >> py;
            if (InArea(xl, yd, xr, yu, px, py)) { // 在区域内
                isPass = true;
                maxKNum++;
            } else {
                if (maxKNum >= k) {
                    isStay = true;
                }
                maxKNum = 0;//只要有点不满足在区域内,就把maxKnum计0。这样如果maxKnum ≥k就说明连续超过k个点 
            }
        }
        if (isPass) {
            passNum++;
        }
        if (isStay || maxKNum >= k) {
            stayNum++;
        }
    }

    cout << passNum << endl;
    cout << stayNum << endl;

    return 0;
}

总结

未完待续~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值