算法复习之坐标离散化
离散化概念
例子:
1.
描述: 在桌子上放了N个平行于坐标轴的矩形,这N个矩形可能有互相覆盖的部分,求它们组成的图形的面积。
输入格式:输入第一行为一个数N(1<=N<=100),表示矩形的数量,下面N行,每行四个整数,分别表示每个矩形的左下角
和右上角的坐标,坐标范围为-10^8到10^8之间的整数。
输出格式:
输出只有一行,一个整数,表示图形面积。
样例输入:
3
1 1 4 3
2 -1 3 2
4 0 5 2
样例输出:
10
#include<iostream> #include<algorithm> using namespace std; const int maxn=210; int x1[maxn],y1[maxn],x2[maxn],y2[maxn],x[maxn],y[maxn]; void init() {for(int i=0; i<maxn; i++) {x1[i]=y1[i]=x2[i]=y2[i]=x[i]=y[i]=0;} } int main() {int n;while(cin>>n) {init();for(int i=1; i<=n; i++) {cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];x[2*i-1]=x1[i];x[2*i]=x2[i];y[2*i-1]=y1[i];y[2*i]=y2[i];}sort(x+1,x+2*n+1);sort(y+1,y+2*n+1);int sum=0;//枚举每一个单位,,判断是否符合条件for(int i=1; i<=2*n-1; i++)for(int j=1; j<=2*n-1; j++) {int s=((x[i+1]-x[i])*(y[i+1]-y[i]));for(int k=1; k<=n; k++) {if(x[i]>=x1[k]&&y[i]>=y1[k]&&x[i+1]<=x2[k]&&y[i+1]<=y2[k]) {sum+=s;break;}}}cout<<sum<<endl;}return 0; }
2.来自《挑战程序设计竞赛》
区域的个数
w*h的各自上画了n条垂直或水平的宽度为1的直线,求出这些线将格子划分成了多少个区域。
限制条件:1<=w,h<=1000000 1<=n<=500
利用数组存储搜索即可,问题在于数的范围太大,所以要利用坐标离散化,数组中只需存储有直线的行列,及其前后的行列就够了。
//离散化函数,对坐标x1,x2进行离散化,并返回离散化之后的宽度 //其中x1,x2代表一条直线开头与结尾的列 y为行 //重新形成一个数组 #include<iostream> #include<algorithm> #include<utility> #include<vector> int Compress(int *x1,int *x2,int w) {vector<int> s;//只需存前后及自身坐标for(int i=0; i<n; i++) {for(int d=-1; d<=1; d++) {//首先判断前后int tx1=x1[i]+d;int tx2=x2[i]+d;if(1<=tx1&&tx1<=w) s.push_back(tx1);if(1<=tx2&&te2<=w) s.push_back(tx2);//进行排序删除重复的 }}sort(s.begin(),s.end());s.erase(unique(s.begin(),s.end()),s.end());//重新分配顺序for(int i=0; i<n; i++) {x1[i]=find(s.begin(),s.end(),x1[i])-s.begin();x2[i]=find(s.begin(),s.end(),x2[i])-s.begin();}return s.size(); }
转载于:https://www.cnblogs.com/wtblogwt/p/9750312.html
算法复习之坐标离散化相关推荐
- 问,你的算法复习计划是什么?
(另注:这篇文章发到首页,是希望多和大家交流,首先感谢大家) 小学和爸爸一起玩小霸王学习机,看着爸爸照着说明书上的程序在小霸王学习机上打出了一个超级玛丽奥.自己也尝试着打,却没有打出来. 初中,终于把 ...
- 算法复习第四章动态规划
算法复习第四章动态规划 动态规划 TSP问题 0-1bag 动态规划 TSP问题 0-1bag 最长公共子序列不考:
- 算法复习第三章分治法
算法复习第三章分治法 循环日程表 最近点对 快速排序: 循环日程表 最近点对
- 算法复习第六章第七章
算法复习第六章第七章 第六章回溯法 TSP问题 0-1bag问题 图着色问题 八皇后问题 第七章分支限界法 0-1bag问题 TSP问题 第六章回溯法 TSP问题 0-1bag问题 图着色问题 八皇后 ...
- 算法复习第五章贪心法
算法复习第五章贪心法 概述 TSP 最近邻点策略 最短连接策略 图着色问题 最小生成树(Prim算法.Kruskal) 0-1bag问题 活动安排问题 多机调度 概述 TSP 最近邻点策略 最短连接策 ...
- 大三寒假--算法复习
算法 复习的一些知识点 c++ 的数组初始化 fill memset c++ 的排序 c++ 的vetor 快速幂 m&1(位运算符) dfs和bfs 逆序对(使用归并算法解决) Java 的 ...
- 算法复习——动态规划篇之最长公共子序列问题
算法复习--动态规划篇之最长公共子序列问题 以下内容主要参考中国大学MOOC<算法设计与分析>,墙裂推荐希望入门算法的童鞋学习! 1. 问题背景 子序列:将给定序列中零个或多个元素(如字符 ...
- 数据结构与算法复习:一
算法复习第一天:论序 一.先了解几个人 ① 号目标人物 ② 号目标人物 二.数据结构的兴起和发展 1.客观世界与计算机世界的关系 2.程序设计的实质是什么 3.数据结构是随着程序设计的发展而发展的 三 ...
- 考研DS备考|算法复习|编程or上机准备
23考研算法复习 一.图论相关算法 1.拓扑排序 2.最小生成树 2.1 Prim算法朴素实现 2.2 最小生成树Kruskal实现 3.最短路 3.1朴素版Dijkstra 3.2Bellman-f ...
最新文章
- 输入textbox在datagridview显示结果_Excel输入正确的公式,计算出错,根本没计算解决技巧...
- 实战|基于图割算法的木材表面缺陷图像分析
- 关于开源精神和抄袭问题
- golang goroutine实现_golang技术随笔(二)理解goroutine
- Applet 大文件上传
- 图解Android - Zygote, System Server 启动分析
- Galgame研发日志:美术工作实乃重中之重
- sqldeveloper 连接oracle失败报12514(日常错误)
- WORD 粘贴代码 不检查语法
- UrlRewrite(URL重写)--ASP.NET中的实现
- scala入门-10 隐式转换、隐式参数、隐式类
- SSDB 配置文件详解
- 95-233-040-源码-TaskManager-TaskManager的jvm-exit-on-oom配置
- 服务器 linux mysql5.7修改密码,navicat远程登录不了
- 将Imagenet2012比赛数据解析为图像
- python一元线性回归算法,代码及参数更新动图展示
- Balanced Lineup
- Java编程入门与应用 P124——例5-4(计算90度的正弦值、0度的余弦值、1的反正切值、120度的弧度值)
- 华硕服务器设置固态盘启动不了系统盘,华硕uefi引导启动不了系统安装系统安装...
- ASUS路由器支持锐捷设置
热门文章
- adb 提示adb server version(31) doesn't match this client(40) 解决办法
- 线程为什么调用start()而不是直接调用run()
- java反射三种_Java反射
- python训练好的图片验证_利用keras加载训练好的.H5文件,并实现预测图片
- PHP学习笔记-Cookie
- eclipse配置Maven中的Tomcat的使用
- HQL查询(分页查询,动态sql查询,参数查询)
- openJDK与JDK的区别
- 【js】v-for 的一些用法 :class {{index}}
- 项目梳理6——使用WebApiTestClient为webapi添加测试