Beam Cannon HDU - 5091 (扫描线) 求矩形内的点的数量

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5091

题意:给你n个二维平面的点  矩形的高h,宽w,让你求这个矩形 在某个位置时包括的最多的点的数量

扫面线板子,注意处理坐标的方式

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define clr0(x) memset(x,0,sizeof(x))
#define clr1(x) memset(x,-1,sizeof(x))
#define eps 1e-9
const double pi = acos(-1.0);
typedef long long LL;
#define lson i*2,l,m
#define rson i*2+1,m+1,r
const int MAXN=200000+5;//因为点有1W个,所以扫描线2W个,不同的Y坐标最多有2W个
int cnt[MAXN*4],sum[MAXN*4];
double Y[MAXN];
struct seg
{
    double l,r,h;
    int d;
    seg(){}
    seg(double a,double b,double c,int d):l(a),r(b),h(c),d(d){}
    bool operator <(const seg&b)const
    {
        if(h == b.h) return d>b.d;
        return h>1;
    if(ql<=m) update(ql,qr,v,lson);
    if(m

 

你可能感兴趣的:(线段树)