博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2296 Map Labeler(2-SAT+二分)
阅读量:4073 次
发布时间:2019-05-25

本文共 2093 字,大约阅读时间需要 6 分钟。

【题目链接】

【题目大意】

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

【思路】

可以很容易的看出,正方形要么在点的上方,要么在下方,所以是用2-SAT来判断的,关键是加边的判断,要涉及到两个正方形的位置的重叠关系比较麻烦。

然后二分正方形的边长即可。

【代码】

#include
#include
#include
#include
using namespace std;const int MAXN = 110;const int VN = MAXN*2;const int EN = VN*VN*2*10;const int INF = 0x3f3f3f3f;int n;int Abs(int n){ return n<0?-n:n;}struct Node{ int x, y;}arr[MAXN];struct Graph{ int size, head[VN]; struct{int v, next; }E[EN]; void init(){size=0; memset(head, -1, sizeof(head)); }; void addEdge(int u, int v){ E[size].v = v; E[size].next = head[u]; head[u] = size++; }}g;class Two_Sat{public: bool check(const Graph& g, const int n){ scc(g, 2*n); for(int i=0; i
= r) continue; if(Abs(arr[i].y-arr[j].y) >= 2*r) continue; if(Abs(arr[i].y-arr[j].y) < r){ if(arr[i].y > arr[j].y){ // i在上面 g.addEdge(i, j+n); g.addEdge(i+n, i); g.addEdge(j, j+n); g.addEdge(j+n, i); }else if(arr[i].y < arr[j].y){ g.addEdge(j, i+n); g.addEdge(j+n, j); g.addEdge(i, i+n); g.addEdge(i+n, j); }else{ g.addEdge(i, j+n); g.addEdge(i+n, j); g.addEdge(j, i+n); g.addEdge(j+n, i); } }else{ if(arr[i].y > arr[j].y){ g.addEdge(i+n, j+n); g.addEdge(j, i); }else{ g.addEdge(j+n, i+n); g.addEdge(i, j); } } } }}int main(){ int nCase; scanf("%d", &nCase); while(nCase--){ scanf("%d", &n); for(int i=0; i
>1; buildGraph(m); if(sat.check(g, n)){ ans = m; l=m+1; } else r=m; } printf("%d\n", ans); } return 0;}

转载地址:http://spzni.baihongyu.com/

你可能感兴趣的文章
flex编译时,会把trace语句也编译进去
查看>>
Timer的repeatCount和currentCount的区别
查看>>
as3工程和flex工程的区别
查看>>
stage和root的区别
查看>>
转贴关于AsWing和MXML 选项
查看>>
一日打开IE,IE就死掉了,原来是用了第三方开发windows主题皮肤的原因,用windows经典样式解决...
查看>>
svn客户端的用户名密码保存位置
查看>>
替换eclipse中folding的折叠代码的小图标
查看>>
mouseChildren为false后,
查看>>
Eclipse中的文本编辑器使用技巧
查看>>
在 flash.text.TextField 上找不到属性 play,且没有默认值。
查看>>
ANDROID物联网开发
查看>>
安卓开发项目实战我的云音乐
查看>>
ANDROID物联网开发
查看>>
UE4高级运动系统(Advanced Locomotion System V3)插件分析
查看>>
尘封的记忆第2卷:Serekh塞拉赫资源包
查看>>
adb server version (39) doesn't match this client (40); killing...
查看>>
adb server version (39) doesn't match this client (40); killing...
查看>>
Unity高级游戏地编案例
查看>>
UE4地编大型开放世界~制作烘焙全流程
查看>>