Rectangles

Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1503    Accepted Submission(s): 777

Problem Description
You
are developing a software for painting rectangles on the screen. The
software supports drawing several rectangles and filling some of them
with a color different from the color of the background. You are to
implement an important function. The function answer such queries as
what is the colored area if a subset of rectangles on the screen are
filled.
 
Input
The
input consists of multiple test cases. Each test case starts with a
line containing two integers N(1 ≤ N ≤ 20) and M(1 ≤ M ≤ 100000),
indicating the number of rectangles on the screen and the number of
queries, respectively.
The i-th line of the following N lines
contains four integers X1,Y1,X2,Y2 (0 ≤ X1 < X2 ≤ 1000, 0 ≤ Y1 <
Y2 ≤ 1000), which indicate that the lower-left and upper-right
coordinates of the i-th rectangle are (X1, Y1) and (X2, Y2). Rectangles
are numbered from 1 to N.
The last M lines of each test case describe
M queries. Each query starts with a integer R(1<=R ≤ N), which is
the number of rectangles the query is supposed to fill. The following
list of R integers in the same line gives the rectangles the query is
supposed to fill, each integer of which will be between 1 and N,
inclusive.

The last test case is followed by a line containing two zeros.

 
Output
For each test case, print a line containing the test case number( beginning with 1).
For
each query in the input, print a line containing the query number
(beginning with 1) followed by the corresponding answer for the query.
Print a blank line after the output for each test case.
 
Sample Input
2 2
0 0 2 2
1 1 3 3
1 1
2 1 2
2 1
0 1 1 2
2 1 3 2
2 1 2
0 0
 
Sample Output
Case 1:
Query 1: 4
Query 2: 7

Case 2:
Query 1: 2

 
Source
 题意:给你n个矩形,然后m个询问,每次询问 1-n个矩形的并面积.
题解:我的方法就是每次询问的时候然后再一个个的去查询。。优化了好久,poj还是TLE hdu 1185MS水过
aaarticlea/png;base64,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" alt="" />
///离散化
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <cmath>
using namespace std;
const int N = ;
struct Rec
{
int x1,y1,x2,y2;
} rec[N];
int x[N*],y[N*];
int vis[N*][N*];
int k,n,t,m;
int binary1(int l,int r,int value)
{
int mid;
while(l<r)
{
mid = (l+r)>>;
if(x[mid]==value) return mid;
if(x[mid]<value) l = mid+;
else r = mid-;
}
return l;
}
int binary2(int l,int r,int value)
{
int mid;
while(l<r)
{
mid = (l+r)>>;
if(y[mid]==value) return mid;
if(y[mid]<value) l = mid+;
else r = mid-;
}
return l;
}
int k1,k2;
void input()
{
k=,t=;
int x1,y1,x2,y2;
for(int i=; i<n; i++)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
rec[t].x1 = x1,rec[t].y1 = y1,rec[t].x2=x2,rec[t++].y2 = y2;
x[k] = x1,y[k++] = y1;
x[k] = x2,y[k++] = y2;
}
sort(x,x+k);
sort(y,y+k);
k1 = ,k2=;
x[k1] = x[];
y[k2] = y[];
for(int i=;i<k;i++){ ///去重还是TLE
if(x[i]!=x[i-]) x[++k1] = x[i];
if(y[i]!=y[i-]) y[++k2] = y[i];
}
}
int solve(int num)
{
memset(vis,,sizeof(vis));
while(num--)
{
int b;
scanf("%d",&b);
int t1,t2,t3,t4;
t1 = binary1(,k1,rec[b-].x1);
t2 = binary1(,k1,rec[b-].x2);
t3 = binary2(,k2,rec[b-].y1);
t4 = binary2(,k2,rec[b-].y2);
for(int j=t1; j<t2; j++)
{
for(int l = t3; l<t4; l++)
{
vis[j][l] = ;
}
}
}
int area = ;
for(int i=; i<=k1; i++)
{
for(int j=; j<=k2; j++)
{
area+=vis[i][j]*(x[i+]-x[i])*(y[j+]-y[j]);
}
}
return area;
}
int main()
{
int x1,y1,x2,y2;
int cnt = ;
while(scanf("%d%d",&n,&m)!=EOF&&n+m)
{ input();
int a,b;
printf("Case %d:\n",cnt++);
int cas = ;
while(m--)
{
scanf("%d",&a);
printf("Query %d: %d\n",cas++,solve(a));;
}
printf("\n");
}
return ;
}

hdu 2461(AC) & poj 3695(TLE)(离散化+矩形并)的更多相关文章

  1. hdu 2896 AC自动机

    // hdu 2896 AC自动机 // // 题目大意: // // 给你n个短串,然后给你q串长字符串,要求每个长字符串中 // 是否出现短串,出现的短串各是什么 // // 解题思路: // / ...

  2. hdu 3065 AC自动机

    // hdu 3065 AC自动机 // // 题目大意: // // 给你n个短串,然后给你一个长串,问:各个短串在长串中,出现了多少次 // // 解题思路: // // AC自动机,插入,构建, ...

  3. hdu 4057 AC自己主动机+状态压缩dp

    http://acm.hdu.edu.cn/showproblem.php?pid=4057 Problem Description Dr. X is a biologist, who likes r ...

  4. HDU 1815, POJ 2749 Building roads(2-sat)

    HDU 1815, POJ 2749 Building roads pid=1815" target="_blank" style="">题目链 ...

  5. hdu 5880 AC自动机

    Family View Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  6. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

  7. hdu 2296 aC自动机+dp(得到价值最大的字符串)

    Ring Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. hdu 2825 aC自动机+状压dp

    Wireless Password Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. hdu 3065 AC自动机(各子串出现的次数)

    病毒侵袭持续中 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

随机推荐

  1. Spring---配置文件概述

    概述 Spring 的配置文件是用于指导 Spring 工厂进行Bean的生产.依赖关系注入及 Bean 实例分发的“图纸”,它是一个或多个标准的XML文档,J2EE 程序员必须学会并灵活应用这份“图 ...

  2. laravel5.5用户认证源码分析

    目录 1. 生成相关文件和配置 2. 分析路由文件 3. 以登陆开始为例,分析auth到底是怎么工作的 3.1 分析登录文件 3.2 分析门面Auth. 1. 生成相关文件和配置 快速生成命令 php ...

  3. SDWebImage实现原理(怎么实现图片缓存器)

    入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处 ...

  4. http客户端缓存

    这篇文章写得比较,点击查看

  5. webstrom11 vue插件配置

    直接上图 1. 安装vue插件 2.添加模板 3.指定模板类型 最新的是插件 是 vue.js 创建完 Vue File 文件后 需要在 下面这里关联一下

  6. java5初学

    1.Eclipse快捷键 alt + / 代码提示,例如自动创建main方法ctrl + d 删除当前行ctrl + alt + up/down 复制当前行alt + up/down 交换行ctrl ...

  7. Python全栈工程师(while、占位符)

    ParisGabriel     Python 入门基础         UnicodeASCII 用8个位表示文字 ,最高位一定是零,低七位表示数值Unicode是由16个位组成的(65535) 最 ...

  8. 孤荷凌寒自学python第十六天python的迭代对象

    孤荷凌寒自学python第十六天python的迭代对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 迭代也就是循环. python中的迭代对象有相关的如下几个术语: A容器 contrai ...

  9. Python——开篇之词

    我也断断续续的用Python挺长时间了.但是一直都没有系统的学习过Python.很多东西都是现用现学.这样感觉对Python的理解太浅,完完全全就是搬砖的. 因此,我专门找了一个比较完整的老男孩的Py ...

  10. Small组件化重构安卓项目

    如果从一开始就没有设计好 后面项目业务比较大的时候很难掉头