长春理工大学第十四届程序设计竞赛(重现赛)J.Printout

Posted ydddd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长春理工大学第十四届程序设计竞赛(重现赛)J.Printout相关的知识,希望对你有一定的参考价值。

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

题意:

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

到了打字社,小r一看价格:总打印页数X0X0页以下(不含X0X0)x0x0元每页,X0X1X0∼X1页(不含X1X1)x1x1元每页,X1X2X1∼X2页(不含X2X2)x2x2元每页,X2X3X2∼X3页(不含X3X3)x3x3元每页,X3X4X3∼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;

  

以上是关于长春理工大学第十四届程序设计竞赛(重现赛)J.Printout的主要内容,如果未能解决你的问题,请参考以下文章

长春理工大学第十四届程序设计竞赛(重现赛)H

长春理工大学第十四届程序设计竞赛(重现赛)B

长春理工大学第十四届程序设计竞赛(重现赛)J.Printout

长春理工大学第十四届程序设计竞赛F Successione di Fixoracci——找规律&&水题

第十四届华中科技大学程序设计竞赛决赛同步赛

第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land