POJ 1151 Atlantis(离散化)
来源:互联网 发布:淘宝暗语枪模 编辑:程序博客网 时间:2024/05/20 23:06
大意:求出不重叠矩形的面积交。
思路:同两个x[],y[]分别放x,y坐标,然后枚举标记所有的矩形范围。
最后两相邻点,来求面积。
求出不重叠矩形的面积交。#include<map>#include<queue>#include<cmath>#include<cstdio>#include<stack>#include<iostream>#include<cstring>#include<algorithm>#define ll long long#define LL unsigned __int64#define inf 0x3f3f3f3f#define eps 1e-8#include<vector>using namespace std;struct node{ double x,y,x1,y1;}q[100010];double x[233],y[233];bool mp[233][233];int main(){ int n,m,i,j,k,cla = 1; while(~scanf("%d",&n)&&n){ k = 0; memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); for(i = 0;i < n;++ i){ scanf("%lf%lf%lf%lf",&q[i].x,&q[i].y,&q[i].x1,&q[i].y1); x[k] = q[i].x; y[k++] = q[i].y; x[k] = q[i].x1; y[k++] = q[i].y1; } sort(x,x+2*n);sort(y,y+2*n); memset(mp,false,sizeof(mp)); double ans = 0; for(k = 0;k < n;++ k){ int a,b,aa,bb; for(a = 0;a < 2*n;++ a) if( fabs(x[a] - q[k].x)<=eps ) break; for(b = 0;b < 2*n;++ b ) if( fabs(y[b] - q[k].y)<=eps ) break; for(aa = 0;aa < 2*n;++ aa) if( fabs(x[aa] - q[k].x1)<=eps ) break; for(bb = 0;bb <2*n ;++ bb) if( fabs(y[bb] - q[k].y1)<=eps ) break; for(i = a;i < aa;++ i){ for(j = b;j < bb ;++ j){ mp[i][j] = true; } } } for(i = 0;i < 2*n;++ i){ for(j = 0;j < 2*n;++ j){ if(mp[i][j]) ans += (x[i+1]-x[i])*(y[j+1]-y[j]); } } printf("Test case #%d\nTotal explored area: ",cla++); printf("%.2f\n\n",ans); } return 0;}
1 0
- POJ 1151 Atlantis(离散化)
- POJ 1151 Atlantis(离散化+扫描线)
- 【POJ】1151 Atlantis(线段树+扫描线+离散化)
- poj 1151 Atlantis(线段树+离散化+扫描线)
- 【POJ 1151】 Atlantis(离散化+扫描线)
- POJ 1151 Atlantis 线段树+离散化
- poj-1151-Atlantis-离散化+标记
- poj 1151 Atlantis 离散化+线段树
- poj 1151 Atlantis 二分查找+离散化
- Atlantis(离散化)
- pku 1151 Atlantis(离散化)
- POJ 1151 Atlantis 离散化 + 扫描线 + 线段树
- POJ 1151 Atlantis 扫描线+离散化+线段树
- POJ 1151 Atlantis(线段树+离散化+扫描线)
- POJ 1151 Atlantis(重叠矩阵面积和=离散化)
- poj-1151 Atlantis(线段树+离散化+扫描线)
- poj 1151 Atlantis (线段树+扫描线+离散化)
- poj 1151 Atlantis 线段树+离散化+扫描线
- mongoDB服务启动
- Android之activity总结
- Jenkins安装配置
- sleep()与wait()有什么区别
- hive Create/Drop/Alter/Use Database
- POJ 1151 Atlantis(离散化)
- Web开发 ☞ JavaScript 基本语法
- MyEclipse New(新建)选项 后面的菜单选项设置
- SGI STL 的 一,二级配置器浅析
- LVS 和 Nginx 和 HAproxy 的区别
- 编程之美扩展问题总结2.1(2)
- iuni-summary
- java对redis2的基本操作
- ubuntu下的GTK的安装、编译和测试