HDU 1044
http://acm.hdu.edu.cn/showproblem.php?pid=1044
代码题,没什么好说的,先预处理出两点间距离,然后dfs搜一下找最大值
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int INF=0xfffffff;
int n,m,L,M,ans,sum;
int dis[][];
char mp[][]; struct node{
int x,y,step,v;
}kk[]; int dx[]={,-,,};
int dy[]={,,,-};
int vis[][]; int bfs(node s,node t){
memset(vis,,sizeof(vis));
queue <node> q;
s.step=;
q.push(s);
vis[s.x][s.y]=;
while(!q.empty()){
node u=q.front();
if(u.x==t.x && u.y==t.y)
return u.step;
q.pop();
for(int i=;i<;i++){
int xx=u.x+dx[i];
int yy=u.y+dy[i];
if(xx< || xx>=n || yy< || yy>=m)continue;
if(mp[xx][yy]=='*')continue;
if(!vis[xx][yy]){
vis[xx][yy]=;
node next=u;
next.step++;next.x=xx;next.y=yy;
if(next.step<=L)q.push(next);
}
}
}
return INF;
} int VIS[]; void dfs(int now,int t,int v){
if(ans==sum)return;
if(t>L)return;
if(now==M+){
ans=max(ans,v);
return;
}
for(int i=;i<=M+;i++){
if(VIS[i])continue;
VIS[i]=;
dfs(i,t+dis[now][i],v+kk[i].v);
VIS[i]=;
}
} int V[]; int main(){
int T;
scanf("%d",&T);
int first=;
for(int cas=;cas<=T;cas++){
scanf("%d%d%d%d",&m,&n,&L,&M);
sum=ans=;
for(int i=;i<=M;i++){
scanf("%d",&V[i]);
sum+=V[i];
}
for(int i=;i<n;i++)
scanf("%s",mp[i]);
for(int i=;i<n;i++){
for(int j=;j<m;j++){
if(mp[i][j]=='@'){
kk[].x=i;kk[].y=j;kk[].v=;
}
else if(mp[i][j]=='<'){
kk[M+].x=i;kk[M+].y=j;kk[M+].v=;
}
else if(mp[i][j]>='A' && mp[i][j]<='J'){
kk[mp[i][j]-'A'+].x=i;kk[mp[i][j]-'A'+].y=j;kk[mp[i][j]-'A'+].v=V[mp[i][j]-'A'+];
}
}
}
memset(dis,-,sizeof(dis));
for(int i=;i<=M+;i++){
for(int j=;j<=M+;j++){
if(i==j)dis[i][j]=;
else{
if(dis[i][j]==-){
dis[i][j]=bfs(kk[i],kk[j]);
dis[j][i]=dis[i][j];
}
}
}
}
memset(VIS,,sizeof(VIS));
VIS[]=;
dfs(,,);
if(first)first=;
else putchar('\n');
printf("Case %d:\n",cas);
if(dis[][M+]==INF)puts("Impossible");
else printf("The best score is %d.\n",ans);
}
return ;
}
HDU 1044的更多相关文章
- HDU 1044 Collect More Jewels(BFS+DFS)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu.1044.Collect More Jewels(bfs + 状态压缩)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1044(bfs+状压)
非常经典的一类题型 没有多个出口.这里题目没有说清楚 Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- hdu 1044 Collect More Jewels(bfs+状态压缩)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 1044 BFS
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1044(bfs+dfs+剪枝)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1044 Collect More Jewels
题意: 一个n*m的迷宫,在t时刻后就会坍塌,问:在逃出来的前提下,能带出来多少价值的宝藏. 其中: ’*‘:代表墙壁: '.':代表道路: '@':代表起始位置: '<':代表出口: 'A'~ ...
- hdu 1044 BFS(压缩图)+DFS
题意: 给你起点,终点,图上有墙有路还有宝物,问你在规定时间内能否能到终点,如果能问最多能捡到多少宝物. 思路: 看完这个题目果断 BFS+三维的mark ...
- HDU Collect More Jewels 1044
BFS + 状态压缩 险过 这个并不是最好的算法 但是写起来比较简单 , 可以AC,但是耗时比较多 下面是代码 就不多说了 #include <cstdio> #include <c ...
随机推荐
- Spring Web Flow 简介
Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...
- Javascript 严格模式详解(转)
一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...
- easyui datagrid 学习
一.清空datagrid所有数据 //得到所有数据行 var item = $('#ylProductListDataGrid').datagrid('getRows'); if (item) { / ...
- word2013设置页面边框
如图:
- 40免费的 jQuery & CSS3 图片热点特效
jQuery CSS3 形象悬停效果可能是一个优秀的网站项目中添加的效果.这个特殊的收集是大约50个 jQuery CSS3 形象徘徊影响最近出版的.这些图像悬停效果可以作为一个有效的和创造性的方式添 ...
- 快速将excel数据保存到Oracle数据库中【转】
我们在工作中,也许会碰到以下情况,客户或者同事发来需要调查的数据,并不是dmp文件,而是excel文件,此时通常是一张表,少量几条记录.最近我恰好碰到了这种情况,所以做了些调查,不敢藏私,拿出来跟大家 ...
- 二模 (5) day2
第一题: 有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感. 因此决定想使得任意相邻的两人的身高差距最大值最小. 如果答案不唯一,输出字典序最小的排列,指的是身高的排列.N<=50 解题过程 ...
- RHEL 6.3安装(超级详细图解教程)[转载]
附:RHEL6.3下载地址 32位:http://rhel.ieesee.net/uingei/rhel-server-6.3-i386-dvd.iso 64位:http://rhel.iee ...
- nuget的小Tips
1.nuget常用命令 nuget spec -a bin\Debug\DllName.dll -f //根据dll生成.nuspec文件,这样会生成无用的默认标签,比如licenseUrl.tags ...
- poj 1797 Heavy Transportation(最短路径Dijkdtra)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 26968 Accepted: ...