题目链接:http://codeforces.com/problemset/problem/349/A

题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这些人只可能拥有100,50,25的其中一张卢布。问:售票员是否能在可以找赎的情况下,向每一个人都售到票。

此题被贴上贪心的标签,但我觉得更像模拟题。用了比较笨的方法来解决,但是毕竟是自己编的,还是比较有感觉。要特别注意,收了别人的钱,相应的面额数量要作相应的改动。例如第一个样例的25 25 50 50,当处理到第三个人的50时,25卢比这个面值只剩下1了,原因是要找给第三个人25卢比,而本来没有50卢布面额的也从数量0变为1。网上有很多比较简单的方法,以下链接是个人觉得比较巧妙的: http://codeforces.com/problemset/status/349/problem/A/page/1?order=BY_PROGRAM_LENGTH_ASC

看这个人   CXXXX

 #include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std; const int maxn = 1e5 + ;
int a[maxn], cnt[]; int main()
{
int i, n, sum, flag, flag1;
while (scanf("%d", &n) != EOF)
{
for (i = ; i < n; i++)
{
scanf("%d", &a[i]);
}
memset(cnt, , sizeof(cnt));
flag = flag1 = sum = ;
for (i = ; i < n; i++)
{
if (a[] != ) // 第一张一定要是收到25,否则根本无法找零钱
{
flag = ;
break;
}
else
{
sum += a[i]; // 从一开始到当前所拥有的钱的总数
// printf("sum = %d\n", sum);
if (a[i] == )
{
cnt[]++; // 代表50面额的数量增加
if (cnt[] > ) // 要找25卢布,相应的25卢布这个面额的数量减少
{
cnt[]--;
sum -= ; // 当然总的钱数也需要减少
// printf("50 cnt[25] = %d, cnt[50] = %d\n", cnt[25], cnt[50]);
}
else
flag1 = ; // 无力找钱给人
}
else if (a[i] == )
{
cnt[]++;
if (cnt[] > && cnt[] > )
{
cnt[]--; // 找1张50和一张25
cnt[]--;
sum -= ;
// printf("100: cnt[25] = %d, cnt[50] = %d, cnt[100] = %d\n", cnt[25], cnt[50], cnt[100]);
}
else if (cnt[] > )
{
cnt[] -= ; // 找3张25给人
sum -= ;
// printf("100: cnt[25] = %d\n", cnt[25]);
}
else
flag1 = ;
}
else if (a[i] == )
{
cnt[]++;
// printf("25: cnt[25] = %d\n", cnt[25]);
}
// printf("final sum = %d\n\n", sum);
}
}
if (flag)
printf("NO\n");
else if (flag1)
printf("NO\n");
else
printf("YES\n");
}
return ;
}

最新文章

  1. 几大主流浏览器内核(Rendering Engine)
  2. JSON学习
  3. python入门笔记
  4. linux c++循环缓冲区模板类
  5. [Skills] 在桌面打开一个BAT文件,CMD窗口不关闭
  6. sql Server中SET QUOTED_IDENTIFIER的使用
  7. Web压力测试 ApacheBench(ab)
  8. 仙人掌(cactus)
  9. Summary Ranges
  10. 用 xampp 在 windows/Linux 下搭建代理服务器
  11. caffe: train error: Serializing 25 layers--- Check failed: proto.SerializeToOstream(&amp;output)
  12. Creating Shazam in Java
  13. c#基础语言编程-Path和Directory
  14. js学习笔记之:数组(二)
  15. 使用client对象模型回写SharePoint列表
  16. HDOJ 1800 Flying to the Mars 盲目搜索......................so easy...........
  17. 如何设置打开jsp页面速度加快?
  18. apache-maven-3.3.9 环境配置
  19. Hadoop(三)手把手教你搭建Hadoop全分布式集群
  20. Ajax 基础笔记

热门文章

  1. Oracle写函数读写日志实例
  2. Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)
  3. c++中string类型用下标初始化后str.size()为0 输出string值为空
  4. Oracle数据分页,并传出数据集
  5. 高速公路(Highway,ACM/ICPC SEERC 2005,UVa1615)
  6. Graphtree--zabbix增强功能(一屏展示所有内容)
  7. windows2003安全加固
  8. Iterator&amp;Vector应用实例
  9. ASP.NET MVC学习笔记-----Bundles
  10. kindle paperwhite折腾记