1. 程式人生 > >隨手練—— 洛谷-P2945 Sand Castle(貪心)

隨手練—— 洛谷-P2945 Sand Castle(貪心)

ios cas sin usaco code algo targe tps cout

題目鏈接:https://www.luogu.org/problemnew/show/P2945 (原題 USACO)

要求錢最少,就是試著讓M和B的離散程度最小(我自己腦補的,就是總體更接近,我不知道數學上這樣該不該叫離散程度),那顯而易見就是升序。

一開始想著可能有這種情況,有高度相同,但是對不上的,其實是沒有差別的。

原高度:2 2 3 4 5

改高度:2 3 4 5 6

證明看這個:https://www.cnblogs.com/Leohh/p/7648607.html

#include<iostream>
#include<algorithm>
using namespace std;

 
int main() { int res = 0 , N, X, Y; int *M, *B; cin >> N >> X >> Y; M = new int[N]; B = new int[N]; for (int i = 0; i < N; i++) cin >> M[i] >> B[i]; sort(M, M + N); sort(B, B + N); for (int i = 0; i < N; i++){ if (M[i] < B[i]) res += (B[i] - M[i])*X;
else res += (M[i] - B[i])*Y; } cout << res << endl; return 0; }

隨手練—— 洛谷-P2945 Sand Castle(貪心)