zoukankan      html  css  js  c++  java
  • 51nodeE 斜率最大

    题目传送门

    这道题只要证明最佳解一定在相邻两个点之间的好啦 这个自己证一证就okay啦

    而且我发现n方的算法可以过耶...

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int M=10007;
    int read(){
        int ans=0,f=1,c=getchar();
        while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
        while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
        return ans*f;
    }
    double get(int x1,int y1,int x2,int y2){return 1.0*(y2-y1)/(x2-x1);}
    int n,top=1,q[M],x[M],sum;
    double mx,w;
    struct node{int x,y,pos;}e[M];
    bool cmp(node a,node b){return a.x!=b.x?a.x<b.x:a.y<b.y;}
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++) e[i].x=read(),e[i].y=read(),e[i].pos=i;
        sort(e+1,e+1+n,cmp);
        while(top<n){
            if((w=get(e[top].x,e[top].y,e[top+1].x,e[top+1].y))>mx) mx=w,sum=2,x[1]=e[top].pos,x[2]=e[top+1].pos;
            else if(w==mx) sum++,x[sum]=e[top].pos,sum++,x[sum]=e[top+1].pos;
            top++;
        }
        for(int i=1;i<=sum;i+=2) printf("%d %d
    ",x[i],x[i+1]);
        return 0;
    }
    View Code
  • 相关阅读:
    【一起来烧脑】读懂HTTP知识体系
    Day16:小前端
    Day15:大前端
    Day14:CSS垂直居中
    Day13:H5+JS+C3
    web学习
    javascript 闭包
    微信小程序微信登录
    微信小程序开源
    mpvue搭建小程序框架
  • 原文地址:https://www.cnblogs.com/lyzuikeai/p/7050756.html
Copyright © 2011-2022 走看看