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概述
Prometheus是什么 首先, Prometheus 是一款时序(time series) 数据库, 但他的功能却并非支部与 TSDB , 而是一款设计用于进行目标 (Target) 监控的关键组 ...
- HMS Core Discovery直播预告 | AI画质增强 ,开启超清视界
[直播入口] B站华为开发者联盟:http://live.bilibili.com/22551651 4K.8K视频屡见不鲜,HD.FHD分辨率成小屏标配,当网络卡顿.视频自动切换到较低画质时,用户最 ...
- 备忘录:关于.net程序连接Oracle数据库
目录 关于使用MSSM访问Oracle数据库 关于. net 程序中连接Oracle数据库 志铭-2021年12月7日 21:22:15 关于使用MSSM访问Oracle数据库 安装访问接口组件:Or ...
- 谈谈你对volatile的理解
1.volatile是Java虚拟机提供的轻量级的同步机制 1.1保证可见性1.2不保证原子性1.3禁止指令重排 JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象 ...
- Linux网络管理(一)之配置主机名与域名
Linux网络管理(一)之配置主机名与域名参考自:[1]修改主机名(/etc/hostname和/etc/hosts区别) https://blog.csdn.net/shmily_lsl/artic ...
- ComponentScan注解的使用
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中. 但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中. 有两种实现方案, 1.如 ...
- Linux学习 - 变量测试与内容替换
变量置换方式 变量y没有设置 变量y为空 变量y有值 x=${y-新值} x=新值 x空 x=$y x=${y:-新值} x=新值 x=新值 x=$y x=${y+新值} x空 x=新值 x=新值 x ...
- mysql key与index的区别
key包含了index, 而index没有key的功能. 1.key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的).包括primary ...
- fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': Failed to connect to github.com port 443: Timed out
今天使用git push的时候提示"fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': Failed to conne ...
- Java Log4j 配置文件
### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.lo ...