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;
}


【深度学习】tensorboard中的图片放到论文中 1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub 阅读详情

相关推荐

AI 帮我写单测:pytest 覆盖率提升 40% 的协作日志

AI助力pytest测试覆盖率提升40%的实践总结 本文分享了作者通过AI协作提升Python项目测试覆盖率的实践经验。初始测试覆盖率仅45%的电商后端项目,通过系统化的AI协作策略(代码分析、场景矩阵设计、迭代优化)实现了显著改进。AI不仅生成312个高质量测试用例,更提供了测试设计思路和最佳实践建议。最终覆盖率提升至85%,发现并修复23个潜在bug,效率提升3倍。文章详细展示了用户服务、订单服务等核心模块的测试案例,以及分层Fixture设计、参数化测试等高级技巧。关键成功因素包括明确的协作边界、迭代

摘星编程的博客 3277

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

EMI硬件抑制八项工程对策:从回路面积到谐振规避

电磁干扰(EMI)是电子系统可靠性与EMC合规性的核心挑战,其本质源于高频电流回路产生的辐射与耦合效应。理解回路面积、共模/差模噪声、阻抗匹配等基础原理,是实施有效抑制的前提。技术价值体现在降低辐射发射(RE)、传导发射(CE)超标风险,提升产品一次通过率与长期稳定性。典型应用场景包括开关电源设计、高速数字接口布局、工业嵌入式设备及医疗电子等对EMC要求严苛的领域。本文聚焦可落地的硬件级对策,涵盖回路面积控制、屏蔽策略、变压器漏磁管理、双线传输与阻抗匹配等关键实践,深度融合电流回路物理模型与PCB工程实现。

weixin_35019679的博客 84

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

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

wangshic6的博客 152

脑电分析:为什么大脑信号会“变同步”?——事件相关同步化与去同步化 (ERS/ERD) 全景解析

脑电分析中的事件相关同步化(ERS)和去同步化(ERD)是研究大脑动态节律的重要方法,反映特定任务下脑电频段能量的变化。ERD表示神经元活动分散(功率下降),提示脑区活跃处理信息;ERS则反映神经元同步(功率增强),常与静息状态相关。本文详解了ERS/ERD的生理机制、计算流程(包括基线校正和功率谱分析),并提供了Python实现示例,展示如何通过Welch法和STFT进行时频分析,生成ERD/ERS热力图。该技术广泛应用于运动想象脑机接口、癫痫检测等领域,为理解大脑功能状态提供了量化工具。

qq_32516809的博客 1395

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

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

weixin_44184852的博客 2903

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

拉曼光谱入门:7.拉曼光谱仪光学系统结构详解

本文系统拆解了拉曼光谱仪从激光器输出经聚焦照明、二向色镜/陷波滤光片组滤除瑞丽散射、衍射光栅色散至CCD探测的完整光路,阐述了各光学模块在微弱非弹性散射信号提取、杂散光抑制及高分辨光谱成像中的工程原理与技术参数要求。

qq_53529450的博客 223

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

在 Visual Studio Code 中开发 SAP Fiori 应用并部署到 Cloud Foundry 的完整实战指南

摘要:本文介绍如何以ABAP RAP服务为后端,通过VS Code和SAP Fiori工具将Fiori应用一键部署到SAP BTP Cloud Foundry环境。主要内容包括:1) 开发环境配置(VS Code+Fiori工具);2) 架构流程说明(MTA打包、Approuter路由);3) 权限准备(业务Catalog分配);4) 创建带Approuter的MTA项目;5) 连接ABAP OData服务并生成Fiori应用。文中还针对常见问题(如服务不可见、部署失败)提供了解决方案参考。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 364

多跳问答技术解析:从原理到金融领域实践

多跳问答(Multi-hop QA)是自然语言处理中的高级任务,要求系统通过多步推理整合分散信息来回答问题。其核心技术在于理解文档间的复杂关联,相比单跳问答需要更精细的数据集设计和模型架构。在金融、医疗等专业领域,多跳问答能有效处理如'腾讯大股东投资的港股上市公司'这类需要串联多个信息点的问题。典型实现方案包括MR-Search框架的三级检索器设计,分别处理实体召回、关系匹配和数值比较。当前最佳实践表明,结合稠密检索与稀疏检索的混合策略,配合动态路由机制,能在保持较高精度的同时控制计算成本。这类技术在金融风

weixin_42566072的博客 606

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【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

visio安装包

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

codeforces 158B - Taxi 贪心

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

Landing_on_Mars的博客 122

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 158B:Taxi

B. Taxitime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAfter the lessons n groups of schoolchildren went outside and decided to visit Polycarpus t...

执念 759
上一篇: 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、付费专栏及课程。

余额充值