首页 > 其他分享 >Guarding the Farm S(BFS+map,新奇思路)

Guarding the Farm S(BFS+map,新奇思路)

时间:2024-08-02 22:56:41浏览次数:19  
标签:fir map typedef Farm long st BFS int mp

题目:


P2919 [USACO08NOV] Guarding the Farm S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:找到数组中最大的值用map存下来,顺便存一下坐标,然后遍历BFS

#include<bits/stdc++.h>
using namespace std;

#define fir first
#define sec second
#define endl "\n"   

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
const int N = 710, M = N * 2, mod = 1e9 + 7, inf = 0x3f3f3f3f, P = 131;
int g[N][N];
bool st[N][N];
int n,m,ans;
int dx[8]={0,0,1,1,1,-1,-1,-1};
int dy[8]={1,-1,1,0,-1,1,0,-1};
void bfs(int x,int y){
    queue<pii>q;
    q.push({x,y});
    st[x][y]=1;
    while(!q.empty()){
        pii tp=q.front();
        q.pop();
        for(int i=0;i<8;i++){
            int x1=tp.fir+dx[i],y1=tp.sec+dy[i];
            if(x1<1||x1>n||y1<1||y1>m) continue;
            if(st[x1][y1]) continue;
            if(g[x1][y1]<=g[tp.fir][tp.sec]){
                st[x1][y1]=1;
                q.push({x1,y1});
            }
        }
    }
}
void solve()
{
    cin >> n >> m;
    map<int,vector<pii>>mp;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> g[i][j];
            mp[-g[i][j]].push_back({i,j});//找最大值存坐标
        }
    }
    for(auto v:mp){
        for(auto t:mp[v.fir]){//取出坐标
            int i=t.fir,j=t.sec;
            if(!st[i][j]){
                    ans++;
                    bfs(i,j);//BFS把山丘标记
            }
        }
    }
    cout<<ans;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t = 1;
    //cin >> t;
    while(t --)
        solve();

    return 0;
}

标签:fir,map,typedef,Farm,long,st,BFS,int,mp
From: https://blog.csdn.net/2301_81058663/article/details/140881952

相关文章

  • Java HashMap 源码解读笔记(二)--xunznux
    文章目录HashMapputVal插入新值方法方法解读1.7和1.8有哪些区别resize重新哈希方法treeifyBin树化方法treeify树化方法untreeify链化方法HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部......
  • Java HashMap 源码解读笔记(一)--xunznux
    文章目录HashMap介绍实现说明:源码解读静态常量和内部节点类Node静态工具方法属性字段Fields未完待续。。。HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部分源码进行注释。这一篇文章主要......
  • nmap 基本操作
    网络扫描神器:Nmap保姆级教程(附链接)_虚拟机怎么安装nmap-CSDN博客NMAP参数_nmap--excludefile-CSDN博客kali就用微软的WSL2版本,在微软商店里安装,然后在终端/Terminal的下拉列表打开就可以了我一般使用,就是看一个网段那个ip被占用以及某个ip有哪些端口开启了#只扫描存活主机......
  • 下一代云电脑技术来临,为什么PC Farm才是未来,以ToDesk为例
    近年来飞速发展的云电脑技术,正在挤压传统电脑的生存空间。由于用户对电脑计算能力的要求日益增高,而传统电脑往往会受限于硬件性能无法更新,更换花费较高等因素,难以满足用户对高性能电脑的期待。与此同时,下一代的云电脑技术中PCFarm模式,以其卓越的性能、灵活性和成本效益进入用户......
  • HashMap是如何解决哈希冲突的?
    1.要了解Hash冲突,首先要先了解Hash算法和Hash表(1)Hash算法,就是把任意长度的输入,通过散列算法,变成固定长度的输出,这个输出结果是散列值.(2)Hash表又叫做“散列表”,它是通过key直接访问在内存存储位置的数据结构,在具体实现上,我们通过hash函数把key映射到表中的某......
  • 二叉搜索树,Map,Set,LeetCode刷题
    二叉搜索树,Map,Set1.二叉搜索树2.二叉搜索树的模拟实现1.1插入操作1.2查找操作1.3删除操作3.二叉搜索树时间复杂度分析4.TreeMap和TreeSet5.Map5.1Map的常用方法5.2Map.Entry<K,V>6.Set6.1Set的常用方法LeetCode刷题1.二叉搜索树与双向链表1.二叉搜......
  • New-SmbMapping命令在PowerShell中用于创建新的SMB映射,其主要参数如下:
    New-SmbMapping命令在PowerShell中用于创建新的SMB映射,其主要参数如下:RemotePath:指定远程共享的路径。可以是网络共享的UNC路径,如\\server\share。LocalPath:指定本地计算机上的映射路径,通常是一个驱动器号或者文件夹路径。例如,Z:或C:\Share。Credential:用于连接远程共......
  • mapbox 结合deckgl添加3DTiles等操作
    1.初始化import{MapboxOverlay}from"@deck.gl/mapbox";import{LineLayer,GeoJsonLayer}from"@deck.gl/layers"; import{TripsLayer,Tile3DLayer}from"@deck.gl/geo-layers"; import{Tiles3DLoader}from"@loade......
  • HashMap
    HashMap0.题目地址设计哈希映射1.链地址法classMyHashMap{classNode{privateintkey;privateintvalue;publicNode(intkey,intvalue){this.key=key;this.value=value;}}private......
  • ObjectMapper 工具类
    问:ObjectMapper工具类答:ObjectMapper是Jackson库中的一个核心类,它提供了丰富的功能来在Java对象和JSON数据之间进行转换。Jackson是一个流行的Java库,用于处理JSON数据。ObjectMapper是一个非常灵活的类,它支持多种数据格式化和反序列化选项,并且可以轻松地集成到任何......