POJ 3695 Rectangles(容斥)
2015-05-14 21:56
351 查看
题意:
n个矩阵m次访问,求每次访问的总面积
参考http://http://blog.csdn.net/sdj222555/article/details/7983902
n个矩阵m次访问,求每次访问的总面积
参考http://http://blog.csdn.net/sdj222555/article/details/7983902
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; #define MAXN 111111 #define inf 100000011 int ask[MAXN],st[1111111]; int n,m; struct Rec { int x1,x2,y1,y2; }p[22]; void dfs(int xa,int ya, int xb, int yb, int deep, int flag ,int sta) { if(xa>=xb || ya>=yb) return; if(deep==n) { if(sta) { for(int i=1;i<=m;i++) { if((ask[i]|sta)==ask[i]) st[ask[i]] += flag*(xb-xa)*(yb-ya); } } return; } dfs(xa,ya,xb,yb,deep+1,flag,sta); dfs(max(xa,p[deep+1].x1),max(ya,p[deep+1].y1),min(xb,p[deep+1].x2),min(yb,p[deep+1].y2),deep+1,-flag,sta|(1<<deep)); } int in() { char ch; int a = 0; while((ch = getchar()) == ' ' || ch == '\n'); a += ch - '0'; while((ch = getchar()) != ' ' && ch != '\n') { a *= 10; a += ch - '0'; } return a; } int main() { int cas=1; while(cin>>n>>m) { if(n==0 && m==0) break; memset(st,0,sizeof(st)); memset(ask,0,sizeof(ask)); for(int i=1;i<=n;i++) { scanf("%d%d%d%d", &p[i].x1, &p[i].y1, &p[i].x2, &p[i].y2); } int t,x; for(int i=1;i<=m;i++) { t = in(); while(t--) { x = in(); ask[i] |= (1<<(x-1)); } } dfs(0,0,inf,inf,0,-1,0); printf("Case %d:\n",cas++); for(int i=1;i<=m;i++) { printf("Query %d: %d\n",i,st[ask[i]]); } printf("\n"); } return 0; }
相关文章推荐
- poj 3695 Rectangles 容斥原理解矩形面积并
- POJ 3695 Rectangles 1w询问求20个矩阵面积并 容斥
- poj 3695 Rectangles 线段树扫描线 or 容斥原理
- POJ 3695 Rectangles 笔记
- Rectangles - POJ 3695 容斥原理
- poj 3695 Rectangles(矩形切割)
- poj 3695 Rectangles(容斥原理)
- HDU-1796 How many integers can you find || POJ-3695 Rectangles || POJ-3904 Sky Code
- POJ 3695 Rectangles(矩形切割)
- Poj 3695-Rectangles 矩形切割
- POJ 3695 Rectangles (矩形并 状压+容斥定理 好题)
- POJ 3695 Rectangles
- 解题报告:POJ_3904 Sky Code 莫比乌斯反演|容斥
- POJ 2773 Happy 2006 (公式法 or 二分容斥定理)
- poj 1468 Rectangles
- POJ-2773 2分夹逼+DFS解容斥..
- POJ 1091 跳蚤 【容斥】【质因数分解】
- POJ 2773 容斥与二分
- POJ 1091 - 跳蚤 (容斥)
- poj 3695