题目描述

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. windows的SEH异常处理以及顶层异常处理

    前言 windows的SEH结构化异常处理是基于线程的,传统的SEH结构化异常会基于堆栈形成一条包含异常回调函数地址的链(SEH链).而fs:[0](TEB的第一个字段)指向这条链的链头,当有异常发生 ...

  2. Zookeeper详细使用解析!分布式架构中的协调服务框架最佳选型实践

    Zookeeper概念 Zookeeper是分布式协调服务,用于管理大型主机,在分布式环境中协调和管理服务是很复杂的过程,Zookeeper通过简单的架构和API解决了这个问题 Zookeeper实现 ...

  3. [刷题] PTA 6-7 统计某类完全平方数

    要求: 实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中 ...

  4. [bug] Python Anoconda3 安装完成后开始菜单不显示

    版本问题,需更新 win+R打开cmd,敲入命令: conda update menuinst conda install -f console_shortcut ipython ipython-no ...

  5. Ubuntu 16.04 Bridge配置

    Ubuntu 16.04 Bridge配置 一.安装网桥拓展包 bridge-utils root@ubuntu:~# apt-get install bridge-utils 二.创建网桥设备 // ...

  6. head tail diff -c fff hhh 前5行 后5行 区别 动态显示文本最新信息: $tail -f crawler.log

    显示文件第一行: $head -1 filename 显示文件倒数第五行: $tail -5 filename ]# tail -5 test.py option=sys.argv[1] main(o ...

  7. tkinter是内置的模块,不同的版本的导入形式不同,现总结如下

    #coding=utf-8 import os, sys try: from tkinter import * except ImportError: #Python 2.x PythonVersio ...

  8. 西门子 S7200 以太网模块连接组态王方法

    北京华科远创科技有限研发的远创智控ETH-YC模块,以太网通讯模块型号有MPI-ETH-YC01和PPI-ETH-YC01,适用于西门子S7-200/S7-300/S7-400.SMART S7-20 ...

  9. Jenkins 基础篇 - 任务创建

    前面了解了 Jenkins 上各种任务的区别后,我们就来实践应用下,先创建一个[文件夹]类型的任务,将我们目前的一些基础的演示任务[移动]到文件夹里面去,这样可以先做个简单的分类. 新建一个[文件夹] ...

  10. Element-ui Popconfirm气泡确认框的确认及取消事件不生效

    Element-ui 官方文档对 Popconfirm气泡确认框的一些属性及事件的描述不够详细,导致第一次使用时会遇到各种各样的问题 对确定事件及取消事件描述如下: 但是如果给组件绑定@confirm ...