Rectangles(hdu2461)
Rectangles
Time Limit: 5000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1497 Accepted Submission(s): 773
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 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.
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.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stack>
7 #include<map>
8 using namespace std;
9 typedef struct pp
10 {
11 int x1;
12 int y1;
13 int x2;
14 int y2;
15 } ss;
16 ss ju[30];
17 int quer[1<<22];
18 int cnt[30];
19 int aa[1<<22];
20 int bt[30];
21 int cp[100005];
22 int ask[100005];
23 int tt[100];
24 int N;
25 void dfs(int k,int u);
26 int main(void)
27 {
28 int i,j,k,p,q;
29 int kk=0;
30 while(scanf("%d %d",&p,&q),p!=0&&q!=0)
31 {
32 kk++;
33 memset(ask,0,sizeof(ask));
34 for(i=0; i<p; i++)
35 {
36 scanf("%d %d %d %d",&ju[i].x1,&ju[i].y1,&ju[i].x2,&ju[i].y2);
37 }
38 int s;
39 int n;
40 for(s=0; s<q; s++)
41 {
42 N=0;
43 scanf("%d",&n);
44 int mn=0;
45 int dd;
46 for(i=0; i<n; i++)
47 {
48 scanf("%d",&dd);
49 mn|=(1<<(dd-1));
50 }
51 cp[s]=mn;
52 }
53 int flag[23];
54 for(i=1; i<=(1<<p)-1; i++)
55 {
56 int cn=0;
57 memset(flag,0,sizeof(flag));
58 for(j=0; j<p; j++)
59 {
60 if(i&(1<<j))
61 {
62 cn++;
63 flag[j]=1;
64 }
65 }
66 int nn;
67 int ak=0;
68 for(nn=0; nn<22; nn++)
69 {
70 if(flag[nn])
71 {
72 cnt[ak++]=nn;
73 }
74 }
75 int mm;
76 int xx1,yy1,xx2,yy2;
77 xx1=ju[cnt[0]].x1;
78 yy1=ju[cnt[0]].y1;
79 xx2=ju[cnt[0]].x2;
80 yy2=ju[cnt[0]].y2;
81 int uu=0;
82 for(nn=1; nn<ak; nn++)
83 {
84 if(xx1>=ju[cnt[nn]].x2)
85 {
86 uu=1;
87 aa[i]=0;
88 break;
89 }
90 else if(xx2<=ju[cnt[nn]].x1)
91 {
92 uu=1;
93 aa[i]=0;
94 break;
95 }
96 else if(yy1>=ju[cnt[nn]].y2)
97 {
98 uu=1;
99 aa[i]=0;
100 break;
101 }
102 else if(yy2<=ju[cnt[nn]].y1)
103 {
104 uu=1;
105 aa[i]=0;
106 break;
107 }
108 else
109 {
110 xx1=max(xx1,ju[cnt[nn]].x1);
111 yy1=max(yy1,ju[cnt[nn]].y1);
112 xx2=min(xx2,ju[cnt[nn]].x2);
113 yy2=min(yy2,ju[cnt[nn]].y2);
114 }
115 }
116 if(!uu)
117 {
118 int miji=abs(xx1-xx2)*abs(yy1-yy2);
119 aa[i]=miji;
120 for(s=0; s<q; s++)
121 {
122 int gg=cp[s]|i;
123 if(gg<=cp[s])
124 {
125 if(cn%2)
126 {
127 ask[s]+=aa[i];
128 }
129 else ask[s]-=aa[i];
130 }
131 }
132 }
133 }
134 printf("Case %d:\n",kk);
135 for(j=0; j<q; j++)
136 {
137 printf("Query %d: ",j+1);
138 printf("%d\n",ask[j]);
139 }
140 printf("\n");
141 }
142 return 0;
143 }
Rectangles(hdu2461)的更多相关文章
- Rectangles hdu2461容斥定理
Rectangles Time Limit: 5000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu2461 Rectangles 线段树--扫描线
You are developing a software for painting rectangles on the screen. The software supports drawing s ...
- poj-1314 Finding Rectangles
题目地址: http://poj.org/problem?id=1314 题意: 给出一串的点,有些点可以构成正方形,请按照字符排序输出. 因为这道题的用处很大, 最近接触的cv 中的Rectangl ...
- [ACM_暴力][ACM_几何] ZOJ 1426 Counting Rectangles (水平竖直线段组成的矩形个数,暴力)
Description We are given a figure consisting of only horizontal and vertical line segments. Our goal ...
- codeforces 713B B. Searching Rectangles(二分)
题目链接: B. Searching Rectangles time limit per test 1 second memory limit per test 256 megabytes input ...
- White Rectangles[HDU1510]
White Rectangles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)
控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; ...
- Counting Rectangles
Counting Rectangles Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1043 Accepted: 546 De ...
- UVA 10574 - Counting Rectangles 计数
Given n points on the XY plane, count how many regular rectangles are formed. A rectangle is regular ...
随机推荐
- Prometheus基础
监控系统作用 监控系统主要用于保证所有业务系统正常运行, 和业务的瓶颈监控. 需要周期性采集和探测. 采集的详情 采集: 采集器, 被监控端, 监控代理, 应用程序自带仪表盘, 黑盒监控, SNMP. ...
- 巩固javaweb的第三十一天
巩固内容 变量的作用范围 如果要访问的信息在 pageScope.requestScope.sessionScope 和 applicationScope 中存储, 则使用表达式语言访问的时候可以直接 ...
- 对于vue项目更新迭代导致上传至服务器后出现Loading chunk {n} failed和Unexpected token <的解决方式
相信大家对于vue项目的维护与更新中会遇见很多问题,其中有两种情况最为常见. 一种是Loading chunk {n} failed,这种情况出现的原因是vue页面更新上传至服务器后,由于vue默认打 ...
- 超好玩:使用 Erda 构建部署应用是什么体验?
作者|郑成 来源|尔达 Erda 公众号 导读:最近在 Erda 上体验了一下构建并部署一个应用,深感其 DevOps 平台的强大与敏捷,不过为了大家能够快速上手,我尽量简化应用程序,用一个简单的返回 ...
- above, abrupt
above 近义词: over, beyond, exceeding反义词: below, beneath, under, underneath 有从右往左写的文字,没有从下往上的.above-men ...
- 『学了就忘』Linux启动引导与修复 — 69、启动引导程序(grub)
目录 1.启动引导程序(Boot Loader)简介 2.启动引导程序grub的作用 3.启动引导程序grub的位置 4./grub目录中其他的文件简单介绍 提示: 简单地说,Boot Loader就 ...
- Linux FTP的主动模式与被动模式
Linux FTP的主动模式与被动模式 一.FTP主被动模式 FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21( ...
- Linux基础命令---mysqladmin数据库管理工具
mysqladmin mysqladmin是mysql数据库的管理工具,可以控制.查看.修改数据库服务器的配置和状态. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedor ...
- 看看线程特有对象ThreadLocal
作用:设计线程安全的一种技术. 在使用多线程的时候,如果多个线程要共享一个非线程安全的对象,常用的手段是借助锁来实现线程的安全.线程安全隐患的前提是多线程共享一个不安全的对象 ,那么有没有办法让线程之 ...
- Spring Boot项目的不同启动方式
方式一: 直接通过IntelliJ IDEA启动,直接执行Spring Boot项目的main()方法. 方法二: 将项目打包成jar包,首先需要在pom.xml文件的根节点下添加如下配置: < ...