CodeForces
来源:互联网 发布:软件开发技术手册 编辑:程序博客网 时间:2024/06/03 19:01
CodeForces - 330D Biridian Forest
题意:MIkemon从S出发,要走到E,中途可能会遇到breeder,与breeder相遇时就要发生一场battle,一个格子可能有多个breeder,此时Mikemon就会与么以一个breeder发生一场battle,Mikemo提前设计好走出森林的路线,假设所有的breeder已经知道Mikemon走的路线,并且主动与Mikemon相遇并发生battle,在Mikemon每走一步的同时,breeder也走一步,求Mikemon与breeder发生的最小battle数
思路:如果Mikemon无论走那一条从S到E的路线,都会与某一个格子的breeder相遇,那么就说明这个格子的breeders会在Mikemon到达E之前或同时到达E点,所以我们从终点开始广搜,记录有breeder格子到终点的最短距离,如果距离比Mikemon到终点的距离不大说明可以相遇
#include<stdio.h>#include<queue>#include<string.h>using namespace std;int n,m;char a[1001][1001];int vis[1001][1001];int to[4][2]={{0,1},{1,0},{-1,0},{0,-1}};int sx,sy,ex,ey;int s[1001][1001];int Min;struct node{int x,y,dis;node(){}node(int tx,int ty,int td){x=tx;y=ty;dis=td;}};int BFS(){int ans=0;queue<node> q;q.push(node(ex,ey,0));while(!q.empty()){struct node t1;t1=q.front();q.pop();for(int i=0;i<=3;i++){int tx=t1.x+to[i][0];int ty=t1.y+to[i][1];int td=t1.dis+1;if(vis[tx][ty]||tx<0||ty<0||tx>=n||ty>=m||a[tx][ty]=='T'){continue;}s[tx][ty]=td;if(tx==sx&&ty==sy){Min=td;} vis[tx][ty]=1;q.push(node(tx,ty,td));}}} int main(void){memset(s,63,sizeof(s));scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%s",a[i]);for(int j=0;j<m;j++){if(a[i][j]=='E'){ex=i;ey=j;}if(a[i][j]=='S'){sx=i;sy=j;}}}int ans=0;BFS();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(a[i][j]>='1'&&a[i][j]<='9'&&s[i][j]<=Min){ans+=(a[i][j]-'0');}}}printf("%d\n",ans);return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 欢迎使用CSDN-markdown编辑器
- eclipse快捷键
- centos7.2下安装mysql5.7,使用rpm包安装
- TensorFlow 数据集和估算器介绍
- Redis在windows下安装过程
- CodeForces
- Android使用TextView图文混排
- 使用js将多个相关联的excel数据文件整合到一起并筛选出需要的数据的整理
- Java学习笔记(28)--覆写(Override)详解
- 观察者模式
- Docker安装Prometheus,Grafana展示数据
- leetcode 260. Single Number III 位操作
- Spring-装配Bean 基于注解
- android系统ROM分区