前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bzoj3137 [Baltic2013]tracks 题解

bzoj3137 [Baltic2013]tracks 题解

作者头像
yzxoi
发布2022-09-19 11:57:31
2650
发布2022-09-19 11:57:31
举报
文章被收录于专栏:OI

bzoj3137 [Baltic2013]tracks 题解

Describe

给定一片长方形的草地,有2动物:兔子和狐狸。兔子走过草地会留下R,狐狸走过草地会留下F。每动物从左上角进入草地,从右下角走出草地。其间,它可以上下左右乱跳(可以重复),经过的格子会被覆盖上它的脚印。每次草地上最多只有一动物。

给你地图,问最少有多少动物走过了草地。

Solution

先将每一个边缘点加入queue,再每一次bfs选高度最小的点拓展,取最大,计算出每个点最高可达到的水量,最后一减即可。

Code

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
inline int read(){int res=0,f=1;char ch=getchar();while(ch<'0'ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') res=res*10+ch-'0',ch=getchar();return res*f;}
inline void write(int x){if(x<0) putchar('-'),x=-x;if(x<10) putchar(x+'0');else write(x/10),putchar(x%10+'0');}
int n,m,a[110][110],b[110][110],vis[110][110],ans;
struct node{int x,y,h;bool operator<(const node &t)const{return h>t.h;}};
priority_queue<node> q;
const int dx[]={0,0,1,-1},
          dy[]={1,-1,0,0};
inline void spfa(){
    while(!q.empty()){
        node u=q.top();q.pop();
        int x=u.x,y=u.y,h=u.h;
        for(int i=0;i<4;i++){
            int xx=x+dx[i],yy=y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m){
                if(vis[xx][yy]) continue ;
                a[xx][yy]=max(a[xx][yy],h);
                vis[xx][yy]=1,q.push((node){xx,yy,a[xx][yy]});
            }
        }
    }
}
int main(){
    n=read();m=read();
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) b[i][j]=a[i][j]=read();
    while(!q.empty()) q.pop();
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(i==1j==1i==nj==m) q.push((node){i,j,a[i][j]}),vis[i][j]=1;
    spfa();
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            ans+=a[i][j]-b[i][j];
    return write(ans),putchar('\n'),0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bzoj3137 [Baltic2013]tracks 题解
    • Describe
      • Solution
        • Code
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档