HDU2478(Slides)求四边形矩阵交
来源:互联网 发布:ipad看电视最新软件 编辑:程序博客网 时间:2024/05/16 07:57
/**********************************************************题意:给出n个矩形,从里面抽掉一个,求剩下的所有矩形的面积交;算法:由于数据量不超过100000,所以不需要用线段树优化,只需要O(n)预处理就行了;即从左往右处理[1,i]之间的矩形的面积交;再从右往左也处理一次[i,n]的面积交;然后枚举中间抽掉的矩形;最后求一次左右两边的面积交就OK了;**********************************************************/#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N=100010;const int L=-1000001;const int R=1000001;int x1[N], x2[N], y1[N], y2[N];int main(){ //freopen("C:\\Users\\Administrator\\Desktop\\kd.txt","r",stdin); int tcase; while (~scanf("%d",&tcase)) { while (tcase--) { int n; scanf("%d", &n); int lx = L, ly = L, rx = R, ry = R; int lx1 = L, ly1 = L, rx1 = R, ry1 = R; for (int i = 0; i < n; i++) { scanf("%d%d%d%d", &x1[i], &y1[i], &x2[i], &y2[i]); if (x1[i] > lx) { lx1 = lx; lx = x1[i]; } else if (x1[i] > lx1) lx1 = x1[i]; if (y1[i] > ly) { ly1 = ly; ly = y1[i]; } else if (y1[i] > ly1) ly1 = y1[i]; if (x2[i] < rx) { rx1 = rx; rx = x2[i]; } else if (x2[i] < rx1) rx1 = x2[i]; if (y2[i] < ry) { ry1 = ry; ry = y2[i]; } else if (y2[i] < ry1) ry1 = y2[i]; } if (n==1) { printf("0\n"); continue; } int ans = 0; int x,y; int xx,yy; for (int i = 0; i < n; i++) { if (x1[i] == lx) x = lx1; else x = lx; if (y1[i] == ly) y = ly1; else y = ly; if (x2[i] == rx) xx = rx1; else xx = rx; if (y2[i] == ry) yy = ry1; else yy = ry; if (yy > y && xx > x) { int tmp = (yy - y)*(xx - x); if (tmp > ans) ans = tmp; } } printf("%d\n",ans); } } return 0;}
- HDU2478(Slides)求四边形矩阵交
- hdu2478 Slides
- 矩阵交换行
- 矩阵交换行
- 矩阵交换行
- 矩阵交换行
- 蓝桥杯:矩阵面积交
- 矩阵的交
- 01:矩阵交换行
- 求交C#朋友
- awk 词典求交
- 空间直线求交
- poj1127线段求交
- 半平面求交
- HDU4386-海伦公式求四边形面积
- URAL 1963 Kite 四边形求对称轴数
- FOJ 2148(求凸四边形数量)
- hdu4386(求四边形最大面积)
- Linux Socket编程
- 写错了注入的bean 的get方法
- 画布
- 工厂三姐妹——创建型设计模式之二
- 后台跑程序
- HDU2478(Slides)求四边形矩阵交
- IO三种方式:BIO,NIO,AIO (异步读写asynchronous IO)
- 数字三角形问题
- Android4.2 系统服务系列之窗口服务---初始化
- 银行系统3(功能又强大了哟 增加了些功能(例如改密码)还在优化中。)
- 验证码
- NIO trick and trap NIO的技巧与陷阱
- la4727
- java代码中把多个文件打包成zip文件