链接:点击打开链接

题意:在一条直线上有n个施工队和m个避难所,给出每个施工队和避难所相对于原点的距离,求在保证每个避难点有一个施工队的前提下,所有施工队移动的最小距离和

代码:

#include <math.h>
#include <vector>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const long long INF=0x3f3f3f3f;
struct node{int d,id,cp;
}a[4005],b[4005];
bool cmp1(node x,node y){return x.d<y.d;
}
bool cmp2(node x,node y){return x.id<y.id;
}
long long dp[4005];
int path[4005][4005];
void print(int x,int y){if(x)print(x-1,path[x][y]);a[x].cp=b[y].id;
}
int main(){                                     //dp[i][j]表示前i个施工队到前j个避难场所的距离和int n,m,i,j;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%d",&a[i].d);a[i].id=i;}scanf("%d",&m);for(i=0;i<m;i++){scanf("%d",&b[i].d);b[i].id=i;}sort(a,a+n,cmp1);                       //先按距离排序,保证最优sort(b,b+m,cmp1);                       memset(dp,INF,sizeof(dp));memset(path,0,sizeof(path));dp[0]=abs(a[0].d-b[0].d);for(i=1;i<n;i++){                       for(j=min(i,m-1);j>=0;j--){if(j>0&&dp[j-1]<dp[j]){         //dp[i][j]=min(dp[i-1][j],dp[i-1][j-1])+abs(a[i].d-b[j].d)path[i][j]=j-1;             //然后实际过程中可以省略第一维dp[j]=dp[j-1]+abs(a[i].d-b[j].d);}else{path[i][j]=j;dp[j]=dp[j]+abs(a[i].d-b[j].d);}}}printf("%lld\n",dp[m-1]);print(n-1,m-1);sort(a,a+n,cmp2);for(i=0;i<n;i++)printf("%d ",a[i].cp+1);printf("\n");}return 0;
}

UVALive4987(dp+贪心)相关推荐

  1. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  2. 【BZOJ3174】【codevs25442075】拯救小矮人,DP+贪心

    Time:2016.07.19 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 传送门3 思路: 比较神的DP "贪心确定DP的状态"--reflash 写了 ...

  3. 2018.10.26 NOIP模拟 瓶子 (dp/贪心)

    传送门 正解是dp并不想去想了. 自己yy了一个贪心拿了95pts95pts95pts,唯一没过的点还只有一个地方错了,面向数据变成之后过啦! 所以我讲讲如何贪心. 考虑到最后都只会合并成一种颜色,所 ...

  4. CodeForces - 1453E Dog Snacks(树形dp+贪心)

    题目链接:点击查看 题目大意:给出一棵有根树,现在需要选择一个最小的 k 值,可以满足下列的 n 次操作: 起始时位于点 1(根节点) 每一步选择一个未被遍历的节点中,距离最近的,且必须满足此距离小于 ...

  5. 2020CCPC(秦皇岛) - Kingdom‘s Power(树形dp+贪心)

    题目大意:给出一棵 n 个节点的有根树,点 1 为根节点,现在在根节点有无穷多个士兵,每一秒可以控制任意一个士兵向任意一个单位移动一步,士兵移动到的点会被永久占领,现在问最少需要经过多少秒,才能将所有 ...

  6. CodeForces - 1341D Nastya and Scoreboard(dp+贪心)

    题目链接:点击查看 题目大意:给出 n 个二进制数字,1 ~ n 分别表示从最高位到最低位的数字,每个二进制数字的长度都为 7 ,分别表示相应位置是否被点亮 现在总共需要再点亮 k 个位置,问能否有一 ...

  7. 【dp 贪心】bzoj4391: [Usaco2015 dec]High Card Low Card

    巧妙的贪心 Description Bessie the cow is a huge fan of card games, which is quite surprising, given her l ...

  8. Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心

    传送门 文章目录 题意: 思路: 题意: 思路: 排序方式跟easyeasyeasy版本的一样,但是hardhardhard版本是输出最多能选多少,所以我们对b<0b<0b<0的情况 ...

  9. 【2018.3.24】模拟赛之五-ssl1864 得分【dp,贪心】

    正题 链接(需要jzoj账号) 大意 有n道题,有不同的价值和需要的时间,在剩余x分钟做并且可以做完的话就可以获得 价值*x的价值. 大意 用贪心+Dp,然后就好了.贪心就是用价值除以时间,然后排序. ...

  10. codeforces229 D. Towers(dp+贪心)

    D. Towers 设计dp: fif_ifi​表示考虑到iii时满足题意的最小代价. 考虑最后一步,也就是最后一组合并即fi=fj+{aj+1+⋯+ai}f_i=f_j+\{a_{j+1}+\dot ...

最新文章

  1. 藏在1.85亿人体内的隐形致癌病毒,有人确诊即是晚期
  2. 客户关系管理系统部分代码实现
  3. Quartz.Net实现作业定时调度详解
  4. PLSQL导出触发器代码
  5. springboot 接口404_资深架构带你学习Springboot集成普罗米修斯
  6. @程序员,使用了 SQL 就不能用 DevOps?
  7. netty应用场景_彻底搞懂 netty 线程模型
  8. spring mvc统一异常处理(@ControllerAdvice + @ExceptionHandler)
  9. 关于matlab浮点转定点总结
  10. Sklearn提供的常用数据集
  11. Mac上添加自己/公司的网络服务器盘
  12. 迅雷对电驴资源的限制
  13. Qt之获取屏幕分辨率
  14. 三步棋,跟着bit鹏哥学得
  15. CAUSE: The chosen installation conflicted with software already installed in the given Oracle home.
  16. 关于洗地机电池容量问题,你怎么看
  17. 来钱快的3种副业,虽然不起眼,不过很赚钱‍‍‍
  18. oracle varchar,date互转,number,varchar互转
  19. 更改tomcat访问端口()
  20. uvalive 4413(梅涅劳斯定理)

热门文章

  1. 前端学习 之 Highcharts各种图形 示例
  2. Zabbix 4.2 支持 Prometheus 数据收集
  3. eCharts绘制双系列混合类型图表+额外tooltip信息
  4. 华为--三层交换实验(原理与实验详情)
  5. 快速开发~Rafy框架的初步认识
  6. 迁移学习论文阅读感想(初步)
  7. 三星android5 root包,三星N9200刷国行系统(含五件套root权限recovery SuperSU)
  8. win7 计算机和控制面板突然打不开,显示服务器运行失败
  9. 机器学习资源备份,转载自大神https://zhuanlan.zhihu.com/p/26876504
  10. LOL手游诺手终极玩法,对线王者剑姬如何操作?国服第一推荐操作