新千題計畫 1 NOIP10 普及 飛彈攔截

2021-08-22 07:30:25 字數 1082 閱讀 8175

飛彈攔截【難度:noip d1t2】平面內兩飛彈攔截系統,位置固定,各可攔截以其位置為圓心之一圓形區域,但半徑可調整。今攔截

n n

個座標已知之飛彈,求兩攔截半徑平方和之最小值.

模擬。一道普及題百思不得,題解見證我的無知。

系統甲必有一攔截範圍。其內部點由甲攔截,故甲之範圍為此點至甲距離最大值;外部由乙攔截同理。故必有一點為兩者分界,至甲距離<=此則歸甲,否則歸乙。

故我們以至甲距離為關鍵字排序,對各點id1[i][1..i]至甲距離平方之最大值,d2[i][i..n]至乙距離平方之最大值,若以i分界,則平方和為d1[i] + d2[i + 1],故最終答案為min.

#include 

#include

#include

#include

typedef

std::pair bint;

const

int maxn = 100001;

int n, d1[maxn], d2[maxn], ans = 0x7fffffff; bint p1, p2, p[maxn];

inline

int dst(bint u, bint v)

int main() );

for(int i = 0; i < n; i++) d1[i] = std::max(d1[i - 1], dst(p[i], p1));

for(int i = n - 1; ~i; i--) d2[i] = std::max(d2[i + 1], dst(p[i], p2));

for(int i = 0; i < n; i++) ans = std::min(ans, d1[i] + d2[i + 1]);

return !printf("%d\n", ans);

}

Leetcode千題 1 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...

LeetCode 每日 1 題 打卡刷題計畫

活動頁面 佇列 隊首出,隊尾進 先進先出 queue 的基本操作有 q.push x 隊尾 d.push back x 隊尾 d.push front x 隊首 q.pop d.pop back d.pop front struct listnode vector操作push back 在陣列的最後...

LeetCode C 刷題計畫 1 兩數之和

author csu張揚 email csuzhangyang gmail.com or csuzhangyang qq.com 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找 出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你...