POJ 3544 贪心

这题周末的时候去被虐的时候做过但是那时的题目描述和现在不同;

那题是说把猪送城市,输出按猪的顺序到城市的映射,而POJ的题目却是按城市的顺序输出猪。

明显的,我们可以得到单位的重量的猪送到每个城市挣的钱,这样有个排序。

将猪的重量排序这样又有一个排序。于是乎... 重的猪挣大钱,轻的猪挣小钱。按照桶排序一一映射。

再顺序输出就OK了~

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define MAXN 1001
using namespace std;

struct Node
{
       __int64 pig;
       __int64 num;
}P[MAXN];

struct City
{
       __int64 city;
       __int64 cos,get,per;
}C[MAXN];

__int64 num[MAXN],cos[MAXN],get[MAXN],per[MAXN];
int ans[MAXN];

bool cmp1( Node a,Node b ){
     return a.num>b.num;
}
bool cmp2( City a,City b ){
     return a.per>b.per;
}

int main()
{
    int n,t;
    while( scanf( "%d %d",&n,&t )!=EOF )
    {
           for( int i=1;i<=n;i++ )
           {
                scanf( "%I64d",&P[i].num );
                P[i].pig=i;
           }
           for( int i=1;i<=n;i++ )
           {
                scanf( "%I64d",&C[i].cos );
                C[i].cos*=t;
           }
           for( int i=1;i<=n;i++ )
           {
                scanf( "%I64d",&C[i].get );
                C[i].per=C[i].get-C[i].cos;
                C[i].city=i;
           }
           sort( P+1,P+1+n,cmp1 );
           sort( C+1,C+1+n,cmp2 );
           
           for( int i=1;i<=n;i++ ){
                ans[C[i].city]=P[i].pig;
           }
           for( int i=1;i<n;i++ )
                printf( "%d ",ans[i] );
           printf( "%d\n",ans[n] );
    }
    return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值