codeforces 158B Taxi (贪心)

难度指数1100 Codeforces 158B Taxi 巧妙统记需要Taxi的数量 After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that the i-th group consists of si friends (1 ≤ si ≤ 4), and they want to go to Polycarpus together. They decided to get there by t 阅读详情

题目:

B. Taxi
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that the i-th group consists of si friends (1 ≤ si ≤ 4), and they want to go to Polycarpus together. They decided to get there by taxi. Each car can carry at most four passengers. What minimum number of cars will the children need if all members of each group should ride in the same taxi (but one taxi can take more than one group)?

Input

The first line contains integer n (1 ≤ n ≤ 105) — the number of groups of schoolchildren. The second line contains a sequence of integers s1, s2, ..., sn (1 ≤ si ≤ 4). The integers are separated by a space, si is the number of children in the i-th group.

Output

Print the single number — the minimum number of taxis necessary to drive all children to Polycarpus.

Sample test(s)
input
5
1 2 4 3 3
output
4
input
8
2 3 4 4 2 1 3 1
output
5
Note

In the first test we can sort the children into four cars like this:

  • the third group (consisting of four children),
  • the fourth group (consisting of three children),
  • the fifth group (consisting of three children),
  • the first and the second group (consisting of one and two children, correspondingly).

There are other ways to sort the groups into four cars.


题意分析:

有n组小伙伴,每组都是1到4人,准备做出租车去参加Party。一个出租车只能坐4个人,每个组的小伙伴不能拆分,求需要出租车的数量。

贪心。记录每种一组人数的个数,4个人一组的就直接一辆了。分类讨论在于1人一组和3人一组的个数谁大,如果3人一组的个数多,就拿一人的都填上,然后就需要3人一组的车数,两人一组的就2组一辆车。如果一个人一组的组数多,就先把3人一组的填满,然后再拿1人一组的去补二人一组的。

代码:

#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

const int maxn = 100000 + 10;
int a[maxn],b[5];

int main()
{
    int n, i;
    while(~scanf("%d", &n))
    {
        memset(b,0,sizeof(b));
        for(i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
            b[a[i]]++;
        }
        int ans = b[4] + b[3] + b[2]/2;
        if(b[1] > b[3]) b[1] -= b[3];
        else b[1] = 0;
        b[2] %= 2;
        if(b[2] == 1)
        {
            ans++;
            if(b[1] > 2) b[1] -= 2;
            else b[1] = 0;
        }
        ans += b[1] / 4;
        if(b[1] % 4 != 0) ans++;
        printf("%d\n", ans);
    }
    return 0;
}


SSE消息推送避坑指南:从Chrome兼容性到Spring超时配置 本文深入探讨了在Java Spring Boot项目中实现SSE消息推送时,从浏览器兼容性到后端配置的完整避坑指南。针对Chrome并发连接限制、Safari自动断开、Nginx代理缓冲以及Spring SseEmitter内存泄漏与超时管理等生产环境常见问题,提供了具体的解决方案和最佳实践配置,帮助开发者构建稳定可靠的实时推送系统。 阅读详情

相关推荐

在摩尔线程 MTT S80 上使用 Ollama 进行 DeepSeek R1 蒸馏版模型推理

本文主要介绍了如何在摩尔线程 MTT S80 上通过 Ollama 快速完成DeepSeek R1 蒸馏系列模型的推理。

摩尔线程blog中心 3597

Codeforces-158B

题目意思就是给你不同学生人数的组,要求一个组的人必须要在一辆车上,问你要几辆车,模拟一下 题目链接:http://codeforces.com/problemset/problem/158/B AC代码: #include #include #include #include #define MIN(x,y) x<y?x:y #define MAX(x,y) x>y?x:y using na

VVVZCS的博客 456

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2903

Educational Codeforces Round 158 (Rated for Div. 2)B

思路:题目第一回合是白给的,除了第一回合之外的所有回合都可以进行两次操作,给当前位置的数字加一然后往右移动一位到最右的位置的时候就不能移动了,还有传送到任意位置。题目要求,构造出对应的数组cn,并且求出最小的移动次数。思路就是贪心,出现了ci-1<ci的情况就说明,要增加次数了,如果不满足这种情况那就说明是非递增的,也就说明后面的操作次数都可以被最前面那个数的操作次数覆盖掉,如果前面小就要增加后面减去前面的差值。因为第一回合是白送的,也就是说第一个操作次数肯定要减去一,干脆答案从-1开始记录。

wangshic6的博客 152

UVM验证中,为什么我的pack_bytes()返回长度是0?手把手教你排查自定义do_pack函数

本文深入解析UVM验证中pack_bytes()返回长度为0的常见原因及系统排查方法。从UVM打包机制原理出发,详细列举了super.do_pack()缺失、field automation冲突等典型问题,并提供动态数组处理、位宽计算等进阶调试技巧,帮助开发者快速定位和解决自定义do_pack函数问题。

weixin_42523693的博客 127

基于STM32F103标准库与DMA的实时音频FFT频谱显示系统设计

本文详细介绍了基于STM32F103芯片与DMA技术实现实时音频FFT频谱显示系统的设计方法。通过标准库驱动和FFT算法处理音频信号,结合OLED显示屏实时绘制音乐频谱,涵盖硬件选型、核心原理、开发环境搭建及性能优化等关键步骤,为数字信号处理应用提供实用参考。

yellow的专栏 775

Codeforces Problem-158B Taxi

Codeforces Problem-158B Taxi 基本思想:   本题是一道思维题,主要说一下这个贪心算法:   假设人数为1的有w组、人数为2的有x组、人数为3的有y组、人数为4的有z组。   1. 当人数为4,直接ans++,即ans=z;   2. 当人数为3,ans++,如果这时候有人数为1的,顺带把1也带上,即y–,再判断w是否大于0,若成立则w–;   3. 当人数为2,ans+=x/2,然后判断一下有无剩余的,若有,则把人数为1的带上,这里强调一下,如果w<0也没关系,因为

BrilliantWilliam的博客 400

滤波器设计实战:Filter Solutions软件从入门到精通

本文是Filter Solutions滤波器设计软件的实战指南,从入门到精通。通过设计一个低通数字滤波器的完整流程,详细讲解了参数设置、FIR/IIR选择、窗函数及逼近函数应用。文章重点介绍了如何利用这款经典工具高效完成滤波器设计、性能权衡,并将设计成果导出至MATLAB等平台进行实际验证与应用,是信号处理工程师提升效率的实用参考。

weixin_29095049的博客 531

codeforces 158B Taxi(贪心小水题)

B. Taxi 点击打开题目 time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output After the lessons n groups of schoolchildren went o

3085

小黄鸭机器人技术全解-第 07 章 关节自由度与行程参数

—鸭子歪着头转头时,转的平面是斜的,这正是它"灵动"感的来源。仿真里这是自动的(轴定义在父刚体系),复刻时不需要做任何事——

yolo模型训练找我,AI游戏合作找我 65

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

专注于编程、AI、人工智能等多个领域内容研究和分析 723

codeforces158B Taxi(贪心)

After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that thei-th group consists ofsi friends (1 ≤ si ≤ 4), and they want to

sinat_35121480的博客 878

cursor AI代码编辑器IDE对接deepseek模型api;字节ai编辑器trae

参考: https://www.cursor.com/ https://platform.deepseek.com/https://www.cursor.com/下载安装后,注册账号登录即可 再高级里选择设置 再模型这注册模型: 模型名称一定要填正确,url地址填好,最后填上秘钥验证

weixin_42357472的博客 1万+

【Codeforces】158B-Taxi(贪心,怎么贪咧)

     贪心   emmmm http://codeforces.com/contest/158/problem/B 题目大意:有四种旅客,四人一组,三人一组,两人一组,一人一组,一辆出租车最多可以坐四个人,并且一组里的人必须坐一辆车,可以 4,3+1,2+2,3,2+1+1......,求解最小的出租车数。 贪心,显示找4的个数,再找3的个数,把能带走的1尽量带走,最后讨论2 和 剩下的...

( :3 ) 464

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

CodeForces - 158B.Taxi (贪心)

CodeForces - 158B.Taxi (贪心)题意分析首先对1234的个数分别统计,4人组的直接加上即可。然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一种是3多,那么结果就加上3的个数,再单独处理2. 对于1和2组队处理的讨论:首先分配2,有2种情况,一种是2正好分配完了,另外一种就2还剩下2个人(正好剩下1组)。就一起处理这个2个人和1剩下的人。 把

Pengwill's Blog 485

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

codeforces 158B - Taxi 贪心

来记录不同大小的小组的数量,然后根据题目所述的贪心策略来计算所需的车辆数量。特别地,当小组的大小为2时,如果有偶数个小组,则可以将它们分别安排在不同的车子里,否则需要安排其中的一个小组和一个大小为1的小组一起乘车。同时,对于小组大小为1的情况,如果还有未被安排的小组,则可以将它们安排在同一辆车子里,这样可以使所需的车辆数量最小化。这道题是一道贪心算法的题目,因为要求每个车子都需要满载,所以我们考虑每次尽可能地选取人数较多的小组。同时,我们可以使用桶来记录不同大小的小组的数量,便于计算最终所需的车辆数量。

Landing_on_Mars的博客 122

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Codeforces 158B. Taxi 【贪心】

http://codeforces.com/problemset/problem/158/B time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard output After the lessons n groups of schoolchildr...

肖火柴的火柴盒 438

codeforces 158B Taxi(贪心)

题目链接 题目大意:有n组小学生想要搭乘出租车,每辆出租车最多能坐4个小学生,每组小学生必须坐同一辆出租车,问至少需要多少辆出租车? 分析:要想出租车的数量尽量少,那么肯定要尽量让能够拼车的组拼车,比如说3个人的组就可以找1个人的组拼车,2个人的组可以找2个人的组拼车,那么可以用贪心来解决,具体思路看代码注释。 #include&lt;bits/stdc++.h&gt; #define C...

不期而遇 446

Codeforces 158B. Taxi

题目链接:nisisin(1 ≤ns1,s2, ...,sn(1 ≤sisii-th group.51 2 4 3 3485思路贪心+双指针,先考虑简单的情况,给出此种情况下的粗略算法,再考虑复杂的情况,升级算法。先对小组的人数进行排序。简单的情况就是判断对于首尾两个指针,相应的小组人数是否小于等于4,满足条件则计数加1。当然,这是有缺陷的,因为像这样的数据,就不能得到正确的答案了。

m0_62504307的博客 1394

CodeForces 158B Taxi(贪心)

 贪心,注意优先级,4单独,3与1先匹配,2与2匹配(注意判断2有没有剩下),然后2与两个1匹配,最后4个1匹配就可以了. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n; int ...

weixin_30408739的博客 106

Codeforces 158 B. Taxi[贪心/模拟/一辆车最多可以坐4人同一个群的小朋友必须坐同一辆车问最少需要多少辆车]...

http://codeforces.com/problemset/problem/158/B B. Taxi time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output After...

weixin_33921089的博客 248

codeforce 158B Taxi

codeforce 128B

yu_duan_hun的博客 451

【Codeforces】158B - Taxi

Problem Description: After the lessonsngroups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that thei-th group consists offriends (1 ≤  ≤ 4), ...

麦芽雪冷萃 979

codeforces-158B-Taxi题解

这题写的我简直醉醉的,一道不难的贪心,大致意思就是说让你输入n,然后输入n个数,每个数表示的是该组学生的数量(1 我的代码: #include #include #include using namespace std; int a[100010]; int main() {    int n,i;    int count;    int p1,p2,p3,p4;

cumtcyf的博客 660

水题 codeforces 158B Taxi

贪心题,虽然是道水题,但是因为当时花了点时间,而且用了两种方法,并且尚存一些问题没有解决,所以写下来:先讲贪心的做法:先将数据从大到小排序:将大的一边和小的一边相加,与4进行比较:如果小于等于4,队伍-2,车数+1,再与小的一边相加,如果仍满足条件,队伍-1,车数不变,重复过程,直到不满足条件;如果大于4,队伍-1,车数+1先贴超时错误的代码: #include<iostream>#...

weixin_30481087的博客 175

Codeforces #158B Taxi

一. 问题描述   After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that the i-th group consists of si friends (1 ≤ si ≤ 4), and the...

RTR 307
上一篇: codeforces 158A Next Round (水题)
下一篇: codeforces 158D Ice Sculptures (枚举)
Notdeep__acm
博客等级 码龄12年 20粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值