POJ 1151 坐标离散化<第一道离散化的水题>
来源:互联网 发布:个人开淘宝食品店 编辑:程序博客网 时间:2024/05/20 22:04
0 <= x1 < x2 <= 100000;0 <= y1 < y2 <= 100000
题意是在坐标上给n个矩阵
问这些矩阵覆盖的面积是多少
如果范围小,我们可以把所有矩阵覆盖的点都标记上1,但是范围非常大,可是给的矩阵数量却不多,那么我们可以考虑离散化。
也就是把输入的200个x和200个y排序后一一对应到map[i][j]中,只考虑这些点。
相当于此时输入的100个框框可以在map1中储存了,只储存每个小!小!小!矩阵的左下角。是因为存完4个点再按4个点来判断可能会错误(想想那是个什么情况)
然后计算面积的时候可以计算这个矩阵的长与宽,每次计算面积不是1,而是一个矩阵的面积。
#include <queue>#include<iostream>#include<stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <ctime> using namespace std;struct ttt{double x1,y1,x2,y2;};ttt qq[105];double x[205],y[205];int map1[205][205];int main(){//freopen("in.txt","r",stdin);//freopen("output.txt","w",stdout); int i,j,k,l,f1,f2,f3,t1,t2,t3,m; int l1,l2,l3,f4,f5; int n,sum1; int tt=0; while(scanf("%d",&n)==1&&n){ t1=0; tt++; for(i=1;i<=n;i++){cin >> qq[i].x1 >> qq[i].y1 >> qq[i].x2 >> qq[i].y2; t1++;x[t1]=qq[i].x1; y[t1]=qq[i].y1; t1++;x[t1]=qq[i].x2; y[t1]=qq[i].y2;}sort(x+1,x+1+t1);sort(y+1,y+1+t1);memset(map1,0,sizeof(map1));for(i=1;i<=n;i++){for(j=1;j<=t1;j++)for(k=1;k<=t1;k++){ if(qq[i].x1<=x[j]&&x[j]<qq[i].x2&&qq[i].y1<=y[k]&&y[k]<qq[i].y2){map1[j][k]=1;}}}double sum2=0;double g1;for(i=1;i<=t1;i++){g1=x[i+1]-x[i];for(j=1;j<=t1;j++)if(map1[i][j]==1){sum2+=g1*(y[j+1]-y[j]);}}cout << "Test case #" <<tt << endl;cout << "Total explored area: ";printf("%.2f\n",sum2);cout << endl;} return 0;}
.
阅读全文
0 0
- POJ 1151 坐标离散化<第一道离散化的水题>
- 坐标的离散化
- poj 1151 离散化
- poj 2528 坐标离散化+线段树
- 坐标离散化技巧
- 坐标离散化处理
- 坐标离散化
- 坐标离散化
- 区域坐标离散化
- 坐标离散化,imos
- 坐标离散化
- sgu 180. Inversions (树状数组+离散化,第一道需要改模板的题目,好题)
- 一道莫名其妙的离散化dp
- 区域的个数(坐标离散化)
- 区域的个数 (坐标离散化)
- 区域的个数 (坐标离散化)
- 区域的个数(坐标离散化)
- GDUFS1162 Fences 坐标离散化
- RHEL 6.5系统安装配置图解教程(rhel-server-6.5)
- spring spel表达式语言
- 安卓开发-录视频并播放
- Tensorflow(1) Tensorboard的用法
- Yii2安装注意事项
- POJ 1151 坐标离散化<第一道离散化的水题>
- springboot + swagger
- 怎么解决java.lang.NoClassDefFoundError错误
- Spring中bean的生命周期!
- gearman安装
- 贝叶斯线性回归小练习
- Spring bean三种创建方式
- Spring Boot中使用Swagger2构建强大的RESTful API文档
- c++拷贝构造函数详解