P1158 导弹拦截

题目描述

经过1111年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为0时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。

某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。

输入输出格式

输入格式:

第一行包含 4 4 个整数\(x_1,y_1,x_2,y_2\) ,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为\((x_1, y_1)\) 、\((x_2, y_2)\)。 第二行包含1个整数\(N\),表示有 \(N\)颗导弹。接下来\(N\)行,每行两个整数\(x,y\),中间用 一个空格隔开,表示一颗导弹的坐标\((x, y)\)。不同导弹的坐标可能相同。

输出格式:

一个整数,即当天的最小使用代价。

【数据范围】

对于 10% 的数据, \(N=1\)

对于 20% 的数据, \(1≤N≤2\)

对于 40% 的数据, \(1≤N≤100\)

对于 70% 的数据, \(1≤ N≤1000\)

对于 100% 的数据,\(1 ≤ N ≤ 100000\),且所有坐标分量的绝对值都不超过1000。


事实证明,并不是多做了几个省选模板的数据结构就可以让我变得强一些。这个题我想+A大概花了有一个小时左右。虽说可以说是第一次看见这样类似的题,但想这么长时间还是挺打击自信心的。

首先可能因为今晚做的一道贪心题,我先入为主胡乱打了一波贪心,还没交就被我hack掉了,但我想看看能骗多少分,还是交了上去,恩40海星了。

以为是贪心不完善,结果想了好久没办法。。

辗转画图中,我发现可以先处理一个点对所有的点的距离,然后枚举这些距离并算出另一个点要开的大小。首先排序保证单调,然后预处理另一个点。

我觉得可以理解为,通过排序使一个维度单调,然后暴力枚举令一个维度更新答案。


code:

#include <cstdio>
#include <algorithm>
int max(int x,int y){return x>y?x:y;}
int min(int x,int y){return x<y?x:y;}
const int N=100010;
const int inf=0x3f3f3f3f;
int x1,x2,y1,y2,mi1,mi2,mx[N];
struct node
{
int d1,d2;
friend bool operator <(node n1,node n2)
{
return n1.d1<n2.d1;
}
}d[N];
int get(int xk,int yk,int xl,int yl)
{
return (xk-xl)*(xk-xl)+(yk-yl)*(yk-yl);
}
int main()
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int x,y,n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
d[i].d1=get(x1,y1,x,y);
d[i].d2=get(x2,y2,x,y);
}
std::sort(d+1,d+1+n);
for(int i=n;i>=0;i--)
mx[i]=max(mx[i+1],d[i].d2);
int ans=inf;
for(int i=0;i<=n;i++)
ans=min(ans,mx[i+1]+d[i].d1);
printf("%d\n",ans);
return 0;
}

2018.6.15

洛谷 P1158 导弹拦截(不是那个DP) 解题报告的更多相关文章

  1. 洛谷 P1020导弹拦截题解

    洛谷链接:https://www.luogu.org/problem/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...

  2. 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)

    传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ...

  3. codevs1044 拦截导弹==洛谷 P1020 导弹拦截

    P1020 导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天 ...

  4. codevs——T1044 拦截导弹 || 洛谷——P1020 导弹拦截

    http://codevs.cn/problem/1044/ || https://www.luogu.org/problem/show?pid=1020#sub 时间限制: 1 s  空间限制: 1 ...

  5. 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告

    P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...

  6. 洛谷P1020 导弹拦截【单调栈】

    题目:https://www.luogu.org/problemnew/show/P1020 题意: 给定一些导弹的高度. 一个导弹系统只能拦截高度不增的一系列导弹,问如果只有一个系统最多能拦截多少导 ...

  7. 洛谷 [P1020] 导弹拦截 (N*logN)

    首先此一眼就能看出来是一个非常基础的最长不下降子序列(LIS),其朴素的 N^2做法很简单,但如何将其优化成为N*logN? 我们不妨换一个思路,维护一个f数组,f[x]表示长度为x的LIS的最大的最 ...

  8. 洛谷P1020 导弹拦截

    n²谁都会打,不说了. 这里讨论一下nlogn算法(单调不减): 首先开始考虑单调性,我习惯性的以为是单调队列/栈优化的那个套路,想要找到一个跟下标有关的单调性却发现没有. 例如:我想过当下标增加时f ...

  9. 题解-洛谷P1020P导弹拦截(求单调序列长度的优化)

    https://www.luogu.org/problemnew/show/P1020 (原题链接) 第一问就是求最长不上升子序列的长度,自然就想到了c++一本通里动态规划里O(n^2)的算法,但题目 ...

随机推荐

  1. mysql中Error : Invalid default value for 'timestamp'问题

    在执行mysql数据库时报错       timestamp给默认值出问题. 原因是:mysql的配置参数中sql_node中NO_ZERO_IN_DATE, NO_ZERO_DATE控制了times ...

  2. JQuery如何实现双击事件时不触发单击事件

    单击和双击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown, ...

  3. 【已解决】HeidiSQL连接(登录)MySQL数据库报错10061问题

    解决方法: 打开cmd->输入命令services.msc 然后打开即可解决.

  4. Mybatis 中 columnPrefix别名的用法

    1.映射对应的属性,区分他们分别属于哪些类.(sql书写的时候为什么要将前缀加上(别名),是因为便于它去寻找哪个类的前缀是ANNEX_) 2.例:  如下所示当一个collection 定义了一个co ...

  5. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  6. 701 C. They Are Everywhere

    链接 [http://codeforces.com/group/1EzrFFyOc0/contest/701/problem/C] 题意 给你一个包含大小写字母长度为n的字符串,让你找包含所有种类字符 ...

  7. Junit4测试用例

    一.题目简介 测试一元一次方程的求解 二.源码的github链接 https://github.com/liujing1994/test1 三.所设计的模块测试用例.测试结果截图   一元一次方程测试 ...

  8. Python小笔记

    最近在学习Python  以前也学过一些编程语言 但是都不扎实  由于工作的原因 需要学习Python做一些处理 刚开始学习总有多多少少的不适应  从今天开始打算将我在学习中遇到的困难以及疑问记录下来 ...

  9. 广商博客冲刺第三天new

    第二天沖刺傳送門 第三四天沖刺傳送門 这一天我们主要是弄网页前台设计跟框架设计,这方面主要是由张奇聪负责.我们在amaze ui,smart ui,angularjs+bootstrap中挑选,最终选 ...

  10. 5.2&5.3

    队友吕日荣 http://www.cnblogs.com/Russelling/ 最近队友有点忙,尽管如此,队友还是有很给力的付出,让我们在最后完成了任务. 一开始都不知道这次的任务是要做什么,毫无头 ...