hdu 4284 状态压缩dp
题意: 有N 个点的无向图,要去其中 h个地点做事,做事需要先办理护照,之后可以挣一定数量的钱,知道了一开始有的总钱数,和 一些城市之间
道路的花费,问可不可以在 指定的 h 个城市打完工,并回到起点 1.
链接:点我
是个好题!!!
状态转移方程dp[s][i]=max(dp[s][i],dp[s'][j]-maps[j][i]-d[i]+c[i]);
dp[s][i]表示当在状态s的时候最后再i城市打工的最多剩余钱数。
2
4 5 10 //4个点,5个道路,10单位的钱
1 2 1
2 3 2
1 3 2
1 4 1
3 4 2
3 //3个必去的
1 8 5 //编号,消耗,赚的
2 5 2
3 10 1
2 1 100
1 2 10000
1
2 100000 1
YES
NO
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define INF 99999999
typedef long long LL;
using namespace std; const int MAX=(<<)+;
int n,m,val,h;
int s[],c[],d[];
int dp[MAX][],dist[][]; void Init(int num){
for(int i=;i<=num;++i){
for(int j=i+;j<=num;++j)dist[i][j]=dist[j][i]=INF;
}
} void floyd(){
for(int k=;k<=n;++k){
for(int i=;i<=n;++i){
for(int j=;j<=n;++j){
dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
}
}
}
} void DP(){
int bit=<<(h+);
memset(dp,-,sizeof dp);
dp[][]=val;
for(int i=;i<bit;++i){
for(int j=;j<=h;++j){
if(dp[i][j] == -)continue;
for(int k=;k<=h;++k){
if(dp[i][j]<dist[s[j]][s[k]]+d[k])continue;
int p=<<k,w=c[k]-d[k]; //可以去
if(i&p)continue; //已经去过
dp[i|p][k]=max(dp[i|p][k],dp[i][j]-dist[s[j]][s[k]]+w);
}
}
}
bool flag=false;
for(int i=;i<=h;++i)if(dp[bit-][i]-dist[s[i]][]>=)flag=true; //没返回过1
if(flag)printf("YES\n");
else printf("NO\n");
} int main(){
int t,u,v,w;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&val);
Init(n);
for(int i=;i<m;++i){
scanf("%d%d%d",&u,&v,&w);
dist[u][v]=dist[v][u]=min(dist[u][v],w);
}
scanf("%d",&h);
for(int i=;i<=h;++i){
scanf("%d%d%d",&s[i],&c[i],&d[i]);
}
floyd();
s[]=,c[]=d[]=;
DP();
}
return ;
}
hdu 4284 状态压缩dp的更多相关文章
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- HDU 3341 状态压缩DP+AC自动机
题目大意: 调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高 这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态 我最开始对于状态的保存是, ...
- hdu 2167 状态压缩dp
/* 状态转移方程:dp[i][j]=Max(dp[i][j],dp[i-1][k]+sum[i][j]); */ #include<stdio.h> #include<string ...
- HDU 4856 (状态压缩DP+TSP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4856 题目大意:有一个迷宫.迷宫里有些隧道,每个隧道有起点和终点,在隧道里不耗时.出隧道就耗时,你的 ...
- hdu 4284 状态压缩
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4284 #include<cstdio> #include<cstring> # ...
- HDU 4640 状态压缩DP 未写完
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 解题思路: 首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个 ...
- 2016"百度之星" - 初赛(Astar Round2A)1002 / HDU 5691 状态压缩DP
Sitting in Line Problem Description 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十 ...
- HDU 5067 (状态压缩DP+TSP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目大意:蓝翔挖掘机挖石子.把地图上所有石子都运回起点,问最少耗时. 解题思路: 首先得YY出 ...
- hdu 4539(状态压缩dp)
题意:曼哈顿距离是指:|x1-x2|+|y1-y2|,只要知道这个概念题意就懂了. 分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两 ...
随机推荐
- jQuery domready
在jQuery里面,我们可以看到两种写法: $(function(){ //todo }) $(document).ready(function(){ //todo }) 这两个方法的效果都是一样的, ...
- How to read source code[repost]
https://github.com/benjycui/benjycui.github.io/blob/master/posts/how-to-read-open-source-javascript- ...
- Xcode下 gdb 调试命令
Xcode的调试器为用户提供了一个GDB的图形化界面,GDB是GNU组织的开放源代码调试器.您可以在Xcode的图形界面里做任何事情:但是,如果您需要您可以在命令行里使用GDB的命令,且gdb可以在终 ...
- Go语言 6 结构体、方法和接口
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 结构体(struct)是由一系列具有相同类型或不同类 ...
- dlmalloc(一)【转】
转自:http://blog.csdn.net/ycnian/article/details/12971863 我们写过很多C程序了,经常会分配内存.记得刚学C语言时老师说过,可以向两个地方申请内存: ...
- 4.rabbitmq 路由
1. 生产者 #coding:utf8 import pika import json import sys severity = sys.argv[1] if len(sys.argv) > ...
- HDU 3001 Travelling(状态压缩DP+三进制)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题目大意:有n个城市,m条路,每条路都有一定的花费,可以从任意城市出发,每个城市不能经过两次以上 ...
- UVA 11624 Fire!(两次BFS+记录最小着火时间)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 转- 阿里云、Amazon、Google云数据库方案架构与技术分析
「一切都会运行在云端」. 云时代早已来临,本文着眼于顶级云服务商云服务商的云数据库方案背后的架构,以及笔者最近观察到的一些对于云数据库有意义的工业界的相关技术的进展,希望读者能有所收获. 现在越来越多 ...
- 【ios开发之疑难杂症】xcode运行出现SpringBoard 无法启动应用程序(错误:7)
问题:xcode运行出现SpringBoard 无法启动应用程序(错误:7) 解决方案: 重启模拟器