Euro Efficiency
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 4109   Accepted: 1754

Description

On January 1st 2002, The Netherlands, and several other European countries abandoned their national currency in favour of the Euro. This changed the ease of paying, and not just internationally.
A student buying a 68 guilder book before January 1st could pay for
the book with one 50 guilder banknote and two 10 guilder banknotes,
receiving two guilders in change. In short:50+10+10-1-1=68. Other ways
of paying were: 50+25-5-1-1, or 100-25-5-1-1.Either way, there are
always 5 units (banknotes or coins) involved in the payment process, and
it

could not be done with less than 5 units.

Buying a 68 Euro book is easier these days: 50+20-2 = 68, so only 3
units are involved.This is no coincidence; in many other cases paying
with euros is more efficient than paying with guilders. On average the
Euro is more efficient. This has nothing to do, of course, with the
value of the Euro, but with the units chosen. The units for guilders
used to be: 1, 2.5, 5, 10, 25, 50,whereas the units for the Euro are: 1,
2, 5, 10, 20, 50.

For this problem we restrict ourselves to amounts up to 100 cents.
The Euro has coins with values 1, 2, 5, 10, 20, 50 eurocents. In paying
an arbitrary amount in the range [1, 100] eurocents, on average 2.96
coins are involved, either as payment or as change. The Euro series is
not optimal in this sense. With coins 1, 24, 34, 39, 46, 50 an amount of
68 cents can be paid using two coins.The average number of coins
involved in paying an amount in the range [1, 100] is 2.52.

Calculations with the latter series are more complex, however. That
is, mental calculations.These calculations could easily be programmed in
any mobile phone, which nearly everybody carries around nowadays.
Preparing for the future, a committee of the European Central Bank is
studying the efficiency of series of coins, to find the most efficient
series for amounts up to 100 eurocents. They need your help.

Write a program that, given a series of coins, calculates the
average and maximum number of coins needed to pay any amount up to and
including 100 cents. You may assume that both parties involved have
sufficient numbers of any coin at their disposal.

Input

The
first line of the input contains the number of test cases. Each test
case is described by 6 different positive integers on a single line: the
values of the coins, in ascending order. The first number is always 1.
The last number is less than 100.

Output

For
each test case the output is a single line containing first the average
and then the maximum number of coins involved in paying an amount in the
range [1, 100]. These values are separated by a space. As in the
example, the average should always contain two digits behind the decimal
point. The maximum is always an integer.

Sample Input

3
1 2 5 10 20 50
1 24 34 39 46 50
1 2 3 7 19 72

Sample Output

2.96 5
2.52 3
2.80 4
完全背包问题,钞票的和包括加和减,因此输入1到6个正数,可将其相反数存到7到12中
PS:G++下double输出为%.2f,C++下double输出为%.2lf
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
int dp[];
int a[],t;
int main()
{
scanf("%d",&t);
while(t--)
{
memset(a,,sizeof(a));
double ans=0.0;
int pos=-;
for(int i=;i<=;i++)
{
scanf("%d",&a[i]);
a[i+]=-a[i];
}
for(int i=;i<=;i++)
{
dp[i]=INF;
}
dp[]=;
for(int i=;i<=;i++)
{
if(a[i]>)
{
for(int j=a[i];j<=;j++)
{
dp[j]=min(dp[j],dp[j-a[i]]+);
}
}
else
{
for(int j=;j>=-a[i];j--)
{
dp[j+a[i]]=min(dp[j+a[i]],dp[j]+);
}
}
}
for(int i=;i<=;i++)
{
ans+=dp[i];
pos=max(pos,dp[i]);
}
printf("%.2f %d\n",ans/(100.0),pos);
}
return ;
}

POJ Euro Efficiency 1252的更多相关文章

  1. Euro Efficiency(完全背包)

    Euro Efficiency Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Tot ...

  2. POJ 1252 Euro Efficiency(完全背包, 找零问题, 二次DP)

    Description On January 1st 2002, The Netherlands, and several other European countries abandoned the ...

  3. POJ 1252 Euro Efficiency

    背包 要么 BFS 意大利是说给你几个基本的货币,组成 1~100 所有货币,使用基本上的货币量以最小的. 出口 用法概率.和最大使用量. 能够BFS 有可能 . 只是记得数组开大点. 可能会出现 1 ...

  4. POJ 1252 Euro Efficiency(最短路 完全背包)

    题意: 给定6个硬币的币值, 问组成1~100这些数最少要几个硬币, 比如给定1 2 5 10 20 50, 组成40 可以是 20 + 20, 也可以是 50 -10, 最少硬币是2个. 分析: 这 ...

  5. POJ 1252 Euro Efficiency ( 完全背包变形 && 物品重量为负 )

    题意 : 给出 6 枚硬币的面值,然后要求求出对于 1~100 要用所给硬币凑出这 100 个面值且要求所用的硬币数都是最少的,问你最后使用硬币的平均个数以及对于单个面值所用硬币的最大数. 分析 :  ...

  6. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  7. POJ 1252 DP

    题意:给你6个数.让你求出1~100范围内的数 最优情况下由这六个数加减几步得到. 输出平均值和最大值. 思路: 我就随便写了写,,,感觉自己的思路完全不对. 但是交上去 AC了!!! 我先当减法 不 ...

  8. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  9. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

随机推荐

  1. 题解 洛谷 P3376 【【模板】网络最大流】

    本人很弱,只会Dinic.EK与Ford-Fulkerson...(正在学习ISAP...) 这里讲Dinic... Dinic:与Ford-Fulkerson和的思路相似(话说好像最大流求解都差不多 ...

  2. 什么是面向对象以及其意义,prototpye原型

    什么是面向对象: 使用对象时,只关注对象提供的功能,不关注其内部的细节 例如:jquery 什么是对象: 对象是一个整体对外提供一些操作,比如 收音机 面向对象编程OOP的特点: 1.抽象:把主要的特 ...

  3. 【BZOJ 1005】[HNOI2008]明明的烦恼(暴力化简法)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 [题意] 中文题 [题解] 一棵节点上标有序号的树会和一个prufer数列唯一对 ...

  4. Python学习简单练习-99乘法表

    __author__ = 'ZFH'#-*- coding:utf-8 -*-for i in range(10): #外层循环,range(10),1-9 for j in range(1,i+1) ...

  5. 洛谷——P1455 搭配购买

    https://www.luogu.org/problem/show?pid=1455 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某 ...

  6. HDU 5274(LCA + 线段树)

    Dylans loves tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  7. HDU 3652 B-number(数位dp&amp;记忆化搜索)

    题目链接:[kuangbin带你飞]专题十五 数位DP G - B-number 题意 求1-n的范围里含有13且能被13整除的数字的个数. 思路 首先,了解这样一个式子:a%m == ((b%m)* ...

  8. OpenGL编程(一)渲染一个指定颜色的背景窗口

    上次已经搭好了OpenGL编程的环境.已经成功运行了第一个程序.可只是照搬书上的代码,并没弄懂其中的原理.这次通过一个小程序来解释使用GLUT库编写OpenGL程序的过程. 程序的入口 与其他程序一样 ...

  9. css inline-block列表布局

    一.使用inline-block布局 二.多列布局方法二 <html><head> <meta charset="utf-8"> <tit ...

  10. c# 值类型 之枚举

    1声明枚举(enum)类型的变量 enum 变量名 { //标识符列表中,元素与元素之间用 , 逗号分隔: 标识符列表 } 枚举列表中的每个符号代表一个整数值,一个比他前面符号大的整数值,默认情况下, ...