zoukankan      html  css  js  c++  java
  • P1158 导弹拦截

    传送门

    只有两个拦截系统

    第一个拦截系统A拦截离自己较近的一些导弹,剩下的交给第二个拦截系统B。

    那我们可以枚举A拦截下的导弹集合(把导弹按照距离A的距离排序)

    那么排序后,假设A能拦截下前i个导弹,那么后面n-i个导弹由B来完成

    枚举后面的n-i个导弹,找出距离B的最大值即可。

    然后上述步骤可以从后往前取B的最大距离预处理掉。

    #include <iostream>
    #include <algorithm>
    using namespace std;
    struct p{
    	int x,y;
    	int q,w;
    }d[100009];
    bool com(p a,p b){
    	return a.q<b.q;
    }
    int intw[100009];
    int main()
    {
    	int x1,y1,x2,y2;
    	cin>>x1>>y1>>x2>>y2;
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)	
    	{
    		cin>>d[i].x>>d[i].y;
    		d[i].q=(x1-d[i].x)*(x1-d[i].x)+(y1-d[i].y)*(y1-d[i].y);
    		d[i].w=(x2-d[i].x)*(x2-d[i].x)+(y2-d[i].y)*(y2-d[i].y);
    	}
    	sort(d+1,d+1+n,com);
    	for(int i=n;i>=1;i--)
    		intw[i]=max(intw[i+1],d[i].w);
    	int ans=999999999;
    	for(int i=0;i<=n;i++)
    		ans=min(d[i].q+intw[i+1],ans);
    	cout<<ans;
    }
    
  • 相关阅读:
    vscode 基本知识以及如何配置 C++ 环境
    计算机视觉
    GitHub 大事件
    tf 2.0
    AI 公司与比赛
    Faster RCNN 学习与实现
    pycahrm安装说明
    python 并发之线程
    python 并发之进程
    python socketserver ftp上传功能
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12622501.html
Copyright © 2011-2022 走看看