题意:

有n个施工队,给定他们的位置,有m个防空洞,给定位置,求将施工队放到m个防空洞里面,最少的总距离?

n<=4000

分析:

dp[i][j] 前 i 个施工队,放到前 j 个防空洞里面的最少距离;

dp(i+1,j) = min(dp(i,j),dp(i,j-1)) + dist(a[i] - b[j]);

DP采用滚动数组;

那么,第二维的防空洞该怎么循环呢?

因为,每个防空洞都要有,那么这类似于背包中的容量,刷表的方式;

#include <bits/stdc++.h>using namespace std;const int maxn = 4000+5;
const int inf = 0x3f3f3f3f;struct node {int d;int id;int ans;
}A[maxn],B[maxn];long long dp[maxn];
int path[maxn][maxn];
int n,m;bool cmp(node a,node b) {if(a.d==b.d)return a.id < b.id;return a.d < b.d;
}void find_path(int i,int j) {if(i)find_path(i-1,path[i][j]);A[i].ans = B[j].id;
}int cmp1(node a,node b) {return a.id < b.id;
}int main()
{while(~scanf("%d",&n)) {for(int i=0;i<n;i++){scanf("%d",&A[i].d);A[i].id = i;}scanf("%d",&m);for(int i=0;i<m;i++) {scanf("%d",&B[i].d);B[i].id = i;}sort(A,A+n,cmp);sort(B,B+m,cmp);memset(dp,inf,sizeof(dp));dp[0] = abs(A[0].d-B[0].d);for(int i=1;i<n;i++) {for(int j=min(m-1,i);j>=0;j--) {if(!j||dp[j]<dp[j-1]) {path[i][j] = j;dp[j] = dp[j] + abs(A[i].d-B[j].d);}else {path[i][j] = j-1;dp[j] = dp[j-1] + abs(A[i].d - B[j].d);}}}printf("%lld\n",dp[m-1]);find_path(n-1,m-1);sort(A,A+n,cmp1);for(int i=0;i<n;i++)printf("%d ",A[i].ans+1);puts("");}return 0;
}

View Code

转载于:https://www.cnblogs.com/TreeDream/p/7076961.html

LA 4987 背包相关推荐

  1. UVa在线比赛单题汇总-----DP专题

    动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...

  2. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

  3. 牛客网暑期ACM多校训练营(第三场)A.PACM Team(多重01背包)

    链接:https://www.nowcoder.com/acm/contest/141/A 来源:牛客网 题目描述 Eddy was a contestant participating in ACM ...

  4. [luogu4389]付公主的背包

    前言 一道巧妙的推式子题 题目相关 链接 题目大意 给出nnn个商品,第iii个商品的体积为viv_ivi​,并且有无限个 现在给出一个mmm,对背包大小s∈[1,m]s\in[1,m]s∈[1,m] ...

  5. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  6. 单调队列多重背包时间复杂度O(vn)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...

  7. WCDMA中的URA和LA/RA

    1.关于URA的概念: URA(UTRAN Registration Area)是UTRAN内部区域的划分适用于UE处于RRC连接状态的情形,而且只能在UTRAN端使用(比如由UTRAN发起的寻呼). ...

  8. 浅说——九讲背包之01背包

    所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...

  9. codevs——2894 Txx考试(背包)

    时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以打发时间.今 ...

  10. HDU-1203 I NEED A OFFER!-0、1背包及空间优化

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

最新文章

  1. python定时任务contrib_django+celery配置(定时任务+循环任务)
  2. 用archoctopus下载花瓣
  3. ​实时音视频服务的“既要、又要、还要”
  4. c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc
  5. Linux 之 编译器 gcc/g++参数详解
  6. 【BZOJ2326】【codevs2314】数学作业,第100篇博文纪念
  7. python turtle画简单树_大家用Python-turtle库作图画出过哪些漂亮的树哇 ?
  8. 1个app的完整测试用例_同你分享1个完整的聚类分析案例
  9. EXCEL中,函数中的双引号如何表示?
  10. sonar报java.io.StreamCorruptedException: invalid internal transport message format, got (48,54,54,50)
  11. Dubbo源码解析-Dubbo架构的实现
  12. android第三方apk找不到/system/lib64/里面的系统库
  13. Angular JS introduce
  14. 微信公众平台模版消息
  15. Apple Music 推出空间音频和无损音频
  16. 122、影响爆炸极限的因素
  17. [Unity Shader] 水纹着色器 Water Shader
  18. 关于wordcloud安装
  19. Grafana监控安装和监控看板创建
  20. 文件名称重命名后,一键恢复的技巧

热门文章

  1. Java学习--多线程案例--模拟火车票销售(线程安全问题)
  2. pr如何处理音效_PR音乐音效处理教程 Premiere Pro CC Essential Sound
  3. PR视频去水印—中间值
  4. 《人性的弱点》(戴尔-卡耐基)读书小结
  5. Rainmeter音频频谱插件分享
  6. 谁的java视频教程好_初学Java编程看谁的Java视频教程好一些
  7. 玩转MongoDB—基本概念及初步使用
  8. uni-app设置背景图自适应手机屏幕尺寸
  9. 如何让函数只执行一次
  10. Python基础语法1 —— 变量、数据类型