acwing 1106 山峰和山谷

简介: acwing 1106 山峰和山谷

活动 - AcWing

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
 
using namespace std ;
 
const int N = 1010 ;
int d[8][2]= {{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}} ;
int w[N][N] ;
int n , m ;
int ans , res  ;
int c[2] ;
struct node{
  int x , y ;
  node(int xx ,int yy){
    x = xx , y = yy ;
  } 
};
 
queue<node> q ;
int v[N][N] ;
void bfs(int a, int b){
  q.push(node(a,b)) ;
  v[a][b] = 1 ;
  while(!q.empty()){
    node now = q.front() ;
    q.pop() ;
    int x = now.x , y = now.y ;
    for(int i = 0 ; i < 8; i ++){
      int tx = x + d[i][0] , ty = y + d[i][1] ;
      if(tx<0||tx>=n||ty<0||ty>=n) continue ;
      
      if(w[tx][ty]>w[x][y]){
        c[0] = 1 ;
      }
      if(w[tx][ty]<w[x][y]){
        c[1] = 1 ; 
      }
      if(w[tx][ty] == w[x][y]&&!v[tx][ty]){
        v[tx][ty] = 1 ;
        q.push(node(tx,ty)) ;
      }
      
    }
  }
}
int main(){
  cin >> n  ; 
  for(int i = 0 ; i < n ; i ++){
    for(int j = 0 ; j < n ; j ++){
      cin >> w[i][j] ;
    }
  }
  for(int i = 0 ; i < n ;i ++){
    for(int j = 0 ; j < n; j ++){
      if(!v[i][j]){
        c[0]=0 , c[1] = 0 ;
        bfs(i,j);
        if(!c[0]) ans ++;
        if(!c[1]) res ++ ;
      }
    }
  }
  cout << ans << " " << res << endl  ;
}
目录
相关文章
|
Java
SpringBoot启动报错:org.apache.catalina.LifecycleException: Protocol handler start failed
SpringBoot启动报错:org.apache.catalina.LifecycleException: Protocol handler start failed
262 0
|
11月前
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
299 7
一套以用户体验出发的.NET8 Web开源框架
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
949 2
|
监控 NoSQL 测试技术
MongoDB性能最佳实践:如何制定更有效的基准测试?
感谢你与我们一起走过这段MongoDB性能最佳实践之旅,希望你能从中获取一些有用的信息。
MongoDB性能最佳实践:如何制定更有效的基准测试?
|
XML SQL Java
MyBatis 的延迟加载是如何实现的
MyBatis的延迟加载(懒加载)特性提高了性能,只在需要时加载关联数据。配置延迟加载需在`mybatis-config.xml`中设置`lazyLoadingEnabled`为`true`,`aggressiveLazyLoading`为`false`。实现原理基于代理对象,MyBatis为延迟加载属性创建代理,在访问时触发实际查询。代理通过Java动态代理实现,拦截方法调用,按需加载数据。
466 0
|
域名解析 JavaScript 网络协议
技术心得记录:如何使用google地图的api(整理)
技术心得记录:如何使用google地图的api(整理)
1313 0
|
前端开发 搜索推荐 Java
【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结
【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结
187 0
|
Kubernetes 安全 容器
Kubernetes的Init容器
Kubernetes的Init容器
145 0
|
Kubernetes 安全 API
debian11 安装 k8s,containerd ,阿里云镜像(已成功)
在准备 Kubernetes 集群环境中,确保每台机器至少有 2GB RAM,推荐 4GB,需连接网络。需3台机器,1台作为 Master,2台作为 Worker。安装 `sudo`,设置各节点主机名为 k8s-master、k8s-node1、k8s-node2,并更新 `/etc/hosts`。升级系统,接着安装并更新 containerd 至 v1.7,配置 `containerd` 并启用。
1344 0