• codevs 1128 导弹拦截 (贪心)


    /*
    题目大体意思是两套系统好多导弹 
    怎样分配使得两个系统所拦截的最大半径之和最小
    贪心:把距离1系统最远的 让2拦截 
    记好距离 然后按照距离1由远到近排序
    对于每一个导弹 如果这之前的都给2拦截 则1的半径就是ri
    2的半径则是前面所有的的max ans就是两者之和 
    我们O(n)的跑一边 边跑边维护min就好了 
    */
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #define maxn 100010
    using namespace std;
    int n,s;
    struct node
    {
        int ss1;
        int ss2;
    };
    node aa[maxn];
    int x11,y11,x22,y22;
    int jisuan(int x1,int y1,int x2,int y2)
    {
        return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
    }
    int cmp(const node &x,const node &y)
    {
        if(x.ss1>y.ss1)return 1;
        return 0;
    }
    int main()
    {
        int i;
        int a,b;
        cin>>x11>>y11>>x22>>y22>>n;
        for(i=1;i<=n;i++)
          {
              cin>>a>>b;
              int s1=jisuan(a,b,x11,y11);
              int s2=jisuan(a,b,x22,y22);
              aa[i].ss1=s1;
              aa[i].ss2=s2;
          }
        sort(aa+1,aa+1+n,cmp);
        int tot=999999999,mm=0;
        for(i=1;i<=n;i++)
          {
              tot=min(tot,aa[i].ss1+mm);
              mm=max(mm,aa[i].ss2);
          }
        cout<<tot;
    }
  • 相关阅读:
    solr 简要笔记
    JQuery select 编程时选中原有的值
    java设计模式图
    java设计模式
    qq空间微博等更多社交平台分享
    API调用开发demo
    fastJson
    小程序开发
    史上最全的机器学习资料(上)
    大数据”学习资源(下)
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5551241.html
Copyright © 2020-2023  润新知