当前位置: 首页 > ds >正文

第34次CCF-CSP认证第4题,货物调度

题目链接TUOJ

这道题是背包DP+贪心。这很明显是分组背包,一个仓库是一组,因为代价是和仓库和数量有关,与具体的货物无关(这也是贪心的基础)。

1.我们遍历每一组,对每一组的物品价值从大到小排序。这是很明显的,再这一组中选一定数量的物品代价就是一定的,我们肯定会选价值较高的才能得到最优解。

2.40000是通过数据范围算出来的最大代价,接下来就是跑分组背包的代码。

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
int n,m,v,b[1005],c[1005],dp[40005];
vector<int>arr[1005];
int main()
{
cin>>n>>m>>v;
for(int i=0;i<n;i++){cin>>b[i]>>c[i];
}
int a,t;
for(int i=0;i<m;i++){cin>>a>>t;arr[t].push_back(a);
}
for(int i=0;i<=n;i++){sort(arr[i].begin(),arr[i].end(),greater<int>());for(int j=40000;j>=0;j--){int sum=0;for(int k=0;k<arr[i].size();k++){if(b[i]+c[i]*(k+1)<=j){sum+=arr[i][k];dp[j]=max(dp[j],dp[j-(b[i]+c[i]*(k+1))]+sum);}else break;}}
}
for(int i=1;i<=40000;i++){if(dp[i]-i>=v){cout<<i;return 0;}
}return 0;
}

http://www.xdnf.cn/news/15413.html

相关文章:

  • 零基础搭建监控系统:Grafana+InfluxDB 保姆级教程,5分钟可视化服务器性能!​
  • Python 中的 encode() 和 decode() 方法详解
  • JavaSE常用类
  • 开阳630HV100芯片的外设配置
  • 【C++】封装红黑树模拟实现set和map
  • C语言<数据结构-单链表>(收尾)
  • Linux反弹shell的几种方式
  • Java 接口详解:从基础到高级,掌握面向对象设计的核心契约
  • linux系统mysql性能优化
  • 【理念●体系】迁移复现篇:打造可复制、可复原的 AI 项目开发环境
  • AI产品经理面试宝典第12天:AI产品经理的思维与转型路径面试题与答法
  • 车载诊断架构 --- 诊断功能开发流程
  • 分析与展望
  • Linux:信号
  • Armstrong 公理系统深度解析
  • 一文讲清楚大语言模型核心:Transformer 内部运行原理详解,看这一篇就够了!
  • Datawhale AI夏令营 MCP初体验——简历小助手
  • 2.单例模式
  • 用 Python 将分组文本转为 Excel:以四级词汇为例的实战解析
  • python-while循环
  • 数据标注:AI时代的黄金矿场如何规避法律暗礁
  • K3S滚动发布Jar
  • Windows环境下JS计时器精度差异揭秘
  • 老项目模拟器运行提示Executable Path is a Directory
  • 三步定位 Git Push 403:从日志到解决
  • 技术面试问题总结二
  • SE机制深度解析:从原理到实现
  • React - createPortal
  • blender uv小技巧
  • C++实现二叉树左右子树交换算法