lg2313 [HNOI2005]汤姆的游戏

Posted cj-gjh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lg2313 [HNOI2005]汤姆的游戏相关的知识,希望对你有一定的参考价值。

Problem

原题

Source

这道题目我感觉很简单啊,不是一道省选题的难度(为什么暴力可以过?)
然后我就觉得很GG的是我忘记了.........

#define int double

然后就会光荣的36分
正解的思路就是按照他给出的条件一一枚举,最后就可以了...

Code

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std;
#define ll long long
double dis(double a,double b,double c,double d){
    return sqrt((c-a)*(c-a)+(d-b)*(d-b));
}
const int maxm=510;
int tot1,tot2;
struct node1{
    double x1,x2,y1,y2;
}ra[maxm];
struct node2{
    double x,y,r;
}c[maxm];
int main(){
    int i,j,k,n,m;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        char s;
        cin>>s;
        if(s=='r')
        {
            ++tot1;
            scanf("%lf%lf%lf%lf",&ra[tot1].x1,&ra[tot1].y1,&ra[tot1].x2,&ra[tot1].y2);
        }
        else
        {
            ++tot2;
            scanf("%lf%lf%lf",&c[tot2].x,&c[tot2].y,&c[tot2].r);
        }
    }
    for(i=1;i<=m;i++){
        double x,y;int ans=0;
        scanf("%lf%lf",&x,&y);
        for(j=1;j<=tot1;j++)
            if(x<ra[j].x2 && x>ra[j].x1 && y>ra[j].y1 && y<ra[j].y2)ans++;
        for(j=1;j<=tot2;j++)
            if(dis(c[j].x,c[j].y,x,y)<c[j].r)ans++;
        printf("%d\n",ans);
    }
    return 0;
}

以上是关于lg2313 [HNOI2005]汤姆的游戏的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1202 HNOI2005—狡猾的商人

BZOJ 1202 [HNOI2005]狡猾的商人(并查集)

bzoj 1201[HNOI2005]数三角形 1202 [HNOI2005]狡猾的商人 暴力 权值并查集

[BZOJ1202][HNOI2005]狡猾的商人

bzoj1202 [HNOI2005]狡猾的商人

BZOJ-1202: [HNOI2005]狡猾的商人 (并查集+前缀和)