首页 > 其他分享 >6537: candy买糖果 桶排序

6537: candy买糖果 桶排序

时间:2023-07-07 13:12:56浏览次数:34  
标签:include int 纸币 candy 6537 num 排序 糖果

描述

 

 

candy非常喜欢吃糖果,于是他就攒下平时妈妈发的零花钱,准备放学后去偷偷买糖。

现在candy知道自己的存钱罐里一共有n张纸币,每张纸币的面值为Vi。这几天放学后,他想要用这些钱买m种糖果,并且希望能用一种面值的纸币恰好买到所有的糖果。

 

 

输入

 

 

第一行包含两个整数,分别为纸币张数n和糖果种数m。

第二行有n个整数Vi,代表每张纸币的面值(单位:元)。

接下来m行,每行有两个实数Ai和Bi,代表单价为Ai(单位:元/千克)的糖果要买Bi千克。

纸币可以是任何整数面值,所有数据均不超过500。

 

 

输出

 

 

如果可以用一种面值的纸币恰好买到所有的糖果则输出"YES",否则输出"NO"。

 

 

样例输入

 

5 2
2 5 5 7 2
3 2
1 4

样例输出

 YES   坑爹的地方在于输入会带小数,且题目意思是说必须只能一种面额的金钱买完所有的糖果
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstring>
int a[10005];
using namespace std;
int main()
{
    float n,m,max=0,sum=0,f=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        int num;
        cin>>num;
        if(num>max)max=num;
        a[num]+=num; //第num个面值的总价值加num 
    }
    for(int j=1;j<=m;j++)
    {
        double x,y;
        cin>>x>>y;
        sum+= x*y; //计算所有糖果的价格 
    }
    for(int i=1;i<=501;i++)
    {
        if(a[i]-sum==0) //如果第i个面额刚好可以买完所有糖果,则方案可行 
        {f = 1;break;}
    }
    if(f==1)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
     return 0;
}

 

标签:include,int,纸币,candy,6537,num,排序,糖果
From: https://www.cnblogs.com/jyssh/p/17534666.html

相关文章

  • TS,对数组多个属性同时排序
    constlist=[{name:'John',age:25},{name:'Alice',age:30},{name:'Bob',age:20}];list.sort((a,b)=>{//首先按照name属性进行升序排序if(a.name>b.name){return1;}elseif(a.name<b.na......
  • 基数排序
    最近又有个奇奇怪怪的题目,数据为\(n\le1\times10^7\),并且还要用到排序,普通的排序肯定会超时,然后就发现了一种\(O(n)\)介绍基数排序(RadixSort)是桶排序的扩展,它是将整数按位数切割成不同的数字,然后按每个数位分别比较以此来排序。说详细点,也就是将所有数字统一为同样的......
  • JavaScript实现合并排序算法详解
    JavaScript实现归并排序算法详解说明归并排序(MergeSort)算法,也叫合并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(DivideandConquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,......
  • 排序算法的巅峰之选:学习Python快速排序!
    快速排序(QuickSort)是一种高效的排序算法,它的基本思想是通过分治的策略将一个大问题分解成小问题并解决。快速排序的核心操作是选取一个基准元素,将待排序序列划分成左右两部分,其中左部分的元素都小于基准元素,右部分的元素都大于基准元素。然后递归地对左右两部分进行排序,最终完成......
  • 归并排序思考记录与代码实现 --- 图画的真累
    归并排序把数组不断从中间拆分,然后对前后两段分别排序,再将排好序的两部分合并在一起如下图数组排序。——分治思想:把大问题分解为小问题来解决,这通常会用到递归。由代码可知,归并排序就是将数组不断地从中间切开,然后对每份切开的前后排进行排序两种不用额外空间的算法,在......
  • go语言结构体排序
    排序接口从接口定义来看,要实现某类型的排序要知道有多少个元素2个指定索引的元素怎么比较大小,索引i的元素小于索引j的值返回true,反之返回false如何交换指定索引上的元素那么自定义类型,要想排序,就要实现sort包中该接口。结构体排序 假设有N个学生,学生有姓名和年龄,按照年龄......
  • 字典排序
    students=[{'name':'Jack','age':17,'score':89},{'name':'Julia','age':17,'score':80},{'name':'Tom','age':16,'score':80......
  • 排序
    排序的一些性质通过比较操作来给同类元素排序。可排序性要求比较规满足可排序性:任意两个待排序的元素都可以进行比较比较规则满足传递性例如,石头剪刀布不满足可排序性。这谁都知道稳定性排序后相等元素的位置是否发生变化如果一定不发生变化,那么我们称它为稳定的排序如......
  • linux 中ls命令实现对文件的排序
     001、ls默认是按照文件名称顺序列出的[root@PC1test02]#ls##测试文件a.txtb.txtc.txt[root@PC1test02]#ls-l##默认按照文件名称顺序total125000-rw-r--r--.1rootroot15360000Jul419:45a.txt-rw-r--r--.1......
  • 简单选择排序
    简单选择排序是一种基本的排序算法,它的思想是每次从待排序的序列中选择一个最小(或最大)的元素,放到已排序的序列末尾,直到所有元素都排好序。它的时间复杂度是O(n^2),空间复杂度是O(1)。下面是简单选择排序的JAVA实现:publicclassSelectionSort{publicstaticvoidsort(int......