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 shutil删除_python删除文件

    python shutil删除_python删除文件importos删除文件:os.remove()删除空目录:os.rmdir()递归删除空目录:os.removedirs()递归删除目录和文件(类似DOS命令DeleteTree):方法1:自力更生,艰苦创业#Deleteeverythingreachablefromthedirectorynamedin’top’,#assumingtherearenosymbol…

    2022年5月7日
    56
  • 关于CultureInfo

    关于CultureInfoCultureInfo提供有关特定区域性的信息(如区域性的名称、书写系统和使用的日历)以及如何设置日期和排序字符串的格式。在ASP.NET2.0中提供多语言转换和多样式主题转换功能中,经常用到CultureInfo.可用CultureInfo.Name获得区域性名称,CultureInfo的默认是.NETFramework的安装版本。改变CultureInfo值方法为可在Global….

    2022年6月19日
    29
  • uwsgi停止[通俗易懂]

    uwsgi停止[通俗易懂]uwsgi停止和nginx配置uwsgi停止nginx配置uwsgi停止必须在uwsgi.ini中配置好pidfile=绝对路径///uwsgi.pid这样才有pid文件uwsgi–stopuwsgi.pid这样就可以停止了有一点需要注意:如果没有uwsgi.pid又需要停止uwsgi服务可以netstat…

    2025年10月29日
    8
  • 整理了十五道为数不多的tomcat面试题,错过就没了!

    整理了十五道为数不多的tomcat面试题,错过就没了!当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在servlet注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

    2022年6月6日
    33
  • pytest重试_连接重连失败是什么意思

    pytest重试_连接重连失败是什么意思安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

    2022年7月28日
    7
  • Mysql中行转列和列转行

    Mysql中行转列和列转行一、行转列即将原本同一列下多行的不同内容作为多个字段,输出对应内容。建表语句DROPTABLEIFEXISTStb_score;CREATETABLEtb_score(idINT(11)NOTNULLauto_increment,useridVARCHAR(20)NOTNULLCOMMENT’用户id’,subject…

    2022年6月17日
    22

发表回复

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

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