zoukankan      html  css  js  c++  java
  • 【深基12.例1】部分背包问题

    https://www.luogu.com.cn/problem/P2240

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n, t;
     4 struct jb{ //金币结构体 
     5     int m, v;//重量,价值 
     6 };
     7 jb a[105];//用于存储n 堆金币 
     8 double ans;//记录答案可以拿走金币总价值 
     9 bool cmp(jb x, jb y){//排序参数设定:单位重量金币价值 
    10     return x.v*1.0/x.m > y.v*1.0/y.m;//注意数据类型的转换 
    11 }
    12 int main()
    13 {
    14     cin>>n>>t;
    15     for(int i=0; i<n; i++)     //输入n堆金币 
    16         cin>>a[i].m>>a[i].v;
    17     sort(a, a+n, cmp);         //按单位重量金币价值从大到小排序    
    18     for(int i=0; i<n; i++){
    19         if(t>=a[i].m){         //背包剩余重量 和 当前堆金币重量比较 
    20             ans+=a[i].v*1.0;
    21             t-=a[i].m;
    22         }
    23         else{                 //背包剩余量装不下时,分割金币装包 
    24             ans+=a[i].v*1.0/a[i].m*t;
    25             t=0;
    26         }
    27         if(t==0)break;        //背包剩余量为 0时结束装包 
    28     }
    29     cout<<fixed<<setprecision(2)<<ans;
    30     return 0;
    31  } 
  • 相关阅读:
    微服务配合docker使用
    基于docker部署使用ELK+FileBeat日志管理平台
    Ubuntu开发用新机安装流程
    http 直接从body里传输数据
    005
    003
    004
    001
    002
    谷歌查看、管理cookie
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13362304.html
Copyright © 2011-2022 走看看