题意:要求在一张网格图上走出一条闭合路径,不得将炸弹包围进去,使围出的总价值减去路径长度最大。

/*
类似于poj3182的做法,只不过出现了多个点,那么就用状态压缩的方法记录一个集合即可。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
char map[][],ch[];
int n,m,sx,sy,tx,ty,nx,ny,gx[],gy[],val[],w[],dp[][][],cnt=-,ans;
int dx[]={-,,,};
int dy[]={,,-,};
struct node{int x,y,k;};
bool ok(int j){
if(nx==gx[j]&&ny<gy[j]){
if(nx>tx)return true;
}
else if(tx==gx[j]&&ty<gy[j]){
if(tx>nx)return true;
}
return false;
}
void bfs(){
memset(dp,-,sizeof(dp));
queue<node> q;
node u;u.x=sx;u.y=sy;u.k=;q.push(u);dp[sx][sy][]=;
while(!q.empty()){
u=q.front();q.pop();nx=u.x;ny=u.y;int nk=u.k,tk;
if(nx==sx&&ny==sy)ans=max(ans,w[nk]-dp[nx][ny][nk]);
for(int i=;i<;i++){
tx=nx+dx[i];ty=ny+dy[i];tk=nk;
if(tx<||tx>n||ty<||ty>m||(map[tx][ty]!='.'&&map[tx][ty]!='S'))continue;
for(int j=;j<=cnt;j++)
if(ok(j))tk^=(<<j);
if(dp[tx][ty][tk]==-){
dp[tx][ty][tk]=dp[nx][ny][nk]+;
node v;v.x=tx;v.y=ty;v.k=tk;q.push(v);
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%s",ch);
for(int j=;j<=m;j++){
map[i][j]=ch[j-];
if(map[i][j]=='S')sx=i,sy=j;
if(map[i][j]>=''&&map[i][j]<=''){
int t=map[i][j]-'';++cnt;
gx[t]=i;gy[t]=j;
}
}
}
for(int i=;i<=cnt;i++)scanf("%d",&val[i]);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(map[i][j]=='B'){
++cnt;gx[cnt]=i;gy[cnt]=j;val[cnt]=-;
}
for(int i=;i<(<<cnt+);i++)
for(int j=;j<=cnt;j++)
if(i&(<<j))w[i]+=val[j];
bfs();
printf("%d",ans);
return ;
}

最新文章

  1. 北京培训记day3
  2. Jenkins中构建Testcomplete项目的方法介绍
  3. UVa 488 - Triangle Wave
  4. eclipse下安装插件
  5. svn 分支
  6. Netsharp快速入门(之11) 销售管理(开发销售订单工作区)
  7. JsTree异步加载数据实现多级菜单
  8. lsjORM ----让开发变得更加快捷(二)
  9. 二叉查找树:Python实现
  10. iphone/ipad前端开发技巧
  11. 使用Jfree实现吧条形图,java代码
  12. Codeforces Round #254 (Div. 2):A. DZY Loves Chessboard
  13. 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
  14. eclipse导入项目之后有感叹号
  15. tcp/ip协议详解
  16. Tensorflow一些常用基本概念与函数
  17. 用spring tool suite插件创建spring boot项目时报An internal error occurred during: &quot;Building UI model&quot;. com/google/common/
  18. HappyJTAG2 - JTAG AND SPI AVR8 interface EMBEDDED JTAG ! EMBEDDED SPI !
  19. java导出Excel 好文收藏
  20. Install Papirus Icon Theme on Ubuntu

热门文章

  1. JS内置对象练习(慕课网题目)
  2. http://blog.chinaunix.net/uid-9845710-id-1996675.html snmpd配置
  3. 洛谷 P1454 圣诞夜的极光 == codevs 1293 送给圣诞夜的极光
  4. 数据库连接池proxool的两种使用方式
  5. SQLite – 删除表
  6. DFS、BFS和Backtracking模板
  7. 总结vue2.0 配置的实例方法
  8. Mathematics-基础:1+2+3+……+n
  9. 区间DP || HDU 6249 Alice’s Stamps
  10. Hibernate-02 HQL实用技术