Circling Round Treasures(codeforces 375c)
2024-10-21 13:20:39
题意:要求在一张网格图上走出一条闭合路径,不得将炸弹包围进去,使围出的总价值减去路径长度最大。
/*
类似于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 ;
}
最新文章
- 北京培训记day3
- Jenkins中构建Testcomplete项目的方法介绍
- UVa 488 - Triangle Wave
- eclipse下安装插件
- svn 分支
- Netsharp快速入门(之11) 销售管理(开发销售订单工作区)
- JsTree异步加载数据实现多级菜单
- lsjORM ----让开发变得更加快捷(二)
- 二叉查找树:Python实现
- iphone/ipad前端开发技巧
- 使用Jfree实现吧条形图,java代码
- Codeforces Round #254 (Div. 2):A. DZY Loves Chessboard
- 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
- eclipse导入项目之后有感叹号
- tcp/ip协议详解
- Tensorflow一些常用基本概念与函数
- 用spring tool suite插件创建spring boot项目时报An internal error occurred during: ";Building UI model";. com/google/common/
- HappyJTAG2 - JTAG AND SPI AVR8 interface EMBEDDED JTAG ! EMBEDDED SPI !
- java导出Excel 好文收藏
- Install Papirus Icon Theme on Ubuntu
热门文章
- JS内置对象练习(慕课网题目)
- http://blog.chinaunix.net/uid-9845710-id-1996675.html snmpd配置
- 洛谷 P1454 圣诞夜的极光 == codevs 1293 送给圣诞夜的极光
- 数据库连接池proxool的两种使用方式
- SQLite – 删除表
- DFS、BFS和Backtracking模板
- 总结vue2.0 配置的实例方法
- Mathematics-基础:1+2+3+……+n
- 区间DP || HDU 6249 Alice’s Stamps
- Hibernate-02 HQL实用技术