TYVJ P1032 零用钱 Label:贪心

TYVJ P1032 零用钱 Label:贪心

背景

USACO OCT09 7TH

描述

作為创造產奶纪录的回报,Farmer John决定开始每个星期给Bessie一点零花钱。

FJ有一些硬币,一共有N (1 <= N <= 20)种不同的面额。每一个面额都能整除所有比它大的面额。

他想用给定的硬币的集合,每个星期至少给Bessie某个零花钱的数目C (1 <= C <= 
100000000)。请帮他计算他最多能支付多少个星期的零花钱。

输入格式

* 第一行: 两个由空格隔开的整数: N 和 C

* 第2到第N+1行: 每一行有两个整数表示一个面额的硬币:硬币面额V (1 <= V <= 
100,000,000)和Farmer John拥有的该面额的硬币数B (1 <= B <=
        1,000,000).

输出格式

* 第一行: 一个单独的整数,表示Farmer John最多能给Bessie支付多少个星期至少為C的零用钱。

测试样例1

输入

3 6 

10 1 

1 100 

5 120

输出

111

备注

FJ想要每个星期给Bessie六美分。他有100个1美分硬币,120个5美分硬币,和一个10美分硬币。

FJ可以在一个星期超额付给Bessie一个10美分硬币。然后接下来的10个星期每星期付给
Bessie两个5美分硬币。最后100个星期每星期付给Bessie一个1美分硬币跟一个5美分硬
币。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
int N,C,ans,flag=1,k;
struct cc{
    int mon,num;
}a[25];

bool cmp(cc a,cc b){
    return a.mon<b.mon;
}

void init_(){
    scanf("%d%d",&N,&C);
    for(int i=1;i<=N;++i){
        scanf("%d%d",&a[i].mon,&a[i].num);
    }
    sort(a+1,a+N+1,cmp);
}

void solve(){
    for(int i=N;i>=1;--i){
        while(a[i].num>0&&k-a[i].mon>0){
            --a[i].num;
            k-=a[i].mon;
        }
    }
    for(int i=1;i<=N;++i){
        while(a[i].num>0&&k>0){
            --a[i].num;
            k-=a[i].mon;
        }
    }
}

int main(){
//    freopen("01.txt","r",stdin);
    init_();
    
    while(flag){
        flag=0;
        k=C;
        solve();
        if(k<=0){
            ++ans;
            flag=1;
        }
    }
    
    printf("%d\n",ans);
    return 0;
}

贪心,记得排序

吐槽一下,usaco很喜欢奶牛?这几天tyvj做下来全是奶牛

转载于:https://www.cnblogs.com/radiumlrb/p/5797243.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108901.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)

    Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)一般来说,多线程技术涉及三种方法,其中第一种是使用计时器模块QTimer;第二种是使用多线程模块QThread;最后是使用事件处理的功能。

    2022年5月28日
    23
  • 用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]

    用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]对于软件测试来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范的测试报告,能够减少开发人员和测试人员的沟通成本。本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范、格式统一、美观的测试报告。通过这篇文章的介绍,你将能够:-将Allure与Pytest测试框架相结合;-执行测试之后,生成Allure格式的测试报告。1、Allure测…

    2022年7月26日
    23
  • 怎样重装系统win10(开机进不了windows系统)

    超级简单的方法重装win10系统重装系统操作步骤如果电脑系统还可以进入,那就没必要做U盘启动项,直接在现有的系统里重装win10。如果你的系统坏了,进不去了,这时你就要用U盘作为启动项安装系统。到Microsoft官网下载安装工具,用这个工具安装win10系统非常方便。利用此工具不仅可以在原有系统重装win10,也可以用来做U盘启动项。链接:link.重装系统操作步骤如果电脑系统还可以…

    2022年4月12日
    111
  • VSCode 快捷键大全

    VSCode 快捷键大全授人以鱼不如授人以渔~我将不会在下面列出VSCode的快捷键,而是告诉大家怎么去找到全部的快捷键~1、打开VSCode,点击左下角设置图标2、找到键盘快捷方式3、打开后界面如下4、我们可以在最上方的搜索栏内搜索自己想要查看的快捷键例如:搜索“向下移动行”,搜索结果内的“键绑定”就是我们想要的快捷键5、如果觉得默认的快捷键不适应,我们还可以选择更改或者删除鼠标移动到文字…

    2022年6月6日
    162
  • 虚拟机vmware安装教程_红帽系统安装步骤

    虚拟机vmware安装教程_红帽系统安装步骤虚拟机VMware的详细安装步骤,下载

    2022年8月5日
    5
  • 安卓传感器开发_基于传感器的开发

    安卓传感器开发_基于传感器的开发Android传感器开发基本流程[java] viewplaincopypublic class SensorActivity extends Activity implements SensorEventListener {    private SensorManager mSensorManager;    private Sen

    2022年9月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号