hdu 4284 floyd+暴搜
注意到H (H <= 15) 所以 可以 选择 状压+dp
但是 直接用搜索也可以过。经典的TSP问题。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int Map[150][150];
const int INF=1<<29;struct node
{int v;int get,pay;
}s[20];
int n,m,money;
int vis[150];
int h;void floyd()
{int i,j,k;for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i==j||i==k||j==k) continue;Map[i][j]=min(Map[i][j],Map[i][k]+Map[k][j]);}
}int dfs(int u,int leave,int number)
{int i;if(number==h){if(leave>=Map[u][1]) return 1;return 0;}for(i=0;i<h;i++){if(vis[s[i].v]==0){if(Map[u][s[i].v]<INF&&leave>=Map[u][s[i].v]+s[i].pay){vis[s[i].v]=1;if(dfs(s[i].v,leave-Map[u][s[i].v]-s[i].pay+s[i].get,number+1)) return 1;vis[s[i].v]=0;}}}return 0;
}int main()
{int t,i,j;scanf("%d",&t);while(t--){memset(vis,0,sizeof(vis));scanf("%d%d%d",&n,&m,&money);//memset(Map,0,sizeof(Map));for(i=1;i<=n;i++){for(j=1;j<=n;j++)Map[i][j]=INF;Map[i][i]=0;}for(i=0;i<m;i++) {int a,b,c;scanf("%d%d%d",&a,&b,&c);Map[b][a]=min(Map[b][a],c);Map[a][b]=Map[b][a];}scanf("%d",&h);int total=0;for(i=0;i<h;i++){scanf("%d%d%d",&s[i].v,&s[i].get,&s[i].pay);}floyd();if(dfs(1,money,total)) printf("YES\n");else printf("NO\n");}
}
hdu 4284 floyd+暴搜相关推荐
- HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)
题目链接:点击查看 题目大意:规定宽度为4,给定长度为n,求用1*2和2*1的瓷砖,将其完全铺满能有多少种方法. 分析:自从学会了矩阵快速幂之后,看到1e18的数据量都会下意识的往递推上面想,但是以前 ...
- hdu4848 DFS 暴搜+ 强剪枝
题意: 给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路: ...
- PTA 家庭房产 (图论,暴搜)
PTA 家庭房产 (图论,暴搜) 题目详情: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N ...
- 紫书 习题7-14 UVa 307(暴搜+剪枝)
这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...
- 子矩阵(暴搜(全排列)+DP)
子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...
- hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)
题意: 给你两个数n,k问你是否怎在这样一个序列: (1)这个序列有k个正整数,且不重复. (2)这k个数的和是n. (3)其中有k-1个数的和是一个平方数. ...
- 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合
题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...
- PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历
文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...
- Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
文章目录 题目 题目链接 题目 题目重述:给定一个数n,求一个长度为2n-1的序列:1只出现一次,2~n之间每个数出现2次,并且 对于2 ~n之间的每个数i,两个i之间相差为i,比如n=3,[3,1, ...
最新文章
- 知识点033-利用expect和shell分发密钥之后用ansible统计哪些没有分发成功
- Java二进制位运算、移位运算、、
- 图像白化MATLAB代码实现
- Scala 方法参数列表是val 不可修改
- java setcontenttype_response.setContentType()在Java过滤器中重置
- linux内核测试,Linux内核测试的生命周期
- 【干货】和你谈谈数据分析报告
- [BZOJ3676][Apio2014]回文串
- apache2配置优化以及性能测试小结
- 第8-9讲 视觉里程计2
- mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询
- 20届校招-携程笔试题-表达式解析
- word树状分支图_带你看懂市政管道工程图
- STM32 SPI 读取12位RM08 SSI 编码器信号
- 主机不可达和端口不可达
- 摄影测量(一):概述
- 当我按下电源按钮的瞬间,电脑都干了些什么
- Vue+Springboot项目练手(主要是后端)
- 电脑如何截长图?如何用电脑截取长图——规划全景
- Hexo自动部署到阿里云(Ubantu16.04)【超详细踩坑记录】
热门文章
- Java多线程知识小抄集(三)
- 音视频技术开发周刊 | 206
- FLV文件中VideoPacket的详解
- 存储类型auto,static,extern,register的区别
- windows平台python安装SciPy
- android jni通过cmake使用第三方静态库和动态库
- df -h 显示100%的解决办法
- Spark没有读取HDFS文件的方法?那textFile是怎么读的?
- 为什么MySQL索引要使用 B+树,而不是其它树形结构?
- leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)