P2240 【深基12.例1】部分背包问题

题目链接 https://www.luogu.com.cn/problem/P2240

啥啊被骗了。。我还以为是dp。。。


 

将价值比算出来,并按照价值比从大到小排序。

(所有量用double类型,强转不对不知道为什么,一会儿去学学)


 

放AC代码

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node
 4 {
 5     double m;//某堆总重量
 6     double v;//某堆总价值
 7     double b;//价值比
 8 }a[105];
 9 bool cmp(node x,node y)
10 {
11     return (x.b>y.b);
12 }
13 int main()
14 {
15     int n,t;
16     double ans=0;
17     cin>>n>>t;
18     for(int i=1;i<=n;i++)
19     {
20         cin>>a[i].m>>a[i].v;
21         a[i].b=a[i].v/a[i].m;
22     }
23     sort(a+1,a+n+1,cmp);
24     for(register int i=1;i<=n;i++)
25     {
26         if(t>=a[i].m)
27         {
28             ans+=a[i].v;
29             t-=a[i].m;
30         }
31         else
32         {
33             ans+=t*a[i].b;
34             break;
35         }
36     }
37     printf("%.2lf",ans);
38     return 0;
39 }
复制代码

 

posted @   爱吃虾滑  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示