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;
    }
  • 相关阅读:
    list拖动
    android sdk
    AwwwB推荐网站全盘克隆
    WPF中的容器控件——WrapPanel
    WPF中的容器控件——StackPanel
    MFC应用程序中指针的使用
    排序算法之插入排序
    转:MFC 常用语句集锦
    【转】MFC学习总结
    排序算法之冒泡排序
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/7878623.html
Copyright © 2011-2022 走看看