zoukankan      html  css  js  c++  java
  • hdu 3265 矩形剪块面积并

    http://acm.hust.edu.cn/vjudge/problem/10769

    给n张海报,在每张海报上剪掉一个矩形,求面积并

    把剪块的海报分成四个矩形,就是普通的求面积并问题了

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define debug printf("!
    ")
    #define MAXN 50000+5
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    #define INF 0x3f3f3f3f
    
    #define ls (rt<<1)
    #define rs (rt<<1|1)
    
    int n,m;
    
    int hh[MAXN],col[MAXN<<3],len[MAXN<<3];
    
    struct node
    {
        int l,r,x,c;
        node(){}
        node(int a,int b,int c,int d):l(a),r(b),x(c),c(d){}
        bool operator < (const node &b) const
        {
            return x<b.x;
        }
    }a[MAXN<<3];
    
    void PushUp(int rt,int l,int r)
    {
        if(col[rt])
        {
            len[rt] = hh[r+1] - hh[l];
        }
        else if(l==r) len[rt] = 0;
        else
        {
            len[rt] = len[ls]+len[rs];
        }
    }
    
    void update(int val,int L,int R,int l,int r,int rt)
    {
        if(L<=l && r<=R)
        {
            col[rt] += val;
            PushUp(rt,l,r);
            return;
        }
        int mid = (l+r)>>1;
        if(L <= mid) update(val,L,R,l,mid,ls);
        if(R > mid) update(val,L,R,mid+1,r,rs);
        PushUp(rt,l,r);
    }
    
    int main()
    {
        int i,j,k,t,kase=1;
        while(~sf("%d",&n) && n)
        {
            int v=0;
            LL sum = 0;
            for(i=0;i<n;i++)
            {
                int x1,y1,x2,y2;
                int X1,Y1,X2,Y2;
                sf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&X1,&Y1,&X2,&Y2);
                if(x1!=X1)
                {
                    hh[v] = y1;
                    a[v++] = node(y1,y2,x1,1);
                    hh[v] = y2;
                    a[v++] = node(y1,y2,X1,-1);
                }
                if(x2!=X2)
                {
                    hh[v] = y1;
                    a[v++] = node(y1,y2,X2,1);
                    hh[v] = y2;
                    a[v++] = node(y1,y2,x2,-1);
                }
                if(y1!=Y1)
                {
                    hh[v] = y1;
                    a[v++] = node(y1,Y1,X1,1);
                    hh[v] = Y1;
                    a[v++] = node(y1,Y1,X2,-1);
                }
                if(y2!=Y2)
                {
                    hh[v] = Y2;
                    a[v++] = node(Y2,y2,X1,1);
                    hh[v] = y2;
                    a[v++] = node(Y2,y2,X2,-1);
                }
            }
            sort(hh,hh+v);
            sort(a,a+v);
            int d = 1;
            for(i=1;i<v;i++)
            {
                if(hh[i]!=hh[i-1]) hh[d++] = hh[i];
            }
            mem(len,0);
            mem(col,0);
            for(i=0;i<v-1;i++)
            {
                int l = lower_bound(hh,hh+d,a[i].l)-hh;
                int r = lower_bound(hh,hh+d,a[i].r)-hh-1;
                update(a[i].c,l,r,0,d-1,1);
                sum+=len[1]*((long long)a[i+1].x-a[i].x);
                //pf("%lf %lf
    ",sum,len[1]);
            }
            pf("%I64d
    ",sum);
        }
    
        return 0;
    }
  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/qlky/p/5757877.html
Copyright © 2011-2022 走看看