51nod 1100 斜率最大

合成孔径雷达Chirp Scaling(CS)算法MATLAB仿真实现 本人也是初学《合成孔径雷达成像算法与实现》,在GitHub上下载的关于CS算法的代码,仔细读了读,发现中间有一些不合理之处,动手改了一改,重新写了一个代码供初学者学习,有什么问题留言即可。 非常感谢源代码的作者,虽然中间有少许不正确的地方,但是对我理解cs算法的帮助非常大,非常感谢!!! 代码中提到的(4.31)这种均是在《合成孔径雷达成像算法与实现》中的公式 以下是MATLAB的仿真程序,直接复... 阅读详情

 

平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。

(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐标为随机。)

Input

第1行,一个数N,N为点的数量。(2 <= N <= 10000)
第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <= 10^9)

Output

每行2个数,中间用空格分隔。分别是起点编号和终点编号(起点的X轴坐标 < 终点的X轴坐标)

Input示例

5
1 2
6 8
4 4
5 4
2 3

Output示例

4 2

 

 

 

  学校老司机建议写下自己当时思路,有利于以后复习,一开始还没怎么在意,今天看两周前的题目居然忘了怎么做,吓得我马上开了个博客,主要是学习过程,非大神,看官们轻喷

  

  首先看了这道题第一感觉是暴力(菜鸡只能暴力), 最暴力的方法就是两个for循环,比较斜率,估计会爆所以跳过

         1  :将点首先按x坐标排序,有利于保存答案和优化

         2  :计算过程保存一个最高y点,在x增大的情况下y如果一样大,肯定斜率更低。

         3  :保存的话用数组保存两个点的x值,因为题目x都不相同,题目要求输出原来的数组的顺序点,所以开个数组保存原顺序,然后算出答案从中匹配

       附上代码:

    

#include<iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <stack>
#include<cstdio>
using namespace std;
   long long int n,i,j,ansnum=0,ymax=0,temp,shunxu[10005],ax=0,ay=0;
   double xielv=0,txielv;
 struct dian
    {
     long long   int  x,y;
    }d[10005],ans[10005];
int cmp(dian a,dian b)
{
    if(a.x<b.x)
        return 1;
    return 0;
}
int main()
{

   scanf("%lld",&n);
   for(i=0;i<n;i++)
   {
    scanf("%lld%lld",&d[i].x,&d[i].y);
    shunxu[i]=d[i].x;
   }
   sort(d,d+n,cmp);
   temp=n-1;
   for(i=0;i<temp;i++)
   {
       ymax=d[i].y;
       for(j=i+1;j<=temp;j++)
       {
           if(d[j].y<=ymax)
            continue;
            if(d[j].y<=d[i].y)
                continue;
            txielv=(double(d[j].y-d[i].y))/(double(d[j].x-d[i].x));
           if(txielv>xielv)
           {
               ymax=d[j].y;
               xielv=txielv;
               ans[0].x=d[i].x;
               ans[0].y=d[j].x;
               ansnum=1;
           }
           else if(txielv==xielv)
           {
               ans[ansnum].x=d[i].x;
               ans[ansnum].y=d[j].x;
           }
       }
   }
     for(i=0;i<ansnum;i++)
     {
         for(j=0;j<n;j++)
         {
             if(shunxu[j]==ans[i].x)
                ax=j+1;
             else if(shunxu[j]==ans[i].y)
                ay=j+1;
         }
         printf("%lld %lld\n",ax,ay);
     }
    return 0;
}

 

 

 

然后发现别人的代码都是20ms以内

发现有个数学规律,排序后斜率最大的两个点肯定是相邻的,用反证法更容易验证,那我写那么多干吗唉

附上代码:

 

#include<iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <stack>
#include<cstdio>
#include <set>
#include<queue>
using namespace std;
   long long int n,i,j,ansnum=0,ymax=0,temp,shunxu[10005],ax=0,ay=0;
   double xielv=0,txielv;
 struct dian
    {
     long long   int  x,y;
    }d[10005],ans[10005];
int cmp(dian a,dian b)
{
    if(a.x<b.x)
        return 1;
    return 0;
}
int main()
{

   scanf("%lld",&n);
   for(i=0;i<n;i++)
   {
    scanf("%lld%lld",&d[i].x,&d[i].y);
    shunxu[i]=d[i].x;
   }
   sort(d,d+n,cmp);
   temp=n-1;
   for(i=0;i<temp;i++)
   {
      j=i+1;
            if(d[j].y<=d[i].y)
                continue;
            txielv=(double(d[j].y-d[i].y))/(double(d[j].x-d[i].x));
           if(txielv>xielv)
           {
               xielv=txielv;
               ans[0].x=d[i].x;
               ans[0].y=d[j].x;
               ansnum=1;
           }
           else if(txielv==xielv)
           {
               ans[ansnum].x=d[i].x;
               ans[ansnum].y=d[j].x;
           }
   }
     for(i=0;i<ansnum;i++)
     {
         for(j=0;j<n;j++)
         {
             if(shunxu[j]==ans[i].x)
                ax=j+1;
             else if(shunxu[j]==ans[i].y)
                ay=j+1;
         }
         printf("%lld %lld\n",ax,ay);
     }
    return 0;
}

 

只是把一个循环改成了i+1;因为按x排序,所以只要和后一个比较

如果早知道这个规律根本不用那么多行,还是太年轻

 

 

 

YOLO11改进策略【独家融合改进】| EfficientViMBlock + LGAG + DySample 通过学习采样来学习上采样DySample。 阅读详情

相关推荐

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

51nod1100 斜率最大

1100 斜率最大 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不

Dave_lzw的博客 535

【Burp入门第二篇】Chrome配置BurpSuite代理教程

1、配置Burp代理为127.0.0.1:80802、扩展商店添加插件switchyomega,修改服务器和端口为下图:3、打开代理,选择刚才添加的代理

等风来 8368

平面上N个点,每两个点都确定一条直线, 求出斜率最大的那条直线所通过的两个点

平面上N个点,每两个点都确定一条直线, 求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。 平面上N个点,每两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。 关于这道题,网上已经给出了解答要点: 3个点A,B,C,把它们的按x坐标排序。假设排序后的顺序是ABC,那么有两种情况:

jfkidear的专栏 6825

YOLO26改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力YOLO26精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 193

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

51Nod1100 斜率最大

1100斜率最大 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 收藏 关注 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐...

didai0291的博客 302

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

51Nod_1100 斜率最大【计算几何基础】

                                            51Nod_1100 斜率最大                                    http://www.51nod.com/Challenge/Problem.html#!#problemId=1100     题目 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率...

逐梦者 446

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3812

2、机器人控制技术:阻抗/导纳控制与强化学习的融合

本文探讨了阻抗/导纳控制与强化学习在机器人控制中的融合应用。阻抗/导纳控制广泛应用于外骨骼和跟踪控制,通过改进方案提升建模误差下的鲁棒性;强化学习则为解决维度灾难、实现最优交互提供了有效途径,尤其在大输入空间、连续时间系统、冗余机器人及鲁棒控制中表现突出。结合近似器与合理奖励设计,强化学习可在无模型情况下实现高效控制。未来,两者融合有望推动更智能、更安全的机器人系统发展。

ice55的博客 300

51nod 1100 斜率最大

平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等) Input 第1行,一个数N,N为点的数量。(2 <= N <= 10000) 第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9

AK_HuangYC的博客 818

组态王与DLT645-2007电能表通讯调试总结

组态王与电力协议DLT 645-2007调试总结 DLT 645-2007是多功能电能表通信协议,该标准由中国电力企业联合会2006年提出,该协议为主-从结构的半双工通信方式。手持单元或其它数据终端为主站,多功能电能表为从站。每个多功能电能表均有各自的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。帧是传送信息的基本单元,每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成,帧格式如图1所示。 1.确定设备地址 地址域由 6 个字节构

逍遥子的博客 1万+

51nod1100斜率最大

51nod1100斜率最大按照x坐标从小到大排序 斜率最大的肯定是相邻的两个坐标#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<string> #include<set> using namespace std; typedef long lon

CoderFly的博客 529

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

51nod_1100_斜率最大

51nod_1100_斜率最大 题目链接 题目描述 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐标为随机。) Input 第1行,一个数N,N为点的数量。(2 <= N <= 10

晨起尘又落 284

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

51NOD 1100 斜率最大

传送门平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等) Input 第1行,一个数N,N为点的数量。(2 <= N <= 10000) 第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <

代码改变世界 2167

51Nod-1100-斜率最大

ACM模版描述题解因为斜率最大的两点一定是x轴坐标相邻的两点。 所以,先进行排序,将斜率最大的线存起来,最后对线进行按x轴坐标排序,正序输出对应编号即可。代码#include <iostream> #include <algorithm> #include <cstdio>using namespace std;const int MAXN = 1e4 + 10;struct point {

逐梦者 732

51Nod 1100 斜率最大

平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等) Input 第1行,一个数N,N为点的数量。(2 <= N <= 10000) 第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <= 1

iamldy的博客 347

51Nod--1100-斜率最大

51Nod--1100-斜率最大 1100斜率最大 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等) Input 第1行,一个数N,N为点的数量。(2<=N...

weixin_30794499的博客 125

51nod-1100 斜率最大

1100 斜率最大 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐标为随机。)Input第1行,一个数N,N为点的数量。(2 &...

随风而行的博客 282

51Nod-1100 斜率最大

1100 斜率最大` 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐标为随机。) Input 第1行,一个数N,N

hg_zhh 437

51Nod 1100-斜率最大

1100 斜率最大 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题题目链接 收藏 关注平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等,且点坐标为随机。)Input第1行,一个数N,N为点的数量。...

x_mn的博客 204
下一篇: 51nod 1287 加农炮 acm
Zero丶圈圈
博客等级 码龄9年 6粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值