1 条题解
-
0
https://www.luogu.com.cn/problem/solution/P8404
#include <bits/stdc++.h> using namespace std; const int maxn=1e2+7,inf=0x3f3f3f3f; int n,m,l,r,u,d,ans=-inf; struct node{ int x,y; }p[maxn]; bool dcmp(node x,node y){ return x.x==y.x?x.y<y.y:x.x<y.x; } bool lcmp(node x,node y){ return x.y==y.y?x.x<y.x:x.y<y.y; } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d",&p[i].x,&p[i].y); p[++m]=(node){0,0},p[++m]=(node){0,n+1},p[++m]=(node){n+1,0},p[++m]=(node){n+1,n+1}; sort(p+1,p+1+m,dcmp); for(int i=1;i<=m;i++){ l=1,r=n; for(int j=i+1;j<=m;j++){ if(r-l+1<p[j].x-p[i].x-1) break; ans=max(ans,p[j].x-p[i].x-1); if(l<=p[j].y&&p[j].y<=p[i].y) l=p[j].y+1; else if(r>=p[j].y&&p[j].y>p[i].y) r=p[j].y-1; } } sort(p+1,p+1+m,lcmp); for(int i=1;i<=m;i++){ u=1,d=n; for(int j=i+1;j<=m;j++){ if(d-u+1<p[j].y-p[i].y-1) break; ans=max(ans,p[j].y-p[i].y-1); if(u<=p[j].x&&p[j].x<=p[i].x) u=p[j].x+1; else if(d>=p[j].x&&p[j].x>p[i].x) d=p[j].x-1; } } printf("%d",ans); return 0; }
- 1
信息
- ID
- 111
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 47
- 已通过
- 2
- 上传者