Alyona and copybooks

题目连接

题意:

给 n,a,b,c四个数,n为已有的书的数目,问再买k本书所需花费最少是多少,(k+n)%4==0;

有三种套餐

第一种只有一本书,花费a

第二种有两本书,花费b,

第三种有三本书,花费c.

暴力,n,k只有四种情况:n=0,k=0;   n=1,k=3;    n=2,k=2;    n=3,k=1;

n=0时,不用买;

n=1时,有三种买法可以可能出现最优解:3*a;    a+b;   c;

n=2时,有三种买法可以可能出现最优解: 2*a;  b;   2*c;

n=3时,有三种买法可以可能出现最优解: a; b+c;   3*c;

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<map>
 7 #include<vector>
 8 #include<set>
 9 #define ll long long
10 using namespace std;
11 const ll N=1e9+10;
12 int main()
13 {
14     ll n,a,b,c,d,ans;
15     while(~scanf("%lld%lld%lld%lld",&n,&a,&b,&c))
16     {
17         ans=1e12;
18         n=n%4;
19         //cout<<n<<endl;
20         if(n==1)
21         {
22             ans=min(3*a,ans);
23             ans=min(a+b,ans);
24             ans=min(c,ans);
25         }
26         else if(n==2)
27         {
28             ans=min(2*a,ans);
29             ans=min(b,ans);
30             ans=min(2*c,ans);
31         }
32         else if(n==3)
33         {
34             ans=min(a,ans);
35             ans=min(b+c,ans);
36             ans=min(3*c,ans);
37         }
38         else
39         ans=0;
40         printf("%lld
",ans);
41     }
42     return 0;
43 }
原文地址:https://www.cnblogs.com/WHLdbk/p/6099570.html