洛谷P1369 矩形
来源:互联网 发布:搜狗搜索sem优化师 编辑:程序博客网 时间:2024/06/06 05:38
题目描述
给出平面上的n个点,请找出一个边与坐标轴平行的矩形,使得它的边界上有尽量多的点
输入输出格式
输入格式:
第一行一个整数n,为平面内点的个数。
第2~n+1行每行两个整数,为点的横、纵坐标。
输出格式:
只有一个数,为所取矩形边界上能包含尽量多的点的个数。
输入输出样例
输入样例#1:
10
2 3
9 2
7 4
3 4
5 7
1 5
10 4
10 6
11 4
4 6
输出样例#1:
7
说明
【数据范围】
对于40%的数据,n<=30
对于100%的数据,n<=300,各点的横、纵坐标在1~100范围内
此题应该是一道略有思维难度的题,涉及到数学逻辑思维的运用,对矩形的构造需要一定的想象能力。
要点:
1、枚举两个点,把他们作为矩形上两个相对的顶点,构建矩形;
2、特判所有点在一条直线上的情况,此时输出点的个数;
3、在两个点外另找一个点,分作矩形边界点和矩形内部点两种情况,记下此时矩形边上点的个数、矩形内部点的个数、矩形内部加边上点的个数,最后比较出最大值即可。
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cmath>using namespace std;struct dd{ int x,y;}a[310];int on[110],in[110],l[110],num[110],i,j,k,n,ans=0;int main(){ cin>>n; for(i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y); int x1=1,y1=1; for(i=2;i<=n;i++)//进行特判,若所有点在同一直线上,则输出点的个数 { if(a[i].y!=a[1].y) y1=0; if(a[i].x!=a[1].x) x1=0; } if(x1||y1)//所有点横坐标或纵坐标全相同的情况 { cout<<n; return 0; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(a[i].y>=a[j].y)//保证a[i].y<a[j].y,将a[i]和a[j]两点作为矩形两个相对的顶点,构造矩形 continue; else { memset(num,0,sizeof(num));//矩形边上点的个数 memset(on,0,sizeof(on));//矩形中间点的个数 memset(in,0,sizeof(in));//矩形中间加边上点的个数 for(k=1;k<=n;k++) { if(a[k].y==a[i].y||a[k].y==a[j].y)//若a[k]在矩形边上 { num[a[k].x]++; in[a[k].x]++; } if(a[k].y>a[i].y&&a[k].y<a[j].y)//a[k].y在a[i].y与a[j].y之间时 { on[a[k].x]++; in[a[k].x]++; } } l[1]=0; for(k=2;k<=100;k++) l[k]=l[k-1]+num[k-1];//当a[k]作为边上点时矩形内点的个数 int max0=on[1]-l[1]; for(k=2;k<=100;k++)//当a[k]作为矩形中间点时矩形内点的个数 { ans=max(in[k]+l[k]+max0,ans); max0=max(max0,on[k]-l[k]);//矩形缩小 } } cout<<ans; return 0;}
阅读全文
0 0
- 洛谷P1369 矩形
- Vijos P1369难解的问题
- Vijos P1369难解的问题
- VIJOS-P1369 难解的问题
- 【DP】vijos P1369 难解的问题
- 洛谷 P1034 矩形覆盖
- 洛谷 P2449 [SDOI2005]矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 矩形
- 自己学着写一个BindView来减少findViewById的应用
- Hibernate---缓存
- react-native之初识react-native
- ZooKeeper典型应用——分布式锁
- 用CMake为Qt生成visual studio的工程
- 洛谷P1369 矩形
- linux网络编程,进程间的通信之互斥锁与条件变量
- 杭电oj1014 互质就可以了
- display:none ,inline, block, inline-block
- Go mobile(一)
- FZU1977 Pandora adventure
- Activity 跳转到指定非宿主 Fragment
- Idea git打tag
- memcached简介(转)