求矩形的并 矩形个数 1...20
m次询问 回答要求的r个矩形的并
容斥原理
dfs优化: 遇到面积交为0时 这个dfs分支可以不下去了 #include <iostream>
#include <string>
#include<sstream>
#include <cmath>
#include <map>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
//#define LL long long
#define LL __int64
struct Rectan
{
int x1,y1;
int x2,y2;
Rectan jiao(Rectan &R)
{
Rectan t;
t.x1=max(x1,R.x1);
t.y1=max(y1,R.y1);
t.x2=min(x2,R.x2);
t.y2=min(y2,R.y2);
return t;
}
int area()
{
if(x1>=x2||y1>=y2) return ;
return (x2-x1)*(y2-y1);
}
}ar[];
int rc[],r;
int ans;
void dfs(int deep,Rectan R,int index)
{
Rectan t;
int i;
for(i=index;i<=r;i++)
{
t=R.jiao(ar[rc[i]]);
if(t.area())
{
if(deep&) ans-=t.area();
else ans+=t.area();
dfs(deep+,t,i+);
}
}
}
int main()
{
int n,m;
int i,Case=,q;
while(scanf("%d %d",&n,&m),n|m)
{
for(i=;i<=n;i++)
scanf("%d %d %d %d",&ar[i].x1,&ar[i].y1,&ar[i].x2,&ar[i].y2);
printf("Case %d:\n",Case++);
for(q=;q<=m;q++)
{
ans=;
scanf("%d",&r);
for(i=;i<=r;i++)
scanf("%d",&rc[i]);
for(i=;i<=r;i++)
{
ans+=ar[rc[i]].area();
dfs(,ar[rc[i]],i+);
}
printf("Query %d: %d\n",q,ans);
}
printf("\n"); }
return ;
}

hdu 2461 Rectangles的更多相关文章

  1. HDU 2461 Rectangles#容斥原理

    http://acm.hdu.edu.cn/showproblem.php?pid=2461 题目很简单,但是由于询问数M可以很大,所以容易超时,这道题学到了在结构体里面写函数的方法,这样子效率更高, ...

  2. hdu 2461(AC) & poj 3695(TLE)(离散化+矩形并)

    Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. HDU 2056 Rectangles

    Rectangles Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. HDU 2461 线段树扫描线

    给出N个矩形,M次询问 每次询问给出R个.问这R个矩形围成的面积 经典扫面线求面积并,对每次询问的R个点离散化一下 #include "stdio.h" #include &quo ...

  5. HDU 1892 See you~ (二维树状数组)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 See you~ Problem Description Now I am leaving h ...

  6. HDU 1264 Counting Squares(线段树求面积的并)

    Counting Squares Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. HDU 1828 Picture(线段树扫描线求周长)

    Picture Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  8. HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)

    E - Largest Rectangle in a Histogram Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  9. HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

随机推荐

  1. 一致性hash演示

    看到点关于一致性hash的说明,觉得挺有意思,就想体验一下. 上代码看看,体会一下在一致性hash环境下的cache和获取. 因为是小代码演示,没有很细致,包括hash函数就是用取余操作,但活生生的显 ...

  2. 【转】 JavaScript:history.go() 的妙用(转) 处理post回发后返回

    在Web开发中,会遇到从一页(父页)导向另一页(子页),并且要求“返回”父页的情况,在这里如果用ASP.NET提供的 Response.Redirect()方法,往往不会达到理想的效果,例如:返回后, ...

  3. Project facet Java version 1.8 is not supported.

    Eclipse中添加项目到Servers中时提示“Project facet Java version 1.8 is not supported.” 解决方案:方法一:选中项目,右键roperties ...

  4. cookie和localstorage sessionStorage的概念、区别、使用场景

    本文分为三大板块: 1 webStorage的概念 2 cookie/localStorage/sessionStorage的介绍 3 三者之间的共同点和区别 **所有代码引用均来自 作者:OBKor ...

  5. mac下csv乱码解决办法

    到csv目录下, 用终端执行以下命令: iconv -f UTF8 -t GB18030 a.csv >b.csv

  6. 使用 Express 实现一个简单的 SPA 静态资源服务器

    背景 限制 SPA 应用已经成为主流,在项目开发阶段产品经理和后端开发同学经常要查看前端页面,下面就是我们团队常用的使用 express 搭建的 SPA 静态资源服务器方案. 为 SPA 应用添加入口 ...

  7. 【Sizzle学习】之关于【初探 jQuery 的 Sizzle 选择器】这篇文章里的小bug

    [题记]不可否认,这篇文章写得非常好,但是今天我在看sizzle源码的时候,发现这文章有一地方说的不妥.重现:当selectors为"p.class1>p.class2",j ...

  8. OC-NSArray

    一.认识数组 oc中可以把NSObject对象的子类放到数组这个集合中,但是int.float.double等基础数据类型需要先进行转换才可以存入数组. oc中数组以NS开头,其中分为可变数组和不可变 ...

  9. vim+ctags用法

    vim用法     在VIM编辑器的环境下用":make"就可以编译程序,如果程序中有错误,就会显示出来.          下列命令可以快速定位,并修改错误错误 ":c ...

  10. office在繁体系统下 导入导出 功能灰显的解决方法

    当在win7系统使用繁体中文版的office时,或系统是繁体版时,可能会导致office的导入导出功能无法使用 解决方法: 控制面板--区域和语言--格式--中文简体