洛谷 P2945 [USACO09MAR]沙堡Sand Castle

传送门

题目大意:

ai,ai+1,ai+2...

变成

bi,bi+1,bi+2..

不计顺序,增加和减少a数组均有代价。

题解:贪心+排序

小的对应小的

代码:

 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 25009
#define LL long long
using namespace std;

int n,x,y;

LL ans;

int a[N],b[N];

int main(){
    scanf("%d%d%d",&n,&x,&y);
    for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]);
    sort(a+1,a+n+1);sort(b+1,b+n+1);
    for(int i=1;i<=n;i++){
        if(a[i]==b[i])continue;
        if(a[i]>b[i])ans+=y*(a[i]-b[i]);
        if(b[i]>a[i])ans+=x*(b[i]-a[i]);
    }
    cout<<ans<<endl;
    return 0;
}
View Code

 

posted @ 2017-11-06 11:43  ANhour  阅读(282)  评论(0编辑  收藏  举报