信息学奥赛一本通(1230:寻找平面上的极大点)
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:寻找平面上的极大点)相关推荐
- Bailian3703 寻找平面上的极大点【最值】
3703:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通超详细题解,动画图文题解
内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通 题解目录
刷题 很全的知识体系 转载:https://blog.csdn.net/u011815404/article/details/79324003 第一部分 C++语言 第一章 C++语言入门 T1001 ...
- 信息学奥赛一本通1336:寻找树根和孩子(图论算法-树)详细讲解
题目 信息学奥赛一本通(C++版)在线评测系统 思路讲解 首先我们可以看到这到题数据量不大,可以直接简单粗暴用邻接矩阵来存,用题目中的数据,邻接矩阵存储如下: 1 2 3 4 5 6 7 8 1 1 ...
- 信息学奥赛一本通1258:数字金字塔
题目 信息学奥赛一本通(C++版)在线评测系统 思路 这一道题大家可以自己先在纸上画一画,不出意外的话,你的答案应该是这样的 算出来答案是63,然而!有一个更优的答案!! 结果是86! 这是为啥嘞?因 ...
- 信息学奥赛一本通 第五版(C++版)
信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...
- 信息学奥赛一本通网站1672:游戏通关
如果你正在找这道题不超时(或者和自己的AC算法不一样)的算法,并且恰好像本蒟蒻一样会树状数组不会线段树,继续往下看 网址:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 这道题的贪心 ...
最新文章
- Apriltag : 用于视觉系统标定图标tag36H11
- Spark源码分析 – SparkEnv
- SpringBoot之日志
- 陌陌联席总裁离职 股价大涨背后阿里收购传闻再起
- python self调用函数_Python之self
- java项目中包的命名规范
- fscokopen 中执行超时 使用stream_set_timeout设置超时
- mysql.8.0.13ZIP安装教程_关于mysql 8.0.13zip包安装方法
- 金融评分卡项目—6.互联网金融业贷款申请评分卡介绍
- 白板推导系列Pytorch-隐马尔可夫模型-概率计算问题
- Java程序员必备的50道Kafka面试题及解析,面试再也不怕问Kafka了
- Duilib学习笔记(一)—— 环境搭建
- 关于PyQt5 菜单点击实现打开chm格式的文件
- 深空时代来临,探日究竟有何魔力?
- 能哄老婆睡觉的小故事
- 最好听的男孩、女孩名字
- 如何在电脑上保存微信公众号文章封面图片?
- SFuzz: Slice-based Fuzzing for Real-Time Operating Systems
- ubuntu下80端口无权限问题
- 3.2.2对中文的考察2