Gym 101572E Emptying the Baltic(优先队列)

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗? 本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。 阅读详情

题意:n*m的地图, 每个格子有一个海拔高度, 海拔<0的地方有水, 现在在(x, y)最深处放一个抽水机, 问最多能抽多少水, 水只能从高处往低处流。(n, m <= 500)


思路:从(x,y)开始bfs,扩展到的点v[tu][tv] = max(v[tu][tv], v[u][v])。但是不能用普通的bfs。需要加优先队列。(点

击打开链接)因为水可以往八个方向流, 如果先出队列的不出最深的一个点的话, 原本能流过去的水可能就流不过去

了, 所以用优先队列, 保证先出队列的是当前已处理的最深的节点。


代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e3+5;
int v[maxn][maxn], n, m, x, y;
bool vis[maxn][maxn];
struct node
{
    int x, y;
    node() {}
    node(int xx, int yy):x(xx), y(yy) {}
    bool operator <(const node &a) const
    {
        return v[x][y] > v[a.x][a.y];
    }
};

void bfs()
{
    priority_queue<node> pq;
    pq.push(node(x, y));
    vis[x][y] = 1;
    while(!pq.empty())
    {
        node u = pq.top(); pq.pop();
        int next[8][2] = {0, 1, 0, -1, 1, 0, -1, 0, 1, 1, 1, -1, -1, 1, -1, -1};
        for(int i = 0; i < 8; i++)
        {
            int tx = u.x+next[i][0];
            int ty = u.y+next[i][1];
            if(tx >= 1 && tx <= n && ty >= 1 && ty <= m && !vis[tx][ty])
            {
                vis[tx][ty] = 1;
                v[tx][ty] = max(v[tx][ty], v[u.x][u.y]);
                pq.push(node(tx, ty));
            }
        }
    }
}

int main(void)
{
    while(cin >> n >> m)
    {
        memset(vis, 0, sizeof(vis));
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
                scanf("%d", &v[i][j]);
        x, y;
        scanf("%d%d", &x, &y);
        bfs();
        ll ans = 0;
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
                if(v[i][j] < 0)
                    ans += -v[i][j];
        printf("%lld\n", ans);
    }
    return 0;
}


LangGraph 实战教程:搭建一个智能办公多Agent协作平台 只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。 阅读详情

相关推荐

物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等

1.前言 最近对物联网产品自组网技术选型,找到合适的组网技术,让产品自行组网并完成数据的传输。 2.参数对比

谁念西风独自凉 4万+

E - Emptying the Baltic Kattis - emptyingbaltic (dijkstra堆优化)

题目链接: E - Emptying the Baltic Kattis - emptyingbaltic 题目大意:n*m的地图, 每个格子有一个海拔高度, 当海拔<0的时候有水。 现在在(x, y)最深处放一个抽水机, 问最多能抽多少水,周围8个方向的水会流过来。 具体思路:对于每一个海拔小于0的点,判断这个点周围有水的最低高度。然后将这些高度加起来就可以了。 A...

diaomeijiao3430的博客 248

Qt 6.5实战:用QMediaPlayer搞定RTSP监控流播放(附LAV Filters解码器避坑指南)

本文详细介绍了如何在Qt 6.5中使用QMediaPlayer实现低延迟RTSP监控流播放,并提供了LAV Filters解码器的配置避坑指南。通过优化缓冲策略和硬件加速设置,显著提升视频流的播放性能和稳定性,适用于工业视觉检测和安防监控等实时场景。

weixin_33712987的博客 401

Emptying the Baltic(类似最短路?)

题目:https://odzkskevi.qnssl.com/da9adfb686ef541a14cec9856721130a?v=1507986802E从排水口(sx,sy)开始,压入优先队列,每次去队头元素,与八个方向上的流量比较,知道队列为空#include&lt;cstdio&gt; #include&lt;cmath&gt; #include&lt;cstring&gt; #includ...

yz467796454的博客 414

SceneSplat

目标:训练一个网络,输入高斯参数 → 输出与自然语言空间对齐的特征。考虑到标注语义的 3DGS 数据有限,作者设计了。策略,让模型在无标签场景上学到有用表征。都有一个与自然语言对齐的语义特征。这是整个方法的第一步,目标是让。

weixin_61091146的博客 1285

从ACTF2020看文件上传漏洞:你以为改后缀就完事了?这些坑我都帮你踩过了

本文通过ACTF2020的Upload题目深入剖析文件上传漏洞的复杂性和防御策略。文章揭示了常见误区,如仅修改文件后缀的局限性,并详细解析了绕过技巧和高级防御机制。从开发角度提供了构建安全上传功能的实用建议,帮助读者全面理解文件上传漏洞的本质与防护方法。

weixin_29278805的博客 247

【NCPC2017-2018-gym101572-E.Emptying the Baltic 】优先队列

Emptying the Baltic 题目链接: https://codeforces.com/gym/101572/problem/A Description Input Output Sample Input 3 3 -5 2 -5 -1 -2 -1 5 4 -5 2 2 Sample Output 10 题意 给你一个n*m的水池,每个格子都有一个相对于水平面的高度,如果为负数说明在...

lajiyuan的博客 336

VBOX 3iS实战:如何用GNSS+IMU搞定车辆动态坡度测量(附避坑指南)

本文详细介绍了VBOX 3iS在车辆动态坡度测量中的高阶应用,通过GNSS+IMU融合技术和卡尔曼滤波算法,有效解决了传统测量方法在动态环境中的局限性。文章提供了设备配置、实战策略和数据后处理的实用指南,帮助工程师提升测量精度和效率。

weixin_42520796的博客 321

Emptying the Baltic

题意:n*m的地图, 每个格子有一个海拔高度, 海拔 解题思路:一开始我用了类似spfa的思路,不过有数据点超时了,后来改为优先队列, 保证先出队列的是当前已处理的最深的节点 #include #include #include #include #include #include #include #include #include #include

wang_128的博客 627

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4619

最小二乘(MLS)求点云法向量

MLS算法的基本思想是通过在点云的局部邻域内拟合一个光滑曲面,如平面或多项式曲面,以此来重建和处理点云数据。对于法向量估计,MLS通常在每个点的邻域内拟合局部平面,然后从该平面的法向量作为点的法向量。

twnkie的博客 744

GYM - 101572E Emptying the Baltic

这题网上其实有很多种理解,但是最终的做法其实本质都是用了优先队列和bfs来完成。 参考: https://blog.youkuaiyun.com/yz467796454/article/details/78250172 这里用优先队列的原因是: 如果在抽水机的深度为4的情况下,有一个方格(深度是5)和抽水机并非直接相连,而是有一个格子阻隔,比如阻隔的格子有两个,一个是深度为5,一个是3,那么本来是可以...

fx714848657的博客 226

【大语言模型 14】Transformer权重初始化策略:从Xavier到GPT的参数初始化演进之路

权重初始化是深度学习训练成功的隐秘基石,特别是在Transformer这样的深层架构中,合适的初始化策略能够决定模型的训练稳定性和收敛速度。本文从经典的Xavier和He初始化出发,深入解析Transformer特有的初始化策略,通过数学推导、代码实现和实验分析,揭示不同初始化方法对大语言模型训练的深层影响。我们将探讨为什么GPT系列模型采用特定的初始化方案,以及如何针对不同层设计最优的初始化策略。

熵数实验室 1687

GYM - 101572E Emptying the Baltic 优先队列+BFS

题目链接: GYM - 101572 E题目大意n*m的地图, 每个格子有一个海拔高度, 海拔<0的地方有水, 现在在(x, y)最深处放一个抽水机, 问最多能抽多少水, 水只能从高出往低处流思路一开始我想到用普通队列BFS, 但是因为水可以往八个方向流, 如果先出队列的不出最深的一个点的话, 原本能流过去的水可能就流不过去了, 所以用优先队列, 保证先出队列的是当前已处理的最深的节点代码 Ac

litmxs的博客 653

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Gym - 101572E Emptying the Baltic 优先队列

Description 就是说给出一个n∗m的地形块,0表示海平面,负数表示地面在海水下,正数表示是陆地,且高出海平面。就是说给出一个n∗m的地形块,0表示海平面,负数表示地面在海水下,正数表示是陆地,且高出海平面。就是说给出一个n*m的地形块,0表示海平面,负数表示地面在海水下,正数表示是陆地,且高出海平面。 现在在(x,y)处放上一个排水的设备,问其能排出多少的水,对于一个位置,水能够从八...

Uniontake 261

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Gym 101572E Emptying Baltic【优先队列+BFS】

题目大意: 给出一个N*M的矩阵,然后在点(x,y)处设立一个抽水机,每个点有一个数代表海拔高度,负数就有水,水往低处流,问能够抽多少水。 思路: 直接Bfs一下即可,模拟拓展出去的过程。 Ac代码: #include #include #include using namespace std; int a[505][505]; int vis[5

mengxiang000000 657

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

海岛问题

这是腾讯在编程马拉松比赛中的一道题,挺有趣的,留下来可以时不时地思考,或许可以找到更好的算法。       开始步入正题吧:       小Q漂流到了一座海岛上。这座海岛可以看作是一个矩形,划分为N*M个小格子,每个格子用(x,y)来表示,对应的海拔高度为h(x,y)。此外,海水会随着时间涨潮落潮,从海拔高度0涨到H,再落潮,高度回落至0,如此反复。当某个点的海拔高度小于潮水时,会从陆地变成海

hu930528的专栏 945

华为笔试题2019年4月10日第三题(地图海拔路径数量)

# -*- coding: utf-8 -*- """ Created on Thu Apr 11 09:02:20 2019 @author: CommissarMa 华为笔试题2019年4月10日第三题 题目:一张N*M的地图上每个点的海拔高度不同;从当前点只能访问上、下、左、右四个点中还没有到达过的点, 且下一步选择的点的海拔高度必须高于当前点;求从地图中的点A到点B总的路径条数除以10...

CommissarMa的博客 1228

gym101234G(优先队列)

题意:给一堆数字,求第K大的组合(每一位数字不重复用) 最开始用的multiset,超时。提醒后想了优先队列,可惜一个数只能加一次这个问题并没有得到解决,后来看了大佬的代码,发现自己少想了一步,就是在优先队列当中加入这个数字本来在数组当中的位置。这样,对于每个当前数字,便有选与不选两种情况,first代表组合大小,second代表当前处理到了第几个数字。用second来记录选到了哪个数字。 #...

雪霜贸贸,荠麦之茂 469

爬山

Problem DescriptionLeiQ最近参加了一个登山俱乐部,部长给他了一个n*m地图,地图上的每一个格子的值表示一个山的海拔高度,LeiQ现在在(x,y)表示在地图上的位置,他想要登上地图上最高的山,所以他想知道他爬上最高的山的山顶还需向上爬多少米。例如: x\y 1 2 3 1 100 130 150 2 200 300 100 3

qq_41530516的博客 3016

GYM - 101572G Galactic Collegiate Programming Contest 离散化 + 线段树或树状数组

题目链接: GYM - 101572题目大意一场比赛, 每个队伍的分数由(a, b)组成, a是做题数量, b是总罚时, 题量多的排名前, 相同题量罚时少靠前, 如果题量罚时都相同, 排名一样, 例如, (1, 1), (1, 1), (0, 0)三支队伍排名为1, 1, 2 现在有n支队伍, m个事件, 每个事件由(t, p)组成, 代表队伍t以罚时p做出了一题 让你输出每个事件后, 队伍1的

litmxs的博客 868

小结 腾讯马拉松

这两天做了两场的马拉松。。。 小有感触啊~ 题目有难又容易的,一般有一道比较难的,基本上只有几十人可以做出来的。。。 然后其他的就不难了,用心都可以出来,特别是第二场。。。 第一场。。不在状态,只出了一道题。。。还是一道特别水的,有点小伤心~ 第二场还好,出来三道,而且都是一次AC,虽然题目都不难,可是还是挺高兴的。。。   再说说题目,两场一共10道题,我知道的,就有3到DP。。。

yumao19921006的专栏 735

Gym 101572 D Distinctive Character [bfs+想法]

Gym 101572 D Distinctive Character [bfs+想法]

ACTerminate的博客 1076

腾讯马拉松之海岛小Q

小Q漂流到了一座海岛上。这座海岛可以看作是一个矩形,划分为N*M个小格子,每个格子用(x,y)来表示,对应的海拔高度为h(x,y)。此外,海水会随着时间涨潮落潮,从海拔高度0涨到H,再落潮,高度回落至0,如此反复。当某个点的海拔高度小于潮水时,会从陆地变成海洋(不考虑该点是否被其他陆地包围),反之也会由海洋变为陆地。 现在,小Q想要从海岛上的A地走到B地。走的时候只能从当前格子走到其相邻(上

qigan30125的专栏 910

Gym 101806T Touch The Sky 思维 优先队列

题目链接:http://codeforces.com/gym/101806/problem/T   题意:         你现在在海拔为0的地方,你现在手上有n个气球,每个气球有一个最高可吹海拔L(即如果你当前所在超过了这个高度,你就不能再吹这个气球),和一个吹完之后升高的高度D,每个气球只可被用一次,问你最多可以用几个气球。   做法:        比赛的时候想到了这个思路,但是...

人生如戏 335

腾讯,贪吃的小Q

题目描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力 思路 需要注意的是,每天吃的巧克力的数目不少于前一天吃的一半,但是每天吃的巧克力的数目&gt;=1,因此可以算得第一天吃巧克力个数最多为m - (n - 1)。 如果从这个值开始遍历恐怕会超时,因此采用二...

fanc的博客 358
上一篇: HDU 4407 Sum(容斥)
下一篇: HTTP请求头各字段解释
cillyb
博客等级 码龄11年 225粉丝 497原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值