1230:寻找平面上的极大点

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 4853     通过数: 2625

【题目描述】

在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b;

用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。

给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。

编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。

本题规定:n不超过100,并且不考虑点的坐标为负数的情况。

【输入】

输入包括两行,第一行是正整数n,表示是点数,第二行包含n个点的坐标,坐标值都是整数,坐标范围从0到100,输入数据中不存在坐标相同的点。

【输出】

按x轴坐标最小到大的顺序输出所有极大点。

输出格式为:(x1,y1),(x2,y2),...(xk,yk)。

注意:输出的每个点之间有","分隔,最后一个点之后没有",",少输出和多输出都会被判错。

【输入样例】

5
1 2 2 2 3 1 2 3 1 4

【输出样例】

(1,4),(2,3),(3,1)

【提示】

【分析】

根据题意,以及样例图示可以看出,(1,4),(2,3),(3,1)是极大点,因为在给定的点中找不出某个点的横纵坐标都大于这些点的坐标值。

用贪心算法求解该题,步骤为:

(1)先将给定的点按照x坐标,从小到大进行排序,如果x值相同,再按照y坐标,从小到大排序。给定的样例坐标点,排序前为:(1,2),(2,2),(3,1),(2,3),(1,4)。排序后为:(1,2),(1,4),(2,2),(2,3),(3,1)。

(2)判断某点(i,j)是否为极大点,那么可以搜索后面的点的x,y是否同时大于该点坐标,即x≥i && y≥j,如果存在这样的点,那么(i,j)就不是极大点。

【参考代码】

#include <stdio.h>
#define N 110struct point
{int x;int y;
}a[N],t;int n;void sort()
{int i,j;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(a[i].x > a[j].x){t=a[i];a[i]=a[j];a[j]=t;}else if(a[i].x==a[j].x && a[i].y > a[j].y){t=a[i];a[i]=a[j];a[j]=t;}}}
}
int main()
{int i,j;int first=1;      //标记是否是第一个 int found;        //标记是否能找到 scanf("%d",&n);for(i=0;i<n;i++)scanf("%d%d",&a[i].x,&a[i].y);sort();for(i=0;i<n;i++){found=1;for(j=i+1;j<n;j++){if(a[i].x <= a[j].x && a[i].y <= a[j].y){found=0;break;}}if(found){if(first){printf("(%d,%d)",a[i].x,a[i].y);first=0;}else{printf(",(%d,%d)",a[i].x,a[i].y);}} }printf("\n");return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1230

信息学奥赛一本通(1230:寻找平面上的极大点)相关推荐

  1. Bailian3703 寻找平面上的极大点【最值】

    3703:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 信息学奥赛一本通超详细题解,动画图文题解

    内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...

  4. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  5. 信息学奥赛一本通 题解目录

    刷题 很全的知识体系 转载:https://blog.csdn.net/u011815404/article/details/79324003 第一部分 C++语言 第一章 C++语言入门 T1001 ...

  6. 信息学奥赛一本通1336:寻找树根和孩子(图论算法-树)详细讲解

    题目 信息学奥赛一本通(C++版)在线评测系统 思路讲解 首先我们可以看到这到题数据量不大,可以直接简单粗暴用邻接矩阵来存,用题目中的数据,邻接矩阵存储如下: 1 2 3 4 5 6 7 8 1 1 ...

  7. 信息学奥赛一本通1258:数字金字塔

    题目 信息学奥赛一本通(C++版)在线评测系统 思路 这一道题大家可以自己先在纸上画一画,不出意外的话,你的答案应该是这样的 算出来答案是63,然而!有一个更优的答案!! 结果是86! 这是为啥嘞?因 ...

  8. 信息学奥赛一本通 第五版(C++版)

    信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...

  9. 信息学奥赛一本通网站1672:游戏通关

    如果你正在找这道题不超时(或者和自己的AC算法不一样)的算法,并且恰好像本蒟蒻一样会树状数组不会线段树,继续往下看 网址:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 这道题的贪心 ...

最新文章

  1. Apriltag : 用于视觉系统标定图标tag36H11
  2. Spark源码分析 – SparkEnv
  3. SpringBoot之日志
  4. 陌陌联席总裁离职 股价大涨背后阿里收购传闻再起
  5. python self调用函数_Python之self
  6. java项目中包的命名规范
  7. fscokopen 中执行超时 使用stream_set_timeout设置超时
  8. mysql.8.0.13ZIP安装教程_关于mysql 8.0.13zip包安装方法
  9. 金融评分卡项目—6.互联网金融业贷款申请评分卡介绍
  10. 白板推导系列Pytorch-隐马尔可夫模型-概率计算问题
  11. Java程序员必备的50道Kafka面试题及解析,面试再也不怕问Kafka了
  12. Duilib学习笔记(一)—— 环境搭建
  13. 关于PyQt5 菜单点击实现打开chm格式的文件
  14. 深空时代来临,探日究竟有何魔力?
  15. 能哄老婆睡觉的小故事
  16. 最好听的男孩、女孩名字
  17. 如何在电脑上保存微信公众号文章封面图片?
  18. SFuzz: Slice-based Fuzzing for Real-Time Operating Systems
  19. ubuntu下80端口无权限问题
  20. 3.2.2对中文的考察2

热门文章

  1. 正则表达式——(一)
  2. 格密码教程(四):SVP和CVP,Hermite定理,Blichfeld定理和Minkowski定理
  3. 最新!全球学术排名出炉:22所中国大学位居世界100强
  4. 50年后的地球什么样?大数据、AI、量子计算的书单给你答案
  5. 数据分析李小璐PG one出轨门自卫反击战
  6. 新来个专家吐槽我们:连qps都不懂,靠谱吗?
  7. 阿里技术专家都铎:一文搞懂技术债
  8. Linux服务器中木马(肉鸡)手工清除方法
  9. 一个ALV(OO)的实例
  10. MyEclipse下XFire开发Webservice实例