poj 2907 Collecting Beepers 邮递员问题暴力解法

题意:

给起点和n个点,求从起点出发经过这n个点每个点至少一次再回到起点的最短路。

分析:

类似邮递员问题,直接用STL枚举访问顺序暴力解决。

代码:

//poj 2907
//sep9
#include <iostream>
#include <algorithm>
using namespace std;
int x[16],y[16];
int d[16][16];
int a[16];
int n;
int main()
{
	int cases;
	scanf("%d",&cases);
	while(cases--){
		scanf("%*d%*d%d%d",&x[0],&y[0]);
		int i,j,n;
		scanf("%d",&n);
		for(i=1;i<=n;++i)
			scanf("%d%d",&x[i],&y[i]);
		for(i=0;i<=n;++i)
			for(j=i;j<=n;++j)
				d[i][j]=d[j][i]=abs(x[i]-x[j])+abs(y[i]-y[j]);
		int ans=INT_MAX;
		for(i=0;i<=n;++i)
			a[i]=i;
		do{
			int sum=0;
			for(int i=1;i<=n;++i)
				sum+=d[a[i-1]][a[i]];
			sum+=d[a[n]][a[0]];
			ans=min(ans,sum);
		}while(next_permutation(a+1,a+1+n));
		printf("The shortest path has length %d\n",ans);
	}
	return 0;
} 
时间: 2024-10-13 10:07:58

poj 2907 Collecting Beepers 邮递员问题暴力解法的相关文章

POJ 2907 Collecting Beepers (DFS+回溯)

Description Karel is a robot who lives in a rectangular coordinate system where each place is designated by a set of integer coordinates (x and y). Your job is to design a program that will help Karel pick up a number of beepers that are placed in he

POJ 3080 Blue Jeans Trie后缀树解法

题目是牛仔裤的意思,不过看不出题意和Blue Jeans有什么关系. 本题的数据是很水的,数据量小,故此可以使用非常暴力的方法过,也可以使用不那么暴力的KMP过. 这里使用更加不暴力的Trie后缀树过,这种解法就一点都不水了,呵呵. 思路: 1 建立所有字符串的后缀Trie树 2 增加额外信息,看每过路径是否是所有的字符串都经过了,如果是,那么就是合法的字符串了,查找最长的这样的字符串 3 优化一下:如果不是所有字符串的经过的路径,那么就可以直接返回,不往下搜索了 最后,我发现删除Trie都是很

POJ 3670 Eating Together 二分单调队列解法O(nlgn)和O(n)算法

本题就是一题LIS(最长递增子序列)的问题.本题要求求最长递增子序列和最长递减子序列. dp的解法是O(n*n),这个应该大家都知道,不过本题应该超时了. 因为有O(nlgn)的解法. 但是由于本题的数据特殊性,故此本题可以利用这个特殊性加速到O(n)的解法,其中的底层思想是counting sort分段的思想.就是如果你不会counting sort的话,就很难想出这种优化的算法了. O(nlgn)的单调队列解法,利用二分加速是有代表性的,无数据特殊的时候也可以使用,故此这里先给出这个算法代码

poj 3368 Frequent values(线段树解法)

题目链接:http://poj.org/problem?id=3368 题目大意:给你一段不下降的序列,求给定区间里出现次数最多的那个数字的次数. 思路:首先看到这题时,第一感觉线段树,但是仔细一看问题来啦,用线段数我怎么才能计算出某段区间里出现的那个数,因为出现最多的那个数可能不是在他它的左儿子上也不是在它的右儿子上,可能在当他们合并成一个区间时就出现啦,但是这儿我们需要注意的就是,题目给的是一段不下降的序列,那么突破口就出来啦,因为如果出现相同的数字,那么它们一定是连续的.所以我们只需要在普

POJ训练计划1035_Spell checker(串处理/暴力)

3.算法综合实践--搜索引擎 上网搜索有关"搜索引擎"的相关资料,包括但不限于以下方面(至少要有2个方面):搜索引擎岗位要求.搜索引擎工作原理.搜索引 擎涉及到教材中哪些算法.搜索引擎的盈利模式.搜索引擎源码链接.国内外搜索引擎公司现状等. <1>搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统.因特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪洋上的一个个小岛,网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为用户绘制一幅一目了然的信息地图

poj Problem A. Score Sequence(暴力)

这道题,对于我这种英文不好的人来说,有点费劲啊. 题目的意思:给你两组成绩,你要找出他们之间最大的公共子序列,不能有重复,然后输出两组数据. 第一组就是:按照从大到小输出最大子序列. 第二组就是:按照个位数由小到大输出,若个位数一样大,则小的在前输出最大子序列. 解题思路基本上已经出来了,就是千万要注意就是在最长子序列匹配之前就就把重复的数字给删除. 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h

POJ训练计划3080_Blue Jeans(串处理/暴力)

Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11542   Accepted: 4962 Description The Genographic Project is a research partnership between IBM and The National Geographic Society that is analyzing DNA from hundreds of thousa

[ACM] poj 2096 Collecting Bugs (概率DP,期望)

Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 2026   Accepted: 971 Case Time Limit: 2000MS   Special Judge Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material st

【POJ】2318 TOYS(计算几何+暴力)

http://poj.org/problem?id=2318 第一次完全是$O(n^2)$的暴力为什么被卡了-QAQ(一定是常数太大了...) 后来排序了下点然后单调搞了搞..(然而还是可以随便造出让我的code变成$O(n^2)$的23333) #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include