爆搜解hdu1572下沙小面的(2)

#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int cnt,ans,n,a[7],vis[1010],g[1010][1010];
void in()
{
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			cin>>g[i][j];
	cin>>n;
	cnt=0;
	memset(vis,0,sizeof(vis));
	while(n--)
	{
		cin>>a[cnt];
		if(!vis[a[cnt]])
		{
			vis[a[cnt]]=1;
			cnt++;
		}
	}
	ans=10000;
	memset(vis,0,sizeof(vis));
}
void dfs(int s,int w,int step)
{
	if(step==cnt)
	{
		ans=min(ans,w);
		return;
	}
	for(int i=0;i<cnt;i++)
	{
		if(!vis[a[i]])
		{
			vis[a[i]]=1;
			dfs(a[i],w+g[s][a[i]],step+1);
			vis[a[i]]=0;
		}
	}
}
int main()
{
	while(cin>>n&&n!=0)
	{
		in();
		dfs(0,0,0);
		cout<<ans<<endl;
	}
}

爆搜解hdu1572下沙小面的(2),布布扣,bubuko.com

时间: 2024-10-12 03:31:00

爆搜解hdu1572下沙小面的(2)的相关文章

下沙小面的(2)

Description 前文再续,书接上一题.话说当上小面的司机的Lele在施行他的那一套拉客法则以后,由于走的路线太长,油费又贵,不久便亏本了.(真可怜-)于是他又想了一个拉客的办法. 对于每一次拉客活动,他一次性把乘客都拉上车(当然也不会超过7个,因为位置只有7个).然后,Lele计算出一条路线(出于某些目的,Lele只把车上乘客的目的地作为这条路线上的站点),把所有乘客都送到目的地(在这路线上不拉上其他乘客),并且使总路线长度最短. 不过Lele每次都要花很多时间来想路线,你能写个程序帮他

HDU1572-下沙小面的(2)-最短路(深搜)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1572 好吧,没想到这题用深搜可以搞定.还以为又是一道套dijkstra算法的模板题. #include<iostream> #include<string> #include<cstdio> #include<cstring> #include<map> #include<queue> #include<cmath> #inc

防爆搜索解决方案hdu1572下沙面(2)

#include<iostream> #include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; in

8/2 multi4 E找规律+模拟,空间开小了然后一直WA。。。J爆搜check不严谨WA。。。multi3 G凸包判共线写错数组名???样例太好过.想哭jpg。

multi4 Problem E. Matrix from Arrays 题意:构造一个数组,求子矩阵前缀和. 思路:打表找规律,"发现"L为奇数时循环节为L,为偶数时循环节为2L,求相应循环节的二维前缀和然后加加减减计算一下就好. 虚伪地证明一下循环节:L为奇数时对于第x行/列开始的位置有(x  +  x+L-1)*L/2   ->     (2x+L-1)/2(为整数)*L,因此扫过L行/列也就扫过了L整数倍"(2x+L-1)/2"倍的A[0]~A[L],

小木棍 爆搜剪枝

小木棍 爆搜剪枝 看了题解,用一个桶记录小木棍(很是机智,反正\(N\le50\)),然后就是爆搜剪枝了. 主要是注意一个优化思想:每次拼一个木棍时,一定先用大的去填再用小的去补. 递减遍历桶和下面这个最重要的剪枝都是这个优化思想 if(sum+i==per||sum==0) break; 连用大刚好填满这种最优方法都无法拼出,那更不用说先用小的去拼这种方法了. #include <cstdio> #include <cstdlib> #define MAX(A,B) ((A)&g

有一种恐怖,叫大爆搜

到目前这个阶段,大爆搜做了好几个,有必要做一下小的总结了. 玛雅游戏:出门左转 http://www.cnblogs.com/Loser-of-Life/p/7247413.html的A 斗地主:出门右转http://www.cnblogs.com/Loser-of-Life/p/7259858.html的B 天鹅会面:出门直行http://www.cnblogs.com/Loser-of-Life/p/7295770.html的A 引水入城:链接:http://cogs.pro/cogs/pr

hdu 1267 下沙的沙子有几粒? (递推)

下沙的沙子有几粒? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2584    Accepted Submission(s): 1346 Problem Description 2005年11月份,我们学校参加了ACM/ICPC 亚洲赛区成都站的比赛,在这里,我们获得了历史性的突破,尽管只是一枚铜牌,但获奖那一刻的激动,也许将永远铭刻

hdu5355 思维+爆搜

pid=5355">http://acm.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are?m?soda and today is their birthday. The?1-st soda has prepared?n?cakes with size?1,2,-,n. Now?1-st soda wants to divide the cakes into?m?parts so that the total

详解大端模式和小端模式

详解大端模式和小端模式 原文地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 一.大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的<格利佛游记>:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战.战争的原因:大家都知道,吃鸡蛋的时候,原始 的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,