题目描述

Michael请N个朋友吃馅饼,但是每个朋友吃且仅吃一个馅饼的1/4、1/2或3/4。请你编程求出Michael至少需要买多少个馅饼。

输入输出格式

输入格式:

输入文件的第一行是整数N;接下来的N行中,每行都是1/4、1/2或3/4。

输出格式:

输出文件仅有一行包含一个整数——至少需要购买的馅饼数目。

输入输出样例

输入样例#1: 复制

6
3/4
1/2
3/4
1/2
1/4
1/2

输出样例#1: 复制

4

说明

1 ≤ N ≤ 10,000

思路

  • 简单贪心但要注意细节讨论

贪心:

  • 考虑到3/4块的要么与1/4的配对成一块,要么单独作为一块;
  • 同时与1/2,1/4相比更容易使代价增加(即期望更大),所以要优先处理3/4

之后我分情况讨论了一下

  • 若一开始1/4的就比3/4的少,

    • 那么处理完第一步后,1/4已经被消耗完.只可能剩下1/2与3/4大小的.
    • 对于1/2块的考虑与自己配对
    • 最后加上没能配对的1/2和第一步后剩下的3/4
  • 若刚开始时1/4比3/4多
    • 第一步后只剩下了1/4与1/2大小的
    • 先考虑两个1/4与一个1/2组成一队
    • 在分别与自己配对
    • 最后根据情况得到ans

代码

#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register int
using namespace std;
inline int read(){
int x=0,w=1;
char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-48,ch=getchar();
return x*w;
}
int sum_1,sum_2,sum_3,ans=0;
char s[5];
int main(){
freopen("T21330.in","r",stdin);
int n;
n=read();
for(re i=1;i<=n;++i) {
scanf("%s",s);
if(s[0]=='1'&&s[2]=='4') sum_1++;
if(s[0]=='1'&&s[2]=='2') sum_2++;
if(s[0]=='3'&&s[2]=='4') sum_3++;
}
int ans=0;
if(sum_1>sum_3) {
ans+=sum_3;
sum_1-=sum_3;
sum_3=0;
}else {
ans+=sum_1;
sum_3-=sum_1;
sum_1=0;
}
if(sum_1==0) {
ans=ans+(sum_2/2)+(sum_2%2)+sum_3;
printf("%d\n",ans);
return 0;
} else {
while(sum_1>=2&&sum_2>=1) {
ans++;
sum_1-=2;
sum_2-=1;
}
ans+=sum_1/4+sum_2/2;
sum_1%=4;
sum_2%=2;
if((sum_1==0||sum_1==1)&&(sum_2!=0)) {printf("%d\n",ans+1);return 0;}
if(sum_1!=0&&sum_2==0) {printf("%d\n",ans+1);return 0;}
//ans=ans+sum_2;
//printf("%d\n",ans);
return 0;
} }

c++

【题解】PIZZA 贪心的更多相关文章

  1. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  2. 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】

    树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...

  3. Bzoj 1229: [USACO2008 Nov]toy 玩具 题解 三分+贪心

    1229: [USACO2008 Nov]toy 玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 338  Solved: 136[Submit] ...

  4. HDU5124lines题解-堆+贪心的一个新方法

    题目链接 https://cn.vjudge.net/problem/HDU-5124 胡扯 感觉说新方法好像有点不太好,但是翻了十几篇博客都是清一色离散化之类的... 为什么会做这道题呢?因为前几天 ...

  5. 洛谷P5019 铺设道路 题解 模拟/贪心基础题

    题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...

  6. 2019中国大学生程序设计竞赛-女生专场(重现赛)部分题解C-Function(贪心+优先队列) H-clock(模拟)

    Function 题目链接 Problem Description wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n). 现在他想在∑ni=1xi = ...

  7. 【PA2014】Bohater 题解(贪心)

    前言:一道经典贪心题. -------------------------- 题目链接 题目大意:你有$z$滴血,要打$n$只怪.打第$i$只怪扣$d_i$滴血,回$a_i$滴血.问是否存在一种能够通 ...

  8. 【NOIP2015】斗地主 题解(DFS+贪心)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的AAA到KKK加上大小王的共545454张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下: ...

  9. 【NOI2010】超级钢琴 题解(贪心+堆+ST表)

    题目链接 题目大意:求序列内长度在$[L,R]$范围内前$k$大子序列之和. ---------------------- 考略每个左端点$i$,合法的区间右端点在$[i+L,i+R]$内. 不妨暴力 ...

随机推荐

  1. 老vue项目webpack3升级到webpack5全过程记录(一)

    背景 19年新建的vue项目,使用的是webpack3,随着项目的积累,组件的增多导致本地构建,线上打包等操作速度极慢,非常影响开发效率和部署效率,基于此问题,本次对webpack及相关插件进行了优化 ...

  2. Docker部署微服务项目

    测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...

  3. ThreadLocal内存溢出代码演示和原因分析!

    ThreadLocal 翻译成中文是线程本地变量的意思,也就是说它是线程中的私有变量,每个线程只能操作自己的私有变量,所以不会造成线程不安全的问题. ​ 线程不安全是指,多个线程在同一时刻对同一个全局 ...

  4. git合并代码到主分支

    git合并login分支到master分支 1.首先查看源码状态 git status 2.添加到暂存区 git add . git status //添加到暂存区后再次查看源码状态 3.提交代码到本 ...

  5. Mysql数据库基础增删改查常用语句命令

    Mysql增删改查常用语句命令 一.增删改查语句总览 创建: create(创建数据库) 增:insert(插入表数据) 删:drop.delete(删除表.删除表数据) 改:update.alter ...

  6. mysql8 安装配置教程

    第一步 下载安装包 MySQL 是甲骨文(Oracle)公司产品,可以到官网上下载 MySQL: 官网下载地址:https://dev.mysql.com/downloads/mysql/ 如果嫌弃官 ...

  7. redis 处理缓存穿透

    1. 缓存穿透简述 举例说明,redis中确实没有key值为"redis"数据,并且数据库里面也没有,那么每一次都会穿过缓存层,会将请求打到数据库查询,然后数据库进行查询,造成了不 ...

  8. 【三】Kubernetes学习笔记-Pod 生命周期与 Init C 介绍

    一.容器生命周期 Init C(初始化容器)只是用于 Pod 初始化的,不会一直随着 Pod 生命周期存在,Init C 在初始化完成之后就会死亡. 一个 Pod 可以有多个 Init C,也可以不需 ...

  9. .NET平台系列13 .NET5 统一平台

    系列目录     [已更新最新开发文章,点击查看详细] 时机决定一切,对于 .NET5 也是如此.实际上微软.NET团队在开始开发 .NET Core 时,对 .NET Framework 的全面重写 ...

  10. 五分钟带你读懂 堆 —— heap(内含JavaScript代码实现!!)

    一.概念  说起堆,我们就想起了土堆,把土堆起来,当我们要用土的时候,首先用到最上面的土.类似地,堆其实是一种优先队列,按照某种优先级将数字"堆"起来,每次取得时候从堆顶取.  堆 ...