首先将坐标离散化,考虑从左往右扫描线

碰到插入操作则插入

碰到删除操作的:

当前包含i的矩形数=y1在[1,y2[i]]之间的矩形数-y2在[1,y1[i]-1]之间的矩形数

用两棵树状数组维护即可,时间复杂度$O(n\log n)$。

#include<cstdio>
#include<algorithm>
#define N 500010
int n,m,i,x1,y1,x2,y2,b[N],bl[N],br[N],now,ans=-1,cnt;
struct P{int x,l,r,t;}a[N];
inline bool cmp(P a,P b){return a.x<b.x;}
inline void addl(int x,int y){for(;x<=m;x+=x&-x)bl[x]+=y;}
inline void addr(int x,int y){for(;x<=m;x+=x&-x)br[x]+=y;}
inline int askl(int x){int t=0;for(;x;x-=x&-x)t+=bl[x];return t;}
inline int askr(int x){int t=0;for(;x;x-=x&-x)t+=br[x];return t;}
inline int lower(int x){
int l=1,r=m,mid,t;
while(l<=r)if(b[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;
return t;
}
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int main(){
read(n);
while(n--){
read(x1),read(y1),read(x2),read(y2);
a[++m].x=x1,a[m].l=b[m]=y1,a[m].r=y2,a[m].t=1;
a[++m].x=x2,a[m].l=y1,a[m].r=b[m]=y2;
}
for(std::sort(b+1,b+m+1),std::sort(a+1,a+m+1,cmp),i=1;i<=m;i++){
a[i].l=lower(a[i].l),a[i].r=lower(a[i].r);
if(a[i].t)addl(a[i].l,1),addr(a[i].r,1);else{
now=askl(a[i].r)-askr(a[i].l-1);
if(now>ans)ans=now,cnt=1;else if(now==ans)cnt++;
addl(a[i].l,-1),addr(a[i].r,-1);
}
}
return printf("%d %d",ans,cnt),0;
}

  

BZOJ3356 : [Usaco2004 Jan]禁闭围栏的更多相关文章

  1. BZOJ 3359: [Usaco2004 Jan]矩形( dp )

    数据范围这么小..怎么乱搞都可以吧... 先排序一遍然后O(n²) dp --------------------------------------------------------------- ...

  2. 3359: [Usaco2004 Jan]矩形

    3359: [Usaco2004 Jan]矩形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 8  Solved: 5[Submit][Status] ...

  3. 3360: [Usaco2004 Jan]算二十四

    3360: [Usaco2004 Jan]算二十四 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 6  Solved: 6[Submit][Statu ...

  4. 3361: [Usaco2004 Jan]培根距离

    3361: [Usaco2004 Jan]培根距离 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 16  Solved: 13[Submit][Sta ...

  5. BZOJ3355 : [Usaco2004 Jan]有序奶牛

    对于一条边x->y,若去掉之后x不能到达y,那么它是必需的. 首先拓扑排序求出拓扑序,然后按照终点拓扑序为第一关键字,起点拓扑序为第二关键字从小到大加边. 对于每个点,维护一个bitset,表示 ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. BZOJ3355

    3355: [Usaco2004 Jan]有序奶牛 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 37  Solved: 19[Submit][Sta ...

  8. 【BZOJ1720】[Usaco2006 Jan]Corral the Cows 奶牛围栏 双指针法

    [BZOJ1720][Usaco2006 Jan]Corral the Cows 奶牛围栏 Description Farmer John wishes to build a corral for h ...

  9. BZOJ——1720: [Usaco2006 Jan]Corral the Cows 奶牛围栏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1720 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1 ...

随机推荐

  1. HDU 1864最大报销额 01背包问题

    B - 最大报销额 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  2. HDU 1708 简单dp问题 Fibonacci String

    Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. linux下创建库函数

    来源: 在Linux下如何使用自己的库函数-riverok-ChinaUnix博客 http://blog.chinaunix.net/uid-21393885-id-88128.html 构建Lin ...

  4. 74 使用BitSet输出数组中的重复元素

    [本文链接] http://www.cnblogs.com/hellogiser/p/using-bitset-to-print-duplicate-elements-of-array.html [题 ...

  5. codeforces 489C.Given Length and Sum of Digits... 解题报告

    题目链接:http://codeforces.com/problemset/problem/489/C 题目意思:给出 m 和 s,需要构造最大和最小的数.满足长度都为 m,每一位的数字之和等于 s. ...

  6. BestCoder12 1001.So easy(hdu 5058) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5058 (格式有点问题,为了方便阅读---整个复制下来吧) 题目意思:给出两个长度都为 n 的集合你,问 ...

  7. 将Excel文件.xls导入SQL Server 2005

    SQL2005 Microsoft SQL Server Management Studio Express管理器里,右键单击一个数据库,指向“任务”,再单击“导入数据”或“导出数据”中没有这个选项, ...

  8. Excel 关于新建xls文件 新建sheet 合并sheet的VBA操作代码

    Sub 合并一个文件夹下全部xls文件中sheet到一个xls的sheet()workDir = ThisWorkbook.Path '当前xls文件所在的目录绝对路径'MsgBox workDir, ...

  9. COURSES(poj 1469)

    题意: 给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程,现在要求一个由p个学生组成的集合,满足下列2个条件: 1.每个学生选择一个不同的课程 2.每个课程都有不同的代表 如果满足,就输 ...

  10. MVC学习笔记---MVC的处理管线

    漫步ASP.NET MVC的处理管线   ASP.NET MVC从诞生到现在已经好几个年头了,这个框架提供一种全新的开发模式,更符合web开发本质.你可以很好的使用以及个性化和扩展这个框架,但这需要你 ...