lg2313 [HNOI2005]湯姆的遊戲
阿新 • • 發佈:2018-03-07
math 省選 logs pre org sin ace main ==
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]湯姆的遊戲