投稿  收藏 
第 23 题   

一只小猪要买 N 件物品(N 不超过 1000)。

它要买的所有物品在两家商店里都有卖。第 i 件物品在第一家商店的价格是a[i],在第二家商店的价格是 b[i],两个价格都不小于 0 且不超过 10000。如果在第一家商店买的物品的总额不少于 50000,那么在第一家店买的物品都可以打 95 折(价格变为原来的 0.95 倍)。

求小猪买齐所有物品所需最少的总额。

输入:第一行一个数 N。接下来 N 行,每行两个数。第 i 行的两个数分别代表 a[i],b[i]。

输出:输出一行一个数,表示最少需要的总额,保留两位小数。

试补全程序。(第一空 2 分,其余 3 分)

 

#include <cstdio>

#include <algorithm>

using namespace std;

 

const int Inf = 1000000000;

const int threshold = 50000;

const int maxn = 1000;

 

int n, a[maxn], b[maxn];

bool put_a[maxn];

int total_a, total_b;

double ans;

int f[threshold];

 

int main() {

scanf("%d", &n);

total_a = total_b = 0;

for (int i = 0; i < n; ++i) {

scanf("%d%d", a + i, b + i);

if (a[i] <= b[i]) total_a += a[i];

else total_b += b[i];

}

ans = total_a + total_b;

total_a = total_b = 0;

for (int i = 0; i < n; ++i) {

if (      (1)      ) {

put_a[i] = true;

total_a += a[i];

} else {

put_a[i] = false;

total_b += b[i];

}

}

if (      (2)      ) {

printf("%.2f", total_a * 0.95 + total_b);

return 0;

}

f[0] = 0;

for (int i = 1; i < threshold; ++i)

f[i] = Inf;

int total_b_prefix = 0;

for (int i = 0; i < n; ++i)

if (!put_a[i]) {

total_b_prefix += b[i];

for (int j = threshold - 1; j >= 0; --j) {

if (      (3)      >= threshold && f[j] != Inf)

ans = min(ans, (total_a + j + a[i]) * 0.95

                                +       (4)      );

f[j] = min(f[j] + b[i], j >= a[i] ?      (5)      : Inf);

}

}

printf("%.2f", ans);

return 0;

}

 
 

下载文档

下载文档

相关试卷

第 23 题    一只小猪要买 N 件物品(N 不超过 1000)。 它要买的所有物品在两家商店里都有卖。第 i 件物品在第一家商店的价格是a[i],在第二家商店的价格是 b[i],两个价格都不小
第 22 题    对于一个1到n的排列p(即1到n中每一个数在p中出现了恰好一次),令qi为第i个位置之后第一个比pi值更大的位置,如果不存在这样的位置,则qi= n +1。举例来说,如果n = 5
第 21 题    阅读程序写结果: #include <cstdio> using namespace std; const int N = 110; bool isUse[N]; in
第 20 题    阅读程序写结果: #include <iostream> using namespace std; string s; long long magic(int l, i
第 19 题    阅读程序写结果: #include <cstdio> int n, d[100]; bool v[100]; int main() { scanf("%d&
第 18 题    阅读程序写结果: #include <cstdio> int main() { int x; scanf("%d", &x); int res
第 17 题 方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时,共有_____组解。(*表示乘法;or 表示按位或运算;and 表示按位与运算)
第 16 题 甲乙丙丁四人在考虑周末要不要外出郊游。 已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。 如果周末
第 15 题 下列关于图灵奖的说法中,正确的有( )。  A. 图灵奖是由电气和电子工程师协会(IEEE)设立的。  B. 目前获得该奖项的华人学者只有姚期智教授一人。  C. 其名称取自计算机科学的
第 14 题 下列说法中,是树的性质的有( )。  A. 无环  B. 任意两个结点之间有且只有一条简单路径  C. 有且只有一个简单环  D. 边的数目恰是顶点数目减 11

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢