离散化
来源:互联网 发布:证券行业 知乎 编辑:程序博客网 时间:2024/04/29 06:24
题目:https://vijos.org/p/1056
描述
桌面上放了N个平行于坐标轴的矩形,这N个矩形可能有互相覆盖的部分,求它们组成的图形的面积。
格式
输入格式
输入第一行为一个数N(1≤N≤100),表示矩形的数量。下面N行,每行四个整数,分别表示每个矩形的左下角和右上角的坐标,坐标范围为–10^8到10^8之间的整数。
输出格式
输出只有一行,一个整数,表示图形的面积。
样例1
样例输入1[复制]
31 1 4 32 -1 3 24 0 5 2
样例输出1[复制]
10
离散化图形,然后暴力找符合条件的矩形,这不就是看着n=100么,等于10000就要跪。不过我还是掌握线段树做这道题!现在姿势还不够啊!先晾在这里,过段时间多!
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<queue>#include<set>#include<map>#include<cmath>#define mst(ss,b) memset((ss),(b),sizeof(ss))#define maxn 0x3f3f3f3fusing namespace std;__int64 x[220],y[220],x1[110],yy[110],x2[110],y2[110];__int64 a,b,c,d;int n;int main(){ cin.sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) { cin>>a>>b>>c>>d; x[i*2-1]=a; x[i*2]=c; y[i*2-1]=b; y[i*2]=d; x1[i]=a; yy[i]=b; x2[i]=c; y2[i]=d; } sort(x+1,x+2*n+1); sort(y+1,y+2*n+1); __int64 ans=0,s=0; for(int i=1;i<=2*n-1;i++) { for(int j=1;j<=2*n-1;j++) { s=(x[i+1]-x[i])*(y[j+1]-y[j]); for(int k=1;k<=n;k++) { if(x[i]>=x1[k] && y[j]>=yy[k] && x[i+1]<=x2[k] && y[j+1]<=y2[k]) { ans+=s; break; } } } } cout<<ans<<endl; return 0;}
0 0
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 关于离散化......
- 矩形离散化
- 什么是离散化?
- POJ1151 离散化
- 拓扑排序:hdu 1285 确定比赛名次
- 关于java对象的引用问题
- POJ 3009 Curling 2.0【深度优先搜索】
- android开发遇到的一个小问题
- Leetcode:Unique Paths
- 离散化
- 集合栈计算机(The SetStack Computer)
- C/C++程序员必须熟练应用的开源项目
- 【wxlua教程二】关于wxlua库的大小
- Maven常用插件
- java 并发机制---线程调用栈
- 大数据时代医疗行业爆发 政策壁垒仍是最大障碍
- hdu 1625 Numbering Paths 最短路的变形,使用Floyd 外加判环
- 【wxlua教程三】开始例程