202009-1(称检测点查询),202009-2(风险人群筛查)

在这里插入图片描述

//2020.12.9
#include <iostream>
#include <cstdio>
#include <vector>
#include<cmath>
#include <algorithm>

using namespace std;

struct Node {
    int dis, num;

    Node(int dis, int num) : dis(dis), num(num) {};
};

bool cmp(Node a, Node b) {
    if (a.dis != b.dis)
        return a.dis < b.dis;
    else
        return a.num < b.num;
}

int main() {
    int n;
    scanf("%d", &n);
    int x, y;
    scanf("%d%d", &x, &y);
    vector<Node> v;
    int row, col;
    for (int i = 1; i <= n; ++i) {
        scanf("%d%d", &row, &col);
        int dis = pow(row - x, 2.0) + pow(col - y, 2.0);
        v.push_back(Node(dis, i));
    }
    sort(v.begin(), v.end(), cmp);
    for (int i = 0; i < 3; ++i)
        printf("%d\n", v[i].num);

    return 0;
}
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

struct Node {
    int idx, dis;
};

bool cmp(Node p1, Node p2) {
    if (p1.dis != p2.dis)
        return p1.dis < p2.dis;
    else
        return p1.idx < p2.idx;

}

int main() {
    int n;
    scanf("%d", &n);

    int x, y;
    scanf("%d%d", &x, &y);

    vector<Node> v;

    int idx = 1;
    while (n--) {
        int tempX, tempY;
        scanf("%d%d", &tempX, &tempY);
        Node cur;
        cur.idx = idx++;
        cur.dis = (x - tempX) * (x - tempX) + (y - tempY) * (y - tempY);
        v.push_back(cur);
    }

    sort(v.begin(), v.end(), cmp);

    n = 3;
    idx = 0;
    while (n--)
        printf("%d\n", v[idx++]);
        
    return 0;
}

在这里插入图片描述

//2020.12.9
#include <iostream>
#include <cstdio>
#include <vector>
#include<cmath>
#include <algorithm>

using namespace std;

int main() {
    int n, k, t, x1, y1, x2, y2;
    scanf("%d%d%d%d%d%d%d", &n, &k, &t, &x1, &y1, &x2, &y2);
    int r, c;
    int n1 = 0, n2 = 0;
    while (n--) {
        bool f = true, f1 = true;
        int cnt = 0;
        for (int i = 0; i < t; ++i) {
            scanf("%d%d", &r, &c);
            if (r >= x1 && r <= x2 && c >= y1 && c <= y2) {
                if (++cnt == k)
                    f1 = false;
                f = false;
            } else
                cnt = 0;
        }
        if(!f)
            ++n1;
        if(!f1)
            ++n2;
    }
    printf("%d\n%d", n1, n2);

    return 0;
}
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n, k, t, x1, y1, x2, y2;
    scanf("%d%d%d%d%d%d%d", &n, &k, &t, &x1, &y1, &x2, &y2);

    int res1 = 0, res2 = 0;
    while (n--) {
        bool flag1 = false, flag2 = false;
        int cnt = 0;
        for (int i = 0; i < 2 * t; i += 2) {
            int x, y;
            scanf("%d%d", &x, &y);
            if (x >= x1 && x <= x2 && y >= y1 && y <= y2) {
                if (!flag1)
                    res1++, flag1 = true;
                if (!flag2 && ++cnt >= k)
                    res2++, flag2 = true;
            } else
                cnt = 0;

        }
    }
    printf("%d\n%d\n", res1, res2);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值