1029. 兩地排程
公司計劃面試 2N 人。第 i 人飛往 A 市的費用為 costs[i][0],飛往 B 市的費用為 costs[i][1]。返回將每個人都飛到某座城市的最低費用,要求每個城市都有 N 人抵達。
1 <= costs.length <= 100
costs.length 為偶數
1 <= costs[i][0], costs[i][1] <= 1000
基本思路:貪心演算法,可以假設2N個人,先全部飛往A地,然後從A地挑選N個人飛往B地,令實際上飛往A地的人為x,代價為x_priceA,飛往B地的人為y,代價為y_priceB;
- 總代價costs=x_priceA+y_pricewsB=(x_priceA+y_pricesA)+(y_priceB-y_priceA),等同於先全部飛往A地,再選N個人飛往B地,但是代價變為(y_priceB-y_priceA)
- 前半部分是固定的,要想讓總代價最小,只需要選出前N個最小的(y_priceB-y_priceA)就行
int twoCitySchedCost(vector<vector<int>>& costs) {
sort(costs.begin(),costs.end(),[](vector<int> &l,vector<int> &r){
return l[0]-l[1]<r[0]-r[1];
});
int ans=0;
int len=costs.size()/2;
for(int i=0;i<len;i++){
ans+=(costs[i][0]+costs[i+len][1]);
}
return ans;
}
擴充套件:
- 如果不一定是偶數那,假設含有奇數,只需要對於第N+1個人z比較其飛往B地的代價,若大於零不飛,否則飛往B地
minnim
相關文章
- Flink排程之排程器、排程策略、排程模式模式
- 教你更優雅地寫 API 之「靈活地任務排程」API
- 【Leetcode】1029. Two City SchedulingLeetCode
- kubernetes 排程
- Go排程器系列(3)圖解排程原理Go圖解
- 排程器簡介,以及Linux的排程策略Linux
- Go語言排程器之主動排程(20)Go
- Go runtime 排程器精講(五):排程策略Go
- Spark中資源排程和任務排程Spark
- Go語言排程器之排程main goroutine(14)GoAI
- Go排程器系列(2)巨集觀看排程器Go
- Pod的排程是由排程器(kube-scheduler)
- async-await:協作排程 vs 搶佔排程AI
- 任務排程
- 雲排程概述
- Kubernetes 排程器
- linux程式排程Linux
- Laravel Scheme排程LaravelScheme
- 資料排程
- k8s排程器介紹(排程框架版本)K8S框架
- 2.2.5排程演算法:時間片輪轉、優先順序排程、多級反饋排程演算法
- [典藏版] Golang 排程器 GMP 原理與排程全分析Golang
- Go runtime 排程器精講(二):排程器初始化Go
- 07 系統排程
- Kubernetes之Pod排程
- Linux IO排程方法Linux
- Airflow 任務排程AI
- Yarn的排程器Yarn
- Laravel 任務排程Laravel
- Go 排程模型 GPMGo模型
- Yarn資源排程Yarn
- 程式排程案例分析與常見疑惑1:為何不能排程?
- 圖解協程排程模型-GMP模型圖解模型
- swoole 協程原始碼解讀 (協程的排程)原始碼
- 也談goroutine排程器Go
- 使用Hazelcast排程Spring tasksASTSpring
- 分散式任務排程分散式
- [譯] React 中的排程React