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 ...
随机推荐
- poi 读取 excel (.xls) 97-2003
1.sh.getLastRowNum() 比行数少1 private List<Map> getData(File file) throws Exception{ List<Map& ...
- Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库
C: Consistency 一致性 • A: Availability 可用性(指的是快速获取数据) • P: Tolerance of network Partition 分区容忍性(分布式) 1 ...
- protobuf 安装 及 小测试
参考:http://shift-alt-ctrl.iteye.com/blog/2210885 版本: 2.5.0 百度云盘上有jar包. mac 上安装: 新建:/Users/zj/software ...
- 部署步骤“回收 IIS 应用程序池”中出现错误: <nativehr>0x80070005</nativehr><nativestack></nativestack>拒绝访问。
解决方法:以sharepoint管理员身份进入主站点,修改站点的网站集管理员.
- java 面向对象编程 第20章 XML技术解析
1. XML:extended Markup Language 可扩展标记语言,利用标签和子标签方式描述数据. 2. 声明<?xml version=”1.0”?>版本号 注释< ...
- AudioManager音频管理器
AudioManager音频管理器提供了如下几种常用方法来控制手机音频: 1.adjustStreamVolume(int StreamType,int direction,int flgs):调整手 ...
- 10款优秀Vim插件帮你打造完美IDE
导读 如果你稍微写过一点代码,就能知道“集成开发环境”(IDE)是多么的便利.不管是Java.C还是Python,当IDE会帮你检查语法.后台编译,或者自动导入你需要的库时,写代码就变得容易许多.另外 ...
- 李明杰视频 SVN
李明杰视频 SVN 就10-12使用技术SVN 源代码会引发哪些问题? 无法后悔:做错一个操作 版本备份:费控件,费时间 版本混乱:因版本备份太多造成混乱 代码冲突:多人操作同一文件 强烈建议 使用源 ...
- Hello Struts2
Struts2 概述 Struts2 是一个用来开发 MVC 应用程序的框架. 它提供了 Web 应用程序开发过程中的一些常见问题的解决方案: 对来自用户的输入数据进行合法性验证; 统一的布局; 可扩 ...
- 根据IP定位获取城市代码
public String getCityID() throws IOException{ URL url = new URL("http://61.4.185.48:81/g/" ...