码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 526C.Om Nom and Candies

时间:2018-07-01 15:19:08      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:swa   get   一个   problem   col   long   wap   计算   pac   

题目描述

一个只有两个物品的背包问题,但是范围都是1e9,需要考虑根号或者log的复杂度。

如果这两个物品中的某一个花费超过了根号C,那么我们可以直接枚举这件物品的数量,另一件物品的数量可以计算得出。

若没有

  假设 v1/c1>v2/c2 也就是v1*c2>v2*c1

  假设第一件物品有c2件,也就是耗费了c1*c2的空间得到了v1*c2的价值,若用这c1*c2的空间选c1个价值为v2的物品,根据上面的不等式可以看出这是不忧的。

  所以第二件物品的数量不会超过c1件。

#include<complex>
#include<cstdio>
using namespace std;
long long m,c1,c2,v1,v2,ans;
int main()
{
    scanf("%d%d%d%d%d",&m,&v1,&v2,&c1,&c2);
    if(c2>c1)swap(c1,c2),swap(v1,v2);
    if(c1>=sqrt(m))
        for(int i=0;i*c1<=m;i++)
            ans=max(ans,i*v1+(m-i*c1)/c2*v2);
    else
    {
        if(v1*c2<v2*c1)swap(c1,c2),swap(v1,v2);
        for(int i=0;i<c1 && i*c2<=m;i++)
            ans=max(ans,i*v2+(m-i*c2)/c1*v1);
    }
    printf("%lld\n",ans);
    return 0;
}

 

Codeforces 526C.Om Nom and Candies

标签:swa   get   一个   problem   col   long   wap   计算   pac   

原文地址:https://www.cnblogs.com/LeTri/p/9250187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!