博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
今日题解------uvalive 2689
阅读量:6441 次
发布时间:2019-06-23

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

今天学到了代码以外的东西,就是你在vj上挂了content ,然后你想更新它,你就要刷新一下,不然你提交的那题可能提交到别的地方。

好了回到重点,本题的题意是:

#include
#define de(x) cout<<#x<<"="<
<
=(b);--i)#define repp(i,a,b,t) for(int i=a;i<(b);i+=t)#define ll long long#define mt(a,b) memset(a,b,sizeof(a))#define fi first#define se second#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f3f3f3f3f#define pii pair
#define pdd pair
#define pdi pair
#define mp(u,v) make_pair(u,v)#define sz(a) a.size()#define ull unsigned long long#define ll long long#define pb push_back#define PI acos(-1.0)#define qc std::ios::sync_with_stdio(false)const int mod = 1e9+7;const int maxn = 1e6+9;const double EPS = 1e-6;using namespace std;struct Point{ int x,y;}p[maxn];bool cmp1(Point a,Point b){ return a.x
ans){ ans = min(p[j].x-lx,r-l); ansl = lx; ansr = l; } if(p[i].y==p[j].y) break; if(p[i].y
ans){ ans = min(lx-p[j].x,r-l); ansl = p[j].x; ansr = l; } if(p[i].y==p[j].y) break; if(p[i].y
ans){ ans = min(w,p[i].y-p[i-1].y); ansl = 0; ansr = p[i-1].y; } } } printf("%d %d %d\n",ansl,ansr,ans); if(T) cout<

 

求一个最大正方形,边界可以包含障碍点,内部不能。

解法:

可以看看这个论文:http://www.doc88.com/p-9042008501060.html

我们可以用单调栈来做,但是复杂度是O(nm),不能,但是我们可以用另一个方法,就是那个网站里的算法一,复杂度为O(s*s),s为障点数;

做法就是先加入0,0和w,h这两个点(可以阻止第一类遗漏),先按x坐标排序,枚举每一个左边界,然后在反过来,枚举每一个右边界

然后接着就是矩形左边界和最左重合,右边界和最右重合的情况我门还是遗漏了,所以我们可以按y拍个序,枚举每两个y之间的矩形

代码:

 

转载于:https://www.cnblogs.com/chinacwj/p/7979693.html

你可能感兴趣的文章
我的友情链接
查看>>
linux为启动菜单加密码
查看>>
MySQL5.5编译方式安装实战
查看>>
细谈Ehcache页面缓存的使用
查看>>
GridView如何设置View的初始样式
查看>>
Placeholder in IE8 and older
查看>>
SQL语句字符串处理大全
查看>>
环境变量的作用,为什么要设置环境变量?
查看>>
从尾到头打印单链表
查看>>
getopt
查看>>
我的第一个IT产品:PublicLecture@HK【My First IT Product】
查看>>
优秀员工与普通员工
查看>>
CCNP学习笔记15-RSTP
查看>>
DELL服务器iDRAC相关设置
查看>>
JVM学习笔记(一)------基本结构
查看>>
$@等特定shell变量的含义
查看>>
我的友情链接
查看>>
(超详细版)Linux下Hadoop2.7.1集群环境的搭建(3台为例)
查看>>
策略模式、上下文与内部类的思考
查看>>
关于getCurrentUrl的获取问题
查看>>