链接:https://ac.nowcoder.com/acm/contest/912/J

题意:

小r为了打校赛,他打算去打字社打印一份包含世界上所有算法的模板。

到了打字社,小r一看价格:总打印页数X0X0页以下(不含X0X0)x0x0元每页,X0∼X1X0∼X1页(不含X1X1)x1x1元每页,X1∼X2X1∼X2页(不含X2X2)x2x2元每页,X2∼X3X2∼X3页(不含X3X3)x3x3元每页,X3∼X4X3∼X4页(不含X4X4)x4x4元每页……

小r转念一想,他可以多放一些白纸在模板里面,还能花更少的钱。

给出小r要打印的模板页数n以及价格列表X和x,小r想知道他打印的最少花费为多少钱?

注意:小r只能打印一次,不能将一篇文章分多次打印。

思路:

先找出第一个满足的,再挨个往后找全部,纸张不断增加,取最小值即可。

代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
const int MAXN = 1e3 + 10;
const int MOD = 1e9 + 7;
int n, m, k, t; int pages[MAXN];
double money[MAXN]; int main()
{
cin >> n >> m;
for (int i = 1;i <= m;i++)
cin >> pages[i];
for (int i = 1;i <= m;i++)
cin >> money[i];
int i = 1;
double res;
for (i = 1;i <= n;i++)
if (pages[i] > n)
{
res = n*money[i];
break;
}
for (i++;i <= m;i++)
{
res = min(res, 1.0*pages[i-1]*money[i]);
}
cout << res << endl; return 0;
}

  

05-18 23:29
查看更多