zoukankan      html  css  js  c++  java
  • P4745 B’s problem(b)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main

    背景

    冬令营入学测试

    描述

    题目描述

             小B生活在一个很奇怪的国家里,这个国家的钱的面值只有可能是25,50,100的。小B最近在做社会实践,这次它选择在一个餐厅里干这件事情。但今天发生了一件有趣的事,这件事情是这个样子的,餐厅里大家都在排队买饭,粗心的打饭阿姨忘记要带零钱,并且所有排队打饭的人只带了一张钱。

             具体地,第i个人带了一张面额为ai的钱,为了方便起见,我们规定每个人都想买价值25元的饭盒。阿姨显得不知所措。聪明的小B想到了一个方法,让带了25元的先买饭!这样阿姨就有了更多的零钱去找开一些面值较大的钱。

             但这样对于一些人来说仍有可能找不开零钱,小B想知道是否存在一种排队方案,能够对所有人找开零钱。如果可行输出“YES”,否则输出“NO”。

    输入格式

    第一行一个数n,表示有n个想买饭的人。

             接下来一行n个数ai,表示第i个人带着的钱的面额。

    输出格式

    输出“YES”或者“NO”。

    备注

    输入样例

    3

    25 50 100

    输出样例

    NO

    数据范围

    对于100%的数据n<=100,ai=25或者50或者100。

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 int n,s[105];
     6 int a=0,b=0;
     7 
     8 void check()
     9 {
    10     cout<<"NO"<<endl;
    11     exit(0);
    12 }
    13 
    14 int main()
    15 {
    16     cin>>n;
    17     for(int i=0;i<n;i++)
    18         cin>>s[i];
    19     sort(&s[0],&s[n]);
    20     for(int i=0;i<n;i++)
    21     {
    22         if(s[i]==25)a++;
    23         if(s[i]==50){b++;a--;if(a<0)check();}
    24         if(s[i]==100)
    25         {
    26             if(a>=1&&b>=1) a-=1,b-=1;
    27             else
    28             if(a>=3) a-=3;
    29             else
    30             check();
    31         }
    32     }
    33     cout<<"YES"<<endl;
    34     return 0;
    35 }
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/InWILL/p/6240263.html
Copyright © 2011-2022 走看看