POJ 2296 Map Labeler

题目链接

题意:
坐标轴上有N个点。要在每一个点上贴一个正方形,这个正方形的横竖边分别和x,y轴平行,而且要使得点要么在正方形的上面那条边的中点,或者在以下那条边的中点。而且随意两个点的正方形都不重叠(能够重边)。问正方形最大边长能够多少?

思路:显然的2-sat问题,注意推断两个矩形相交的地方,细节

代码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;const int MAXNODE = 205;struct TwoSet {int n;vector<int> g[MAXNODE * 2];bool mark[MAXNODE * 2];int S[MAXNODE * 2], sn;void init(int tot) {n = tot * 2;for (int i = 0; i < n; i += 2) {g[i].clear();g[i^1].clear();}memset(mark, false, sizeof(mark));}void add_Edge(int u, int uval, int v, int vval) {u = u * 2 + uval;v = v * 2 + vval;g[u^1].push_back(v);g[v^1].push_back(u);}void delete_Edge(int u, int uval, int v, int vval) {u = u * 2 + uval;v = v * 2 + vval;g[u^1].pop_back();g[v^1].pop_back();}bool dfs(int u) {if (mark[u^1]) return false;if (mark[u]) return true;mark[u] = true;S[sn++] = u;for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (!dfs(v)) return false;}return true;}bool solve() {for (int i = 0; i < n; i += 2) {if (!mark[i] && !mark[i + 1]) {sn = 0;if (!dfs(i)){for (int j = 0; j < sn; j++)mark[S[j]] = false;sn = 0;if (!dfs(i + 1)) return false;}}}return true;}
} gao;const int N = 105;int t, n;
struct Point {int x, y;void read() {scanf("%d%d", &x, &y);x *= 2;}
} p[N];bool judge(int len) {gao.init(n);for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (p[i].x + len <= p[j].x - len || p[j].x + len <= p[i].x - len) continue;for (int x = 0; x < 2; x++) {for (int y = 0; y < 2; y++) {int y1, y2, y3, y4;if (x == 0) {y1 = p[i].y - len;y2 = p[i].y;} else {y1 = p[i].y;y2 = p[i].y + len;}if (y == 0) {y3 = p[j].y - len;y4 = p[j].y;} else {y3 = p[j].y;y4 = p[j].y + len;}if ((y1 >= y3 && y1 < y4) || (y2 > y3 && y2 <= y4)|| (y3 >= y1 && y3 < y2)|| (y3 > y2 && y4 <= y2))gao.add_Edge(i, x, j, y);}}}}return gao.solve();
}int main() {scanf("%d", &t);while (t--) {scanf("%d", &n);for (int i = 0; i < n; i++)p[i].read();int l = 0, r = 20000;while (l < r) {int mid = (l + r) / 2;if (judge(mid)) l = mid + 1;else r = mid;}printf("%d\n", l - 1);}return 0;
}

转载于:https://www.cnblogs.com/clnchanpin/p/7058844.html

POJ 2296 Map Labeler(2-sat)相关推荐

  1. POJ 1696 Space Ant(极角排序)【计算几何】

    ACM博客_kuangbin POJ 1696 Space Ant(极角排序) Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  2. poj 2769 感觉♂良好 (单调栈)

    poj 2769 感觉♂良好 (单调栈) 比尔正在研发一种关于人类情感的新数学理论.他最近致力于研究一个日子的好坏,如何影响人们对某个时期的回忆. 比尔为人的一天赋予了一个正整数值. 比尔称这个值为当 ...

  3. VOC数据集mAP计算(附带代码)解析

    VOC数据集mAP计算(附带代码)解析 一.几个概念 IoU:交并比 (目标检测实际上是分类问题,检测器在图片上以不同像素尺度生成大量的框,如果检测器认为某个框里存在物体,就把它画出来) TP:画出了 ...

  4. POJ 3253 Fence Repair(修篱笆)

    POJ 3253 Fence Repair(修篱笆) Time Limit: 2000MS   Memory Limit: 65536K [Description] [题目描述] Farmer Joh ...

  5. 【POJ】2296 Map Labeler

    http://poj.org/problem?id=2296 题意:题意:给你n个点,每个点上都放一个正方形,点只能在正方形的上边或下边的中点上,所有正方形大小一样,不能有面积重叠,求最大的正方形.( ...

  6. POJ 3889 Fractal Streets(逼近模拟)

    $ POJ~3889~Fractal~Streets $(模拟) $ solution: $ 这是一道淳朴的模拟题,最近发现这种题目总是可以用逼近法,就再来练练手吧. 首先对于每个编号我们可以用逼近法 ...

  7. POJ 2396 构造矩阵(上下流)

    题意:       要求构造一个矩阵,给你行和,列和,还有一些点的上下范围,输出一个满足题意的矩阵. 思路:       这个题目很经典,这是自己看上下流后接触的第一道题,感觉很基础的一道题目,现在我 ...

  8. ARM 之十 ARMCC(Keil) map 文件(映射文件)详解

    在看这篇文章之前 需要对 ARM ELF 文件有一定的了解.了解什么是域(Region).节(Section,也称为节区).段(Segment).镜像(Image).镜像文件(Image File)等 ...

  9. 7-49 打印学生选课清单 (25 分)(思路+详解+map做法(一对多)+超时解决)Come baby!

    一:题目 假设全校有最多40000名学生和最多2500门课程.现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单. 输入格式: 输入的第一行是两个正整数:N(≤40000),为前来查询课 ...

最新文章

  1. Maximum Allowed Error 7 错误解决
  2. html文件用safari打开方式,如何使用openURL()读取在safari中打开的html文件 - c#代码 - 源码查...
  3. GAN的理解与TensorFlow的实现
  4. 经典C语言程序100例之七零
  5. 计算机学业水平测试题及答案初中,初中信息技术学业水平考试试题30号试题.doc...
  6. 详解struts2中struts.properties
  7. 验证启用了不安全的HTTP方法
  8. Modbus协议栈开发笔记之二:Modbus消息帧的生成
  9. 动软代码生成器连接Oracle 11g
  10. JavaScript-作用域和作用域链
  11. AD19自动布线出错,有些线未连接
  12. linux 创建用户_用 Bash 脚本发送新用户帐户创建的邮件 | Linux 中国
  13. split分割造成索引越界异常问题
  14. 控制工程中的数学建模(1)——二阶有源低通滤波器(之一)
  15. 最短路径(图论-北京地铁线路查询)
  16. 3年经验Java程序员面阿里P6 差距在哪里
  17. 多核 CPU 和多个 CPU 有何区别?与线程的关系?
  18. gradle尚硅谷笔记
  19. scrapy异步爬取猫眼实时票房
  20. 【图像处理】SFR算法详解1

热门文章

  1. Python常见问题(7):Python图形用户接口 Graphic User Interface FAQ
  2. 【图像算法】图像特征:GLCM灰度共生矩阵纹理特征
  3. python入门导引
  4. 编程之美-控制CPU占用率曲线方法整理
  5. curl获取结果乱码的解决方法之CURLOPT_ENCODING(curl/Post请求)
  6. 最近的状态很不好,需要调整
  7. ASP.NET中利用DataList实现图片无缝滚动
  8. The maximum string content length quota (8192) has been exceeded while reading XML data
  9. python使用pyodbc,freetds连接azure数据库
  10. 【技术总结】几种常用的无线串行通信技术