首页 > 其他 > 详细

Codeforces 158B:Taxi(贪心)

时间:2020-04-22 22:32:55      阅读:75      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

技术分享图片

     题意:一辆车最多坐4人,同一组要坐在同一辆车上,不同组可以坐在同一辆车上,求最少需要的车辆数。

     解析:WA了4次,因为我贪心贪错了,对组员为1 的来说,应该先往组员=3的车上补,而不是先往2的车上补。因为组员=2的组数可能会把几辆车塞满,这个时候没法补。而对于组员=3的,一定可以往上补。

#include<iostream>
#include<cmath>
#include<map>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int a[maxn];
map<int,int>mp;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        mp[x]++;
    }
    int sum=0;
    sum+=mp[4];
    sum+=mp[3];
    if(mp[1]<=mp[3])
    {
        mp[1]=0;
    }
    if(mp[1]>mp[3])
    {
        mp[1]=mp[1]-mp[3];
    }
    int md=mp[2]*2;
    if(md%4==0)
    {
        sum+=md/4;
    }
    else
    {
        sum+=md/4;
        int kk=mp[2]*2%4;
        sum++;
        if(mp[1]<=(4-kk))
            mp[1]=0;
        else
            mp[1]=mp[1]-(4-kk);
    }
    sum+=mp[1]/4;
    if(mp[1]%4!=0)
        sum++;
    cout<<sum<<endl;
}

 

Codeforces 158B:Taxi(贪心)

原文:https://www.cnblogs.com/liyexin/p/12757266.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!