BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(貪心)
阿新 • • 發佈:2017-05-07
castle con name 個數 blank 調整 can 貪心 pro
【題目鏈接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3399
【題目大意】
將一個集合調整成另一個集合中的數,把一個數+1需要消耗x,-1需要消耗y,問最小消耗。
【題解】
顯然兩個集合排序之後一一對應調整需要消耗的才是最少的,所以排序計算答案即可。
【代碼】
#include <cstdio> #include <algorithm> using namespace std; const int N=25010; int a[N],b[N],n,x,y; int main(){ while(~scanf("%d%d%d",&n,&x,&y)){ for(int i=0;i<n;i++)scanf("%d%d",&a[i],&b[i]); sort(a,a+n); sort(b,b+n); int ans=0; for(int i=0;i<n;i++){ if(a[i]<b[i])ans+=(b[i]-a[i])*x; else ans+=(a[i]-b[i])*y; }printf("%d\n",ans); }return 0; }
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(貪心)