HDU3339 In Action 【最短路】+【01背包】

时间:2022-05-05 09:29:04

<题目链接>

题目大意:

给出一个0~n组成的图,1~n的点上分布着值为pow的电站,给出图的m条边以及距离,从0出发到n个点中的x个点的行走距离和最小(因为是每炸一个点派出一辆坦克),且x个点的pow之和必须超过总的pow和的一半。

解题分析:

由于本题数据范围很小,只有100,所以我们能够用floyed算出0到任意一点的最短距离,然后将所有0可达的点看成物品,0到它们的最短距离看成体积,这样将所有可达物品最短距离之和看成背包容量,这些可达点的pow看成价值,然后再用01背包。dp[i]表示在总共走i距离的情况下,所能获得的最大价值。所以,在用01背包计算dp[1~sumvol]的所有值后,我们就可以遍历总共走过的距离i,当dp[i]恰好大于总价值一半的时候,此时的i就是总共的最短距离。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define ll long long
const int INF=0x3f3f3f3f;
int n,m;
int mpa[][];
int val[],vol[];
const int maxn=+;
int dp[maxn]; void floyed(){ //floyed计算0到各点的最短路
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
for(int k=;k<=n;k++){
if(mpa[j][k]>mpa[j][i]+mpa[i][k]){
mpa[j][k]=mpa[j][i]+mpa[i][k];
}
}
}
}
} int main(){
int t;scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&m); for(int i=;i<=n;i++){ //mpa[][]数组初始化
for(int j=;j<=n;j++){
if(i==j)mpa[i][j]=;
else mpa[i][j]=INF;
}
} for(int i=;i<=m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(c<mpa[a][b]){ //去重边
mpa[a][b]=mpa[b][a]=c;
}
}
int sumval=; //所有点的总价值
for(int i=;i<=n;i++){
scanf("%d",&val[i]);
sumval+=val[i];
} floyed();
int sumvol=; //0到所有可达点的最短距离之和,作为01背包的容量
for(int i=;i<=n;i++){
if(mpa[][i]!=INF)sumvol+=mpa[][i];
vol[i]=mpa[][i]; //把这段距离看成物品的体积
} memset(dp,,sizeof(dp));
for(int i=;i<=n;i++){
for(int j=sumvol;j>=vol[i];j--){
dp[j]=max(dp[j],dp[j-vol[i]]+val[i]); //dp[j]表示在总距离为j的情况下所能得到的最大价值
}
}
int ans=-INF;
for(int i=;i<=sumvol;i++){
if(dp[i]>(sumval/)){ //当dp[i]的值大于sum/2时,此时的i就是符合条件的最短距离
ans=i;
break;
}
}
if(ans==-INF)printf("impossible\n");
else printf("%d\n",ans);
}
return ;
}

2018-09-04

HDU3339 In Action 【最短路】+【01背包】的更多相关文章

  1. HDU-3339 IN ACTION(Dijkstra &plus;01背包)

      Since 1945, when the first nuclear bomb was exploded by the Manhattan Project team in the US, the ...

  2. HDU 3339 In Action 最短路&plus;01背包

    题目链接: 题目 In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  3. hdu3339In Action&lpar;最短路&plus;01背包)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/H Description Since 1945, whe ...

  4. HDU 3339 In Action【最短路&plus;01背包】

    题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3339] In Action Time Limit: 2000/1000 MS (Java/Other ...

  5. HDU 3339 In Action【最短路&plus;01背包模板&sol;主要是建模看谁是容量、价值】

     Since 1945, when the first nuclear bomb was exploded by the Manhattan Project team in the US, the n ...

  6. &ast;HDU3339 最短路&plus;01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. In Action(最短路&plus;01背包)

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  8. HDU 3339 最短路&plus;01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. hdoj--3339--In Action(最短路&plus;01背包)

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  10. hdu 3339 In Action &lpar;最短路径&plus;01背包&rpar;

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. 小白Linux入门 一

    1 win7电脑上安装虚拟机,准备文件 vmware 12 http://www.orsoon.com/Soft/89658.html ubuntu 16.04  http://cn.ubuntu.c ...

  2. Java程序设计之合租房synchronized&lpar;二&rpar;

    一号和二号合租一间房,里面共用一个卫生间对象,这是要用到synchronized关键字,一号与二号同时使用卫生间时,一个需要wait()等待被唤醒,另外一个使用完之后卫生间对象被释放,这时候刚刚使用的 ...

  3. sharepoint2013- Office web app server2013详细的安装和部署

    前提条件 Office web app server2013不能跟sharepoint server2013安装在同一台服务器上,如果安装在同一台服务器上将提示如下错误: 后来查询资料:  按照官方文 ...

  4. c&plus;&plus;primerplus&lpar;第六版&rpar;编程题——第5章(循环和关系表达式)

    声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...

  5. JSP入门 taglib

    自定义标签库(taglib),将原本需要写在jsp中的java代码封装起来,成为可复用的组件. taglib的写法和jsp动作(action)很相似,是由taglib前缀,冒号,标签名三者的组合体.其 ...

  6. Ubuntu系统下的实用软件推荐

    想要在ubuntu下工作? 又担心影响效率? 这些软件可以帮助你解决问题 ! 基本在windows上可以做到的功能, 在linux中也同样能够实现,而且自己寻找解决方案的过程才是最有趣的! 1.gua ...

  7. 经典中的品味:第二章 C&plus;&plus;基本的对象&comma;类型和值(上)

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 自律,是以积极而主动的态度,去解决人生的痛苦~ 上一章,我们大谈了Hel ...

  8. linux内核期中总结

    20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  ...

  9. PAT甲题题解-1056&period; Mice and Rice &lpar;25&rpar;-模拟题

    有n个老鼠,第一行给出n个老鼠的重量,第二行给出他们的顺序.1.每一轮分成若干组,每组m个老鼠,不能整除的多余的作为最后一组.2.每组重量最大的进入下一轮.让你给出每只老鼠最后的排名.很简单,用两个数 ...

  10. 33&period; Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距

    33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距 ① When young women were found to ma ...