1 条题解

  • 0
    @ 2025-10-8 17:03:13
    #include <bits/stdc++.h>
    using namespace std;
    int n, m, ans;
    struct node
    {
        char op;
        double a, b, c, d;
    } a[505]; // 储存所有的图形
    double x, y;
    double len(double x1, double y1, double x2, double y2) { return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); } // 求距离
    int main()
    {
        scanf("%d%d\n", &n, &m);
        for (int i = 1; i <= n; i++)
        {
            scanf("%c%lf%lf%lf", &a[i].op, &a[i].a, &a[i].b, &a[i].c);
            if (a[i].op == 'r')
                scanf("%lf", &a[i].d);
            scanf("\n");
        }
        for (int i = 1; i <= m; i++)
        {
            scanf("%lf%lf", &x, &y);
            ans = 0;
            for (int j = 1; j <= n; j++)
            {
                if (a[j].op == 'r')
                {
                    if (min(a[j].a, a[j].c) < x && x < max(a[j].a, a[j].c) && min(a[j].b, a[j].d) < y && y < max(a[j].b, a[j].d))
                        ans++;
                }
                else
                {
                    if (len(x, y, a[j].a, a[j].b) < a[j].c)
                        ans++;
                }
            } // 暴力
            printf("%d\n", ans);
        }
        return 0;
    }
    
    • 1

    *【模拟】统计在矩形和圆内的点数[HNOI2005] 汤姆的游戏

    信息

    ID
    2852
    时间
    500ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    307
    已通过
    75
    上传者