hdu 4571 floyd+动态规划
思路:
我们先求一遍floyd,将各点的最短距离求出,然后将点按si的升序排序。dp[i][k]表示第i个点在第j时间所获得的最大效益,那么
dp[i][k]=max(dp[ i ][ k ] , dp[ j ][ k-p[ i ].c-dis[ i ][ j ] ]+p[ i ].s); dis[i][j]为i与j的最短路径。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 1<<28
using namespace std;
struct Point{
int c,s,num;
int operator <(const Point &temp) const
{
return s<temp.s;
}
}p[];
int dp[][],dis[][],S,E,n,m,t;
void floyd()
{
int i,j,k;
for(k=;k<=n;k++)
for(i=;i<=n;i++)
for(j=;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
return ;
}
void init()
{
int i,j;
memset(dp,-,sizeof(dp));
for(i=;i<=;i++)
{
for(j=;j<=;j++)
dis[i][j]=inf;
dis[i][i]=;
}
}
int main()
{
//freopen("test.txt","r",stdin);
//freopen("ans.txt","w",stdout);
int w,i,j,Case=,a,b,v;
scanf("%d",&w);
while(w--)
{
init();
scanf("%d%d%d%d%d",&n,&m,&t,&S,&E);
S++;
E++;
for(i=;i<=n;i++)
scanf("%d",&p[i].c);
for(i=;i<=n;i++)
{
scanf("%d",&p[i].s);
p[i].num=i;
}
for(i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&v);
a++,b++;
dis[a][b]=dis[b][a]=min(dis[a][b],v);
}
floyd();
p[]=p[S];//将p[0]设为虚的起始点
sort(p+,p+n+);
for(i=;i<=n;i++)
{
for(j=p[i].c+dis[p[i].num][S];j<=t;j++)
dp[i][j]=p[i].s;
}
int k;
for(i=;i<=n;i++)
{
for(j=;j<i;j++)
{
if(p[i].s>p[j].s)
for(k=t;k>=p[i].c+dis[p[i].num][p[j].num]&&k>=;k--)
{
if(dp[j][k-p[i].c-dis[p[i].num][p[j].num]]!=-)
dp[i][k]=max(dp[i][k],dp[j][k-p[i].c-dis[p[i].num][p[j].num]]+p[i].s);
}
}
}
for(i=;i<=n;i++)
{
if(p[i].num==E)
break;
}
int ans=;
for(j=;j<=n;j++)
{
for(k=;k<=t;k++)
{
if(k+dis[p[j].num][E]>t)
break;
ans=max(ans,dp[j][k]);
}
}
printf("Case #%d:\n%d\n",++Case,ans);
}
return ;
}
hdu 4571 floyd+动态规划的更多相关文章
- UVa 104 - Arbitrage(Floyd动态规划)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- floyd+动态规划 hdu-4571-Travel in time
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4571 题目大意: 有n个景点,每个点都有个游玩时间ci,游玩后得到的满意度si.给一个起点s和终点e ...
- hdu 六度分离 floyd
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869 题意分析:比较简单的最短路算法,最后只需判断最远两点距离是否大于7即可. /*六度分离 Time ...
- 畅通工程续 -- HDU 1874 floyd
题目大意: 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. 思路: floyd算法模板题,这是一个牺牲空间换取时间的算法,本质是动态规划. AC代码: #include < ...
- hdu 1704 (Floyd 传递闭包)
Rank Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1596 floyd
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...
- [HDU 1114] Piggy-Bank (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 简单完全背包,不多说. #include <cstdio> #include < ...
- [HDU 2955]Robberies (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意是给你一个概率P,和N个银行 现在要去偷钱,在每个银行可以偷到m块钱,但是有p的概率被抓 问 ...
随机推荐
- 查看解决Oracle对象锁住的问题
在编译的一个存储过程的时候,对象可能由于被锁住而处于假的卡死状态,这个时候有的是因为,这个过程正在运行中,所以无法编译: 上次我遇到一次,我很清楚的确定这个过程没有运行,可以我就是无法编译,对象一直被 ...
- [iOS微博项目 - 2.0] - OAuth授权3步
A.概念 OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...
- C#学习笔记(二):继承、接口和抽象类
继承 密封类 密封类(关键字sealed)是不允许其它类继承的,类似Java中的final关键字. public sealed class SealedClassName { //... } 初始化顺 ...
- Selenium IDE 工具总结
基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具. Selenium的核心:browser bot,是用JavaScript编写的. Selenium工具有4种:Seleni ...
- .Net 揭密--JIT怎样运行你的代码
方法调用: 第一部分 (普通调用) 译者:我们都知道.NET托管代码如C#.VB.NET写成的代码,都是先被编译成中间语言(IL,Intermediate Language,在运行时,再由即时编译器( ...
- nexus建立maven仓库私服及Snapshots、release的版本管理
环境搭建 1.linux安装maven wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-mave ...
- VBA在Excel中的应用(一):改变符合条件单元格的背景颜色
在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理的方式简单快捷,但是当遇到大批量数据,就会特别的费时费力,而且不讨好(容易出错).通过 ...
- 梦断代码3-message center消息的集中分发
上一代产品模块有30多个,从底层硬件基础组件到上层应用控制.qos,各个模块通信据说都是直接向模块索要信息.最坏的死锁情况大概就是这样: 在产品升级后,加入了一个消息中心的模块,负责统一管理各个模块的 ...
- BOOL,int,float,指针变量与零值比较的if语句
1.注意这里说的是,与零值比较,而不是与零比较. 2.对于int类型,与零值比较就是: if(var == 0) //零值 3.对于bool类型,零值表示false,任何非零值表示true,因此使用: ...
- 在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono)转载+补充
错误:Network error: Connection refused 解决办法: 执行 $sudo apt-get install openssh-server 安装ssh协议 执行ifconfi ...