D. Searchlights(思維+列舉距離)
https://codeforces.com/contest/1408/problem/D
思路:
有很多人和很多監控,考慮列舉。
考慮將橫縱座標分開考慮。
先在有效工作的監控中列舉。
考慮對於每個橫座標差為x的監控來說,對應的和監控橫座標差為x的人至少需要向上走y步才能逃離。
然後再來列舉向右走的步數從最大的1e6到0中,能走出來的的向上走+向右走的最小值是多少。
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=2e3+100;
typedef int LL;
struct rob{
LL x,y;
}re[maxn];
struct light{
LL x,y;
}li[maxn];
LL v[1000060];
int main(void)
{
cin.tie(0);std::ios::sync_with_stdio(false);
LL n,m;cin>>n>>m;
for(LL i=1;i<=n;i++){
cin>>re[i].x>>re[i].y;
}
for(LL j=1;j<=m;j++){
cin>>li[j].x>>li[j].y;
}
for(LL i=1;i<=n;i++){
for(LL j=1;j<=m;j++){
if(li[j].x-re[i].x>=0&&li[j].y-re[i].y>=0){
v[li[j].x-re[i].x]=max(v[li[j].x-re[i].x],(li[j].y-re[i].y+1));
//對於每個橫座標差為x的監控來說,至少需要向上走y步才能出去
}
}
}
LL ans=1e7;LL r=-1e7;
for(int i=1000000;i>=0;i--){ //注意從大到小,不然會出現不存在的情況當最小值
r=max(r,v[i]);///往右走i步時,至少向上需要多少步
ans=min(ans,r+i); //加上往右走的步數,列舉總體最小步數
}
cout<<ans<<endl;
return 0;
}
相關文章
- CF 1978 D. Elections (*1600) 思維
- 計算機程式的思維邏輯 (23) – 列舉的本質計算機
- 馬氏距離與歐氏距離
- CF 1805 D. A Wide, Wide Graph (*1800) 思維 + 樹的直徑IDE
- 【Python】距離Python
- leetcode-624.陣列列表中的最大距離LeetCode陣列
- JavaScript 元素距離視窗頂部的距離JavaScript
- 字母統計(陣列思維)陣列
- 曼哈頓距離與切比雪夫距離
- 編輯距離及編輯距離演算法演算法
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- unit原子距離
- Laravel 距離排序Laravel排序
- 餘弦距離
- 馬氏距離
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法
- 【DP】編輯距離
- 距離度量學習
- 曼哈頓距離與切比雪夫距離的互化
- 思維體系---技術思維、業務資料思維、產品思維、複合思維
- 02聚類演算法-相似度距離公式、維度災難聚類演算法公式
- 子集列舉最佳化與高維字首和
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 漢明距離(Hamming distance)
- 距離容差來源
- 461. 漢明距離
- Java 列舉、JPA 和 PostgreSQL 列舉JavaSQL
- 用斷、舍、離的思維做軟體測試
- 封裝與職責分離的開發思維封裝
- 列舉
- 淺析工具思維、產品思維、品牌思維與定位
- 列舉和列舉的取值範圍
- 求職思維和招聘思維求職
- 距離-有這麼多類
- 線性dp:編輯距離
- 902.最短編輯距離
- 編輯距離演算法演算法