【codevs 2169】【Tyvj 1032】【洛谷 2376】【洛谷2619】零用钱

157人阅读 评论(0) 收藏 举报
分类:

2169 零用钱
时间限制: 1 s
空间限制: 32000 KB
题目等级 : 黄金 Gold
题解
查看运行结果
题目描述 Description
作為创造產奶纪录的回报,Farmer John决定开始每个星期给Bessie一点零花钱。

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

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

输入描述 Input Description
第一行: 两个由空格隔开的整数: N 和 C

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

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

样例输入 Sample Input
3 6
10 1
1 100
5 120

样例输出 Sample Output
111

数据范围及提示 Data Size & Hint
FJ想要每个星期给Bessie六美分。他有100个1美分硬币,120个5美分硬币,和一个10美分硬币。

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

emmmmm
一个好想不好写的贪心

从最大的开始给,不够再添小的
这样可以防止小的给完了,只能用大的相互凑,造成巨大浪费的情况
选取顺序: 最大 - > 最小
添补顺序: 最小 -> 最大

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 35;
int n,c,ans = 0;
struct edge{
    int v,b;
}l[MAXN];

bool cmp(edge a,edge b){
    return a.v < b.v;
}

int main(){
    freopen("money.in","r",stdin);
    freopen("money.out","w",stdout);
    memset(l,0,sizeof(l));
    scanf("%d %d",&n,&c);
    for(int i = 1; i <= n; i ++){
        scanf("%d %d",&l[i].v,&l[i].b);
        if(l[i].v >= c) ans += l[i].b,l[i].b = 0;
    }
    sort(l + 1,l + n + 1,cmp);

    while(true){
        int now = 0;
        for(int i = n; i >= 1; i --)
            while(l[i].v + now < c && l[i].b)
                now += l[i].v,l[i].b --; 
        for(int i = 1; i <= n; i ++){
            if(!l[i].b) continue;
            now += l[i].v; l[i].b --;
            break;
        }
        if(now >= c) ans ++;
        else break;
    }

    printf("%d\n",ans);
    fclose(stdin); fclose(stdout);
    return 0;
}
查看评论

【tyvj1032】零用钱 深搜+贪心

背景USACO OCT09 7TH 描述-作為创造產奶纪录的回报,Farmer John决定开始每个星期给Bessie一点零花钱。FJ有一些硬币,一共有N (1 ...
  • LOI_DQS
  • LOI_DQS
  • 2015年10月01日 22:28
  • 857

乒乓球 codevs1084 洛谷P1042

#include #include using namespace std; char s[25]; int e=1; int a[10005],b[10005],c[10005],d[10005],...
  • logo_FC
  • logo_FC
  • 2016年10月23日 20:29
  • 246

洛谷 P1018 [NOIP2000 T2] 乘积最大

线性动规
  • SenyeLicone
  • SenyeLicone
  • 2016年09月20日 23:50
  • 608

Codevs 搜索刷题 集合篇

2919 选择题 时间限制: 1 s    空间限制: 16000 KB    题目等级 : 黄金 Gold 题目描述 Description 某同学考试,在N*M的...
  • qq_35776409
  • qq_35776409
  • 2017年03月17日 16:23
  • 300

洛谷 2169

Tarjan+SPFA
  • Orion_Rigel
  • Orion_Rigel
  • 2016年09月28日 00:01
  • 96

洛谷 P 1018 乘积最大 ==Codevs

题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸...
  • qq_35776409
  • qq_35776409
  • 2017年03月17日 16:14
  • 187

【HAOI2010】BZOJ2423 BSOJ2775 CODEVS1862 洛谷P2516 最长公共子序列

2775 -- 【HAOI2010】最长公共子序列 Description   字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字...
  • moep0
  • moep0
  • 2016年10月08日 21:57
  • 484

【codevs 1159】最大全0子矩阵 (悬线法)

秋叶萧萧,寥寥孤鸿,清声浅漾,绘那月白竹裳
  • reverie_mjp
  • reverie_mjp
  • 2016年04月17日 17:18
  • 449

洛谷 P2014 选课

树形DP(+森林转二叉树)
  • SenyeLicone
  • SenyeLicone
  • 2016年09月28日 17:57
  • 395

洛谷 P1048 Tyvj 1005 [NOIP2005 T3] 采药

01背包
  • SenyeLicone
  • SenyeLicone
  • 2016年08月03日 23:55
  • 1136
    个人资料
    等级:
    访问量: 7万+
    积分: 2880
    排名: 1万+
    %%%