当前位置: 首页 > article >正文

力扣2503.矩阵查询可获得的最大分数

力扣2503.矩阵查询可获得的最大分数

  • 离线算法 + 排序 + 小根堆

    • 将query数组从小到大排序,用小根堆存每个单元格的值
    • 从小到大遍历query,如果堆顶元素小于query[i],弹出,直到全部弹出,总弹出个数为答案
  •   class Solution {
          int dx[4] = {0,1,0,-1},dy[4] = {1,0,-1,0};
      public:
          vector<int> maxPoints(vector<vector<int>>& grid, vector<int>& queries) {
              int k = queries.size(),id[k];
              iota(id,id+k,0);
              sort(id,id+k,[&](int i,int j){return queries[i] < queries[j];});
      
              vector<int> ans(k);
              priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> pq;
              pq.emplace(grid[0][0],0,0);
              grid[0][0] = 0;
              int m = grid.size(),n = grid[0].size(),cnt=0;
              for(int qi:id)
              {
                  //堆顶元素更小
                  int q = queries[qi]; 	
                  //tuple的语法,get<0>(tuple) 返回tuple的第一个元素的引用
                  while(!pq.empty() && get<0>(pq.top()) < q)
                  {
                      cnt ++;
                      auto[_,tx,ty] = pq.top();
                      pq.pop();
                      for(int i=0;i<4;i++)
                      {
                          int x = tx + dx[i],y = ty + dy[i];
                          if (0 <= x && x < m && 0 <= y && y < n && grid[x][y]) 
                          {
                              pq.emplace(grid[x][y],x,y);
                              grid[x][y] = 0;
                          }
                      }
                  }
                  ans[qi] = cnt;
              }
              return ans;
          }
      };
    

http://www.kler.cn/news/289969.html

相关文章:

  • 超声波清洗机有没有平价又好用的推荐?高性价比的眼镜清洗机推荐
  • 百度飞将 paddle ,实现贝叶斯神经网络 bayesue neure network bnn,aistudio公开项目 复现效果不好
  • 语言质量评估对欧洲游戏推广的重要性
  • 阿凡达2.0直播模式来了,数字人直播行业迎来浴火重生!
  • django企业开发实战-学习小结
  • 活动系统开发之采用设计模式与非设计模式的区别-数据库设计及代码设计
  • LeetCode37 解数独
  • 【Steam游戏星露谷物语添加Mod步骤】
  • css中calc
  • 【陪诊系统-H5客户端】订单状态进度条
  • 如果已经提交,重新添加gitignore文件,会忽略么
  • 【QT】学习笔记:枚举桌面窗口句柄
  • 代码随想录算法训练营第35天|背包问题基础、46. 携带研究材料(01背包二维解法)(01背包一维解法)(acm)、416. 分割等和子集
  • 解决Vue npm 淘宝镜像证书过期问题
  • Blazor项目中建立WebApi
  • C++使用MyStack和MyQueue封装栈和队列
  • Chrome 浏览器插件获取网页 window 对象(方案一)
  • pip切换清华源
  • 数据结构二叉树——堆
  • Scott Brinker:Martech中的AI会让买家体验更好还是更糟?这取决于…….
  • Unity版本升级2022 Gradle 升级7.x版本调整
  • 代码随想录 刷题记录-27 图论 (4)拓扑排序
  • Rides实现分布式锁,保障数据一致性,Redisson分布式事务处理
  • python学习之路 - PySpark快速入门
  • docker实战基础三(Docker基础命令)
  • lvgl 自定义组件介绍二
  • yolo训练策略--使用 Python 和 OpenCV 进行图像亮度增强与批量文件复制之(图像增强是按梯度变化优化)
  • 光盘安全隔离与信息单向导入系统-信刻
  • 以人口金字塔图为例,在线绘制左右双侧堆叠条形图
  • 如何设计店铺租赁租凭平台?Java SpringBoot实现全攻略