zoukankan      html  css  js  c++  java
  • 1013. 无限背包

    Description

    你现在有一个体积为V的大袋子,有N种物品,假设每种物品的数量有无限多个,而且第i种物品的体积是c[i],价值是w[i],请选择一些物品放入袋中,使袋中物品的价值总和最大。

    注意每种物品的数量是无限多的;对于放入袋中的同种物品数量没有限制。

    Input Format

    第一行包含两个正整数V和N,分别代表袋子的体积和物品的种类数。

    以下N行分别由2个正整数组成,代表每种物品的体积和价值。

    V10000,N1000

    保证操作可在C++ int范围内完成。

    Output Format

    输出一个整数,表示最大的价值总和

    Sample Input

    5 3
    2 3
    3 2
    4 1
    

    Sample Output

    6
    



    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    typedef struct item{
        int c;
        int w;
        double p;
    }item;
    
    bool com(item a,item b){
        return a.p>b.p;
    }
    
    int main(){
        int v,n;
        item a[1001];
        cin>>v>>n;
        for(int i=0;i<n;i++){
            cin>>a[i].c>>a[i].w;
            a[i].p=a[i].w/double(a[i].c);
        }
        sort(a,a+n,com);
        int sum=0,j,k;
        for(int i=0;i<n;i++){
            j=v/a[i].c;
            k=v%a[i].c;
            sum+=j*a[i].w;
            v=k;
        }
        cout<<sum;
        return 0;
    }
  • 相关阅读:
    消息机制
    窗口!窗口!- Windows程序设计(SDK)003
    内联函数的作用
    结构体变量用 . 结构体指针用-> 的原因
    &a和a的区别
    分布电容
    介电常数
    天线
    封装的思想
    关于中断标志位
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/7878623.html
Copyright © 2011-2022 走看看