• UVa-12325 Zombie's Treasure Chest


     1 #include <bits/stdc++.h>
     2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
     3 #define pb push_back
     4 #define ll long long int
     5 
     6 using namespace std;
     7 
     8 ll N;
     9 ll S1,V1,S2,V2;
    10 ll rnt = 0;
    11 
    12 int kase = 1;
    13 void solve()
    14 {
    15     ll sz = min(N/S1,N/S2);
    16     if(sz<=39396)
    17     {
    18         int md;
    19         sz == N/S1 ? md = 0:md = 1;
    20         if(md)
    21         {
    22             _for(i,0,sz+1)
    23             {
    24                 ll tmrnt = 0;
    25                 ll tmN = N;
    26                 tmrnt += i*V2;
    27                 tmN -= i*S2;
    28                 tmrnt += tmN/S1*V1;
    29                 rnt = max(tmrnt,rnt);
    30             }
    31         }
    32         else
    33         {
    34             _for(i,0,sz+1)
    35             {
    36                 ll tmrnt = 0;
    37                 ll tmN = N;
    38                 tmrnt += i*V1;
    39                 tmN -= i*S1;
    40                 tmrnt += tmN/S2*V2;
    41                 rnt = max(tmrnt,rnt);
    42             }
    43         }
    44     }
    45     else
    46     {
    47         if(S2*V1>S1*V2)
    48         {
    49             _for(i,0,S1)
    50             {
    51                 ll tmrnt = 0;
    52                 ll tmN = N;
    53                 tmrnt += i*V2;
    54                 tmN -= i*S2;
    55                 tmrnt += tmN/S1*V1;
    56                 rnt = max(tmrnt,rnt);
    57             }
    58         }
    59         else
    60         {
    61             _for(i,0,S2)
    62             {
    63                 ll tmrnt = 0;
    64                 ll tmN = N;
    65                 tmrnt += i*V1;
    66                 tmN -= i*S1;
    67                 tmrnt += tmN/S2*V2;
    68                 rnt = max(tmrnt,rnt);
    69             }
    70         }
    71     }
    72     printf("Case #%d: %lld
    ",kase++,rnt);
    73 }
    74 
    75 int main()
    76 {
    77     int T;
    78     scanf("%d",&T);
    79     while(T--)
    80     {
    81         rnt = 0;
    82         scanf("%lld%lld%lld%lld%lld",&N,&S1,&V1,&S2,&V2);
    83         solve();
    84     }
    85     return 0;
    86 }

    要用long long啊!不然32位边界会溢出的!

  • 相关阅读:
    2021/3/12
    2021/3/11
    2021/3/10
    2021/3/9
    2021/3/8
    2021/3/5
    2021/3/4
    2021/3/3
    2021/3/2
    2021/3/1
  • 原文地址:https://www.cnblogs.com/Asurudo/p/10072623.html
Copyright © 2020-2023  润新知