Cpp环境【OnlineJudge2704】【CQYZOJ3188】寻找极大点

信息学奥赛一本通C++语言——1230:寻找平面上的极大点 【题目描述】 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑点的坐标为负数的情况。 【输入】 输入包括两行,第一行是正整数n,表示是点数,第二行包含n个点的坐标,坐标值都是整数,坐标范围从 阅读详情
【问题描述】  

  在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。
  给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大点。请编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。
  这里写图片描述

 【输入格式】  

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

 【输出格式】 

  按x轴坐标最小到大的顺序输出所有极大点。输出格式为:(x1,y1),(x2,y2),…(xk,yk),按x由小到大,x相同则按y由小到达输出。注意:输出的每个点之间有”,”分隔,最后一个点之后没有”,”,少输出和多输出都会被判错。

【输入样例】   

5
1 2 2 2 3 1 2 3 1 4

 【输出样例】  

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

 【样例解释】  

样例的点和极大点的图形如下:
这里写图片描述

【数据范围】  

80%的数据满足:n<=6000
100%的数据满足:n<=100000

【来源】  

OpenJudge 2704
CQYZOJ P3188

【思路梳理】

没什么太多好说的,仔细想想就会发现用O(n)的算法就可以直接得出解,动态规划都不需要,简单讲解一下:

对于这种平面上的双关键字,肯定是让其中的一维有序,因为题目要求的是按照x横坐标升序输出,那么推荐sort的时候按照x关键字从小到大排序,否则的话输出时要再按照x从小到大的顺序输出,徒劳。

当x横坐标有序的时候,按照动态规划的思想就可以将样例简化为序列4,2,3,2,1,考察答案,选择了第一、三、五个点,不难发现就是求最长的严格递减序列上的各个点。也就是说用这里写图片描述的时间复杂度就可以解出答案。*十分不推荐使用动态规划因为不能够通过所有的点!*

给出一种可行而高效的搜索思路:设置数组t[i]=在下标为i~n的所有点中,纵坐标最大的点的纵坐标y。显然,在对于任意一个点a[i]是否能够成为极大点的考察的时候,如果t[i+1]>=a[i].y那么该点i不能成为极大点(在下标为i+1~n的点中至少存在一个点,其纵坐标不小于i点的纵坐标,如果其后面某一个点a[j]纵坐标与a[i]相等,那么根据题目表述,整个x<=a[j].x,y<=a[j].y都会被控制,包括了同一纵行上的所有点)。直接给出这里写图片描述的搜索算法

【Cpp代码】
#include<cstdio>
#include<iostream>
#include<algorithm>
#define maxn 100005
#define inf 100005
using namespace std;
int n,d[maxn],t[maxn];
bool mark[maxn];
struct data
{
    int x,y;
    friend bool operator<(data a,data b)
    {return a.x==b.x?a.y<b.y : a.x<b.x;}
}a[maxn];

void dp()
{
    //mark[i]=true(if a[i].y>t[i+1])
    //t[i]=编号为i至n的点中,纵坐标最大的点的纵坐标 
    for(int i=n;i>=1;i--)   d[i]=-inf,t[i]=max(t[i+1],a[i].y);
    for(int i=1;i<=n;i++)if(a[i].y>t[i+1])      mark[i]=true;
    bool ok=true;
    for(int i=1;i<=n;i++)if(mark[i])
    {
        if(ok)  ok=false,printf("(%d,%d)",a[i].x,a[i].y);
        else printf(",(%d,%d)",a[i].x,a[i].y);
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)   scanf("%d%d",&a[i].x,&a[i].y);
    sort(a+1,a+1+n);
    dp();
    return 0;
}
Coursera 学习记录:寻找平面上的极大点((x,y)坐标值的储存及二维数组的冒泡排序) 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x&gt;=a,y&gt;=b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑点的... 阅读详情

相关推荐

[土狗之路]coursera C语言进阶 习题 寻找平面上的极大点

这道题也是结构体比较简单。 直接上题: 编程题#4:寻找平面上的极大点 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;

panda711的博客 2256

[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4)

题目描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x&gt;=a,y&gt;=b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 输入输出格式 输入格式: ...

A.pro的博客 1217

1、Ovirt 开源虚拟化平台安装

Ovirt虚拟化Node和Engine安装

大鱼 6266

P2772 寻找平面上的极大点

在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。

2302_80415058的博客 443

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 271

C# chart以鼠标所在位置为中心进行缩放

以前都用labview做一些软件,但给出去总是会遇到版本,安装包过大等一些问题,于是想自学C#,记录一下使用过程中遇到的一些问题和解决措施,便于日后回顾。 在这个项目中需要绘制折线图,由于数据比较大,需要对图表进行缩放操作,以鼠标为中心对图表进行缩放,在网上查找了一些资料没找到我想要的,于是自己想了一个解决方案,可以基本实现,但略显繁琐,由于刚开始学习C#,对一些操作不太了解,若以后遇...

fei的博客 6363

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

【题目描述】 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑点的坐标为负数的情况。 【输入】 输入包括两行,第一行是正整数n,表示是点数,第二行包含n个点的坐标,坐标值都是整数,坐标范围从

everwide的博客 886

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2841

寻找平面上的极大点(贪心)

贪心

善良的小乔的博客 245

YOLOv11改进策略【Conv和Transformer】| IJCAI 2024 利用FreqFormer中的SFA 空间 - 频率注意力和CTA 通道转置注意力 二次改进C3k2

在FreqFormer模型中,SFA(Spatial-Frequency Attention)和CTA(Channel Transposed Attention)模块是关键组成部分,它们针对传统Transformer在图像超分辨率任务中的不足而设计,旨在更好地恢复高频细节,提升模型性能。

Limiiiing的博客 758

【图像增强(Image Enhancement )】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、关于答疑、文章目录、与我联系等(持续更新中...)

专栏内涉及的算法都是基于深度学习的图像增强算法;收录的文章基本上是基于Pytorch框架实现的,部分基于Tensorflow;预计完成100篇论文,并持续更新;专栏内文章主要为两部分:【论文精读】与【论文复现】论文精读:读懂论文,总结提炼,聚焦核心内容,不只是全文翻译论文复现:跑通流程,源码解析,提升代码能力,得到去噪结果以及指标计算综合而言,从大到小拆解模型结构,从小到大实现模型搭建。实现论文与源码的统一,深入理解论文行文逻辑与代码实现逻辑,融汇贯通二者思想,并学以致用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4051

寻找平面上的极大点

在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x&gt;=a,y&gt;=b;  用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。  给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。  编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。  本题规定:n不超过100,并且不考虑点的...

BigZong 2471

基于Python的CT骨料图像分割与STL批量导出完整指南

本文介绍了一套完整的Python解决方案,用于CT骨料图像的分割与STL导出。针对CT图像中颗粒粘连、噪声伪影等技术难点,提出基于分水岭算法的分割策略,结合距离变换与标记控制实现颗粒分离。内容包括环境配置、数据读取与预处理、Otsu阈值分割、分水岭算法实现、表面提取与STL导出等关键步骤。教程提供详细代码及解释,帮助读者从CT体数据出发,最终生成每个颗粒的三维网格文件,便于后续定量分析和数值模拟。

huanghm88的专栏 235

C/C++ (12月第二周)

  第一题:含k个3的数 输入两个正整数 m 和 k,其中1 &lt; m &lt; 100000,1 &lt; k &lt; 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。  例如,输入:  43833 3  满足条件,输出YES。 如果输入: 39331 3  尽管有3个3,但不能被19整除,也不满足条件,应输出NO。 输入 m 和 k ...

schuffel的博客 1063

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2485

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

3703:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑点的坐标为负数的情况。 输入 输入

海岛Blog 911

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

信息奥赛一本通1230:寻找平面上的极大点

1230:寻找平面上的极大点 【题目描述】 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过10...

mengdicfm的博客 1050

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

1230:寻找平面上的极大点

【题目描述】 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑...

C_Dreamy的博客 1227

寻找平面上的极大点(C程序设计进阶第9周)

问题描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。 编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。 本题规定:n不超过100,并且不考虑点的坐标

NodYoung 3211

Openjudge NOI题库 ch0406/2704 寻找平面上的极大点

总时间限制:1000ms内存限制:65536kB描述在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐...

313

信息学奥赛一本通 1230:寻找平面上的极大点 | OpenJudge NOI 4.6 2704:寻找平面上的极大点

【题目链接】 ybt 1230:寻找平面上的极大点 OpenJudge NOI 4.6 2704:寻找平面上的极大点 【题目考点】 1. 贪心 【解题思路】 题目中的极大点,直观理解就是右上方(不包含同一横线竖线)没有其他点的点。 解法1:选择满足xxx大于lxlxlx的点中yyy最大的点 1. 贪心选择性质的证明: lxlxlx表示上次选择的点的横坐标,初始值为-1。 对于给定的各个平面上的点(x,y)(x, y)(x,y) 贪心选择:选择满足xxx大于lxlxlx的点中yyy最大的点中xxx最大的点 解

君义NOIP的博客 2337

信息学奥赛一本通:1230:寻找平面上的极大点

信息学奥赛一本通:1230:寻找平面上的极大点

ffsdfg的博客 743
上一篇: Cpp环境【Usaco2007 Jan】【CQYZOJ1432】解题
下一篇: Cpp环境【Code[VS]4175】【CQYZOJ1824】收费站
cqyz_Lebmond
博客等级 码龄10年 18粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值