poj3040】的更多相关文章

http://poj.org/problem?id=3040 FJ 有n种不同面值的硬币,每种硬币都有相应的个数,大面值的硬币值总能被小面值的硬币值整除,每周需要支付 Bessie   c元,问最多能支付Bessie多少周. 这题之所以能贪心,据说关键是这句话 where each denomination of coin evenly divides the next-larger denomination. 如果没有这个限制条件,有些情况是取不到最优解的. 把面值从小到大排序,然后从尾到头开…
一.题目 Description As a reward for record milk production, Farmer John has decided to start paying Bessie the cow a small weekly allowance. FJ has a set of coins in N (1 <= N <= 20) different denominations, where each denomination of coin evenly divid…
一.题意:约翰要给他的牛贝西发工资,每天不得低于C元,约翰有n种面值的钱币,第i种的面值为v_i,数量有b_i.问这些钱最多给贝西发多少天的工资.注意,每种面值的金钱都是下一种的面值的倍数. 二.思路:分三步解决:1. 按照面值从大到小取,面值大于等于C的,直接取光.2. 再按面值从大到小取,凑近C,可以小于等于C,但不能大于C.3.最后从小到大取,凑满C,这里的凑满可以等于大于C.然后将上述2,3步取到的面值全部取走,再转入步骤2,这样每次找到的取法就是当前最优取法,直到所剩下的金币总价值不够…
题目传送门 题目大意:给一个人发工资,给出不同数量不同面额,(大面额一定是小面额的倍数),问最多能发几天,(每天实发工资>=应发工资). 思路:首先,将大于等于c的面额的钱直接每个星期给奶牛一张,将面额大于等于c的前去除.然后从大到小开始选择,要选择的金额尽可能的接近c,如果刚好能够凑足c就作为当前的一种方案,如果不能凑足c那就再从小的开始选,要选出一种的总额不少于c但尽量接近c作为当前的方案,然后计算如果按照如此方案最多可以给奶牛多少周,然后按照相同的方法再选方案,一直选到选择的金额不能凑足c…
Allowance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1540   Accepted: 637 Description As a reward for record milk production, Farmer John has decided to start paying Bessie the cow a small weekly allowance. FJ has a set of coins in…
思路: 贪心. 看了题解说是 先把面值从大到小排序然后从头往尾扫,只要不超额,能取多少去多少然后如果还有剩余,就从尾往头扫,尽量取,让他恰好超额 不过并不懂证明. 实现: #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int N, C; struct node { int d, c; }; node a[]; bool cmp(const node &…
题意:作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴.FJ有一套硬币N种(1≤N≤20)不同的面额,每枚硬币是所有比他小的硬币面值的倍数,例如1美分硬币.5美分硬币.10美分硬币和50美分硬币.使用这些硬币,FJ每周至少给Bessie C(1 <= C <=100000000)美分.请你计算他最多能给Bessie几周. 题解: ①因为数据量较大,所以不能采用单组模拟的方式,不然必会tle,因此设立了一个used[i]数组来存储一种贪心情况,各种硬币所需要的个数…
题意:       有n种硬币,每种硬币有mi个,然后让你给奶牛发工资,每周发至少c元(就是不找零钱的意思)然后问你能发几周?(硬币之间都是倍数关系) 思路:       这个题目做了两天,丢脸,看完这个题目我的第一反应就是从大的发起,就是先花面值大的,能大的就一直大的,只要不超过c,然后再能小的就一直小的,补全没超过但是又不够那一部分,这个想法一开始就是对的,只不过我写的时候是排序,然后从前往后取,不能取了再从后往前取...这样一直wa,后来无奈了 我看了下题解,卧槽,没错啊(这最蛋疼了,因为…
POJ3617 Best Cow Line 题意 给定长度为N的字符串S,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下列任意操作: 从S的头部(或尾部)删除一个字符,加到T的尾部 目标是构造字典序尽可能小的字符串T. 思路 贪心算法,不断取S的开头和末尾中较小的一个字符放到T的末尾.但对于S的开头和末尾字符相同的情况下,需要比较下一个字符大小,这可以用如下算法实现: 按照字典序比较S和S翻转后的字符串S1,如果S较小,则从S的开头取,否则从末尾取. 代码 Source Cod…
Allowance 原文是English,这里就放Chinese了 Descriptions: 作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴.FJ有一套硬币N种(1≤N≤20)不同的面额,每枚硬币是所有比他小的硬币面值的倍数,例如1美分硬币.5美分硬币.10美分硬币和50美分硬币.使用这些硬币,FJ每周至少给Bessie C(1 <= C <=100000000)美分.请你计算他最多能给Bessie几周   Input * 第一行N . C * 第 2..N…