矩形合并
来源:互联网 发布:golang syscall说明 编辑:程序博客网 时间:2024/05/20 05:58
http://www.acmicpc.sdnu.edu.cn/problem/show/1016
不是很难,让我自己东弄弄西弄弄,弄的特别复杂。一开始每个点的遍历果断的TLE,然后想到了结构体,但是写判断的过程时,脑子过了一遍就发现了无数种的覆盖可能。没办法了,找同学要的源码,一开始,也没看明白,慢慢的理解,((!(juxing[i].a>=juxing[j].c||juxing[j].a>=juxing[i].c||juxing[i].b>=juxing[j].d||juxing[j].b>=juxing[i].d))这句话是关键,前面加了一个!,那不就把不覆盖的情况去掉了,就是 覆盖的情况了吗?不覆盖的情况很少啊。体现了一个正难则反的原则。
#include<iostream>#include<stdio.h>#include<cmath>#include<string>#include<algorithm>using namespace std;struct MyStruct{ int a, b, c, d; int id;}juxing[105];int main(){ int n; cin >> n; for (int i = 0; i < n; i++) { scanf_s("%d%d%d%d", &juxing[i].a, &juxing[i].b, &juxing[i].c, &juxing[i].d); juxing[i].id = i; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (juxing[i].id!=juxing[j].id) { if (!(juxing[i].a>=juxing[j].c||juxing[j].a>=juxing[i].c||juxing[i].b>=juxing[j].d||juxing[j].b>=juxing[i].d)) { if (juxing[i].id<juxing[j].id) { juxing[j].id = juxing[i].id; } else { juxing[i].id = juxing[j].id; } } } } } int daan = 0; for (int i = 0; i < n; i++) { if (juxing[i].id==i) { daan++; } } cout << daan << endl; system("pause"); return 0;}
0 0
- 矩形合并
- SDNU 1016.矩形合并 并查集
- C语言 两个矩形的合并
- 扫描线 求多个矩形合并后的周长 hdu1828 Picture
- 扫描线 求挖空矩形合并面积 hdu3265 Posters
- UVA1492 LA5694 线段树扫描线(矩形面积合并)
- 2D地形对象区域优化-矩形合并算法
- SDNU——OJ——1016矩形合并
- HDU1542 POJ1151矩形面积合并(线段树+离散化)
- HDU1828矩形周长合并(线段树+离散)
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- Ubuntu14.04 apt-fast加速apt-get
- android在framework层增加自己的service仿照GPS
- coj 1067: 1 VS 1
- 黑马程序员--java概述
- 简单测试一下go(golang) 和libtask 协程的切换效率
- 矩形合并
- 学习hadoop(3)join日志
- ubuntu安装redis
- 黑马程序员———面向对象之多态、抽象类和接口
- Java设计模式之——单例模式
- 基于OpenCV的目标物体颜色及轮廓的识别方法
- hdu 5289 Assignment(RMQ,单调队列,multiset)
- Socket开发
- coj 1155: |a-b|