现在的位置: 首页 > 综合 > 正文

uva – 12325(二分复杂度做题)

2019年04月03日 ⁄ 综合 ⁄ 共 696字 ⁄ 字号 评论关闭
#include <map>
#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
const int lim = 110000;
LL s1,v1,s2,v2,n;
int main()
{
    int T,kase=1;
    scanf("%d",&T);
    while(T--){
        cin>>n>>s1>>v1>>s2>>v2;
        LL res = 0;
        if(n/s1 <= lim){
              int num = n/s1;
              for(int i = 0 ;i <= num;i++){
                  LL ans = v1*i;
                  int V = n - s1*i;
                  ans += (V/s2)*v2;
                  res =max(res,ans);
              }
        }
        else if(n/s2 <= lim){
              int num = n/s2;
              for(int i = 0 ;i <= num;i++){
                  LL ans = v2*i;
                  int V = n - s2*i;
                  ans += (V/s1)*v1;
                  res =max(res,ans);
              }
        }
        else {
             if(s2*v1 >= s1*v2){
                  for(int i=0;i<s1;i++) {
                     LL ans = v2*i;
                     int V = n - s2*i;
                     ans += (V/s1)*v1;
                     res =max(res,ans);
                  }
             }
             else {
                   for(int i=0;i<s2;i++) {
                     LL ans = v1*i;
                     int V = n - s1*i;
                     ans += (V/s2)*v2;
                     res =max(res,ans);
                  }
             }
        }
        cout<<"Case #"<<kase++<<": "<<res<<endl;
    }
    return 0;
}

抱歉!评论已关闭.