每日一練 19 2 13

2021-09-10 18:26:51 字數 1441 閱讀 1196

題目描述

經過11年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷:每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。

某天,雷達捕捉到敵國的飛彈來襲。由於該系統尚處於試驗階段,所以只有兩套系統投入工作。如果現在的要求是攔截所有的飛彈,請計算這一天的最小使用代價。

輸入

第一行包含4個整數x1、y1、x2、y2,每兩個整數之間用乙個空格隔開,表示這兩套飛彈攔截系統的座標分別為(x1,y1)、(x2,y2)。

第二行包含1個整數n(1≤n≤100000),表示有n顆飛彈。接下來n行,每行兩個整數x、y,中間用乙個空格隔開,表示一顆飛彈的座標(x,y)。不同飛彈的座標可能相同。

輸出

輸出只有一行,包含乙個整數,即當天的最小使用代價。

樣例輸入

0 0 10 0

2-3 3

10 0

樣例輸出

18提示

兩個點(x1,y1)、(x2,y2)之間距離的平方是(x1−x2)2+(y1−y2)2。

兩套系統工作半徑r1、r2的平方和,是指r1、r2分別取平方後再求和,即r12+r22。

對於100%的資料,1≤n≤100000,且所有座標分量的絕對值都不超過1000。

思路:

先獲得每個飛彈距離 p1,p2 兩站的距離平方和d1,d2,並根據與p1的距離平方和對其進行由大到小進行排序,當p1站半徑為可攔截第i個飛彈到第n個飛彈的時候,p2站的半徑需要可攔截第1個飛彈到第i-1個飛彈得到工作半徑r1、r2的平方和,最後得到工作平方和的最小值,即為答案

**實現

#include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const int n=100005;

struct node

att[n];

bool cmp(node a,node b)

int main()

}int max=0;

for(int i=1;i<=n;i++)

else if(j[i][k]>smax) smax=j[i][k];}}

if(max}

printf("1\n%d\n",max);

return 0;

}

每日一練4

員工表emp 員工編號eid,姓名ename,工作職位title,僱傭日期hiretime,工資salary,獎金bonus,部門depart 部門表dept 部門編號did,名稱dname,部門領導leader 員工資料 1001,張三 銷售 1999 12 1 3000.0,1100.0,102...

每日一練25

請描述 mysql 從安裝到配置的全部詳細過程 確保一台新電腦可以順利使用 mysql mysql安裝嚮導啟動,按 next 繼續 選擇安裝型別,有 typical 預設 complete 完全 custom 使用者自定義 三個選項,我們選擇 custom 有更多的選項,也方便熟悉安裝過程 選擇配置...

每日一練 13

談談你對ajax 的理解?概念 特點 作用 select 教師號,sum case when 星期號 1 and 是否有課 有 then 1 else 0 end as 星期一,sum case when 星期號 2 and 是否有課 有 then 1 else 0 end as 星期二,sum c...