点我看题目

题意 : 就是给你n个矩形的最左下角和最右上角的点的坐标,然后将这n个矩形的面积求出来。

思路 : 离散化求矩形面积并。离散化具体介绍。将横纵坐标离散开来分别存,然后排序,也可以按照黑书上411页写的两个算法中,有一个说是用二分,效率比较好,不过我用的不是二分,而是普通的循环查找。

 #include<iostream>
#include <algorithm>
#include <string.h>
#include <stdio.h>
using namespace std;
double x[],y[],s[][];
int flag[][];
int t,cas = ;
double sum;
int main()
{
while(~scanf("%d",&t))
{
if(t == ) break;
int k = ;
sum = 0.0 ;
memset(flag,,sizeof(flag));
for(int i = ; i <= n ; i++)
{
cin>>s[i][]>>s[i][]>>s[i][]>>s[i][];
x[k] = s[i][];
y[k] = s[i][];
k++;
x[k] = s[i][];
y[k] = s[i][];
k++;
}
sort(x,x+*n);
sort(y,y+*n);
for(k = ; k <= n ; k++)
{
int a,b,c,d;
for(a = ; a < *n ; a++)
if(x[a] == s[k][]) break;
for(b = ; b < *n ; b++)
if(x[b] == s[k][]) break;
for(c = ; c < *n ; c++)
if(y[c] == s[k][]) break;
for(d = ; d < *n ; d++)
if(y[d] == s[k][]) break;
for(int i = a ; i < b ; i++)
for(int j = c ; j < d ; j++)
flag[i][j] = ;
}
for(int i = ; i < *t ; i++)
for(int j = ; j < *t ; j++)
if(flag[i][j])
sum+=(x[i+]-x[i])*(y[j+]-y[j]);
printf("Test case #%d\n",cas++);
printf("Total explored area: %.2f\n\n",sum);
}
return ;
}

最新文章

  1. 关于Ajax工作原理
  2. windows开关机时间记录
  3. 数据库表结构对比同步mysqldiff
  4. ios中autolayout
  5. Legolas工业自动化平台入门(三)交互事件响应动作
  6. 【软件分析与挖掘】Vision of Software Clone Management: Past, Present, and Future (Keynote Paper)
  7. 在CentOS上装 ElasticSearch
  8. Python 文件的IO
  9. easyui tree 的数据格式转换
  10. Delphi ADO数据操作封装类
  11. MySQL Online DDL的改进与应用
  12. IDA分析脱壳后丢失导入表的PE
  13. Oracle实战笔记(第七天)之PL/SQL进阶
  14. iOS-Xcode编码自动补全失效
  15. 使用cookie时出现“未将对象引用设置到对象实例”
  16. 敏捷开发SCM
  17. 【vue】vue-router的用法
  18. 最近玩了下linux下的lampp注意一些使用
  19. 【Unity】8.5 扩展编辑器
  20. Git CMD连接,管理(remote,add,commit,push)github repository

热门文章

  1. SQL-学习使用FOR XML PATH
  2. 修改ckeditor/ckfinder上传文件文件夹 路径以日期格式命名
  3. 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
  4. SQLserver数据库基础
  5. JavaScript中事件绑定的方法总结
  6. java Springmvc ajax上传
  7. 16_会话技术_Session
  8. 错误:variable `xxx&#39; has initializer but incomplete type
  9. POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)
  10. redis 常用操作命令