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

Tractor S--二维转一维,然后最小生成树

P3073 [USACO13FEB] Tractor S - 洛谷

转成一维点图,然后最小生成树,最后的最大值就是最后一个点,记得记录维护连通块

同样的二维转一维---Cow Ski Area G---二维图转一维+tarjan缩点-CSDN博客

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
int n,m;
int a[505][505];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
struct no
{int u,v;int w;
}; 
struct cmp
{bool operator()(no &a,no &b)const{return a.w>b.w;}
};
priority_queue<no,vector<no> ,cmp> pq;
int fa[250004];
bool bo[250004];
int find(int x)
{if(fa[x]==x) return x;return fa[x]=find(fa[x]);
}
void dfs(int x,int y)
{int p1=(x-1)*n+y;for(int i=0;i<4;i++){int tx=x+dx[i];int ty=y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=n){int p2=(tx-1)*n+ty;pq.push({p1,p2,abs(a[x][y]-a[tx][ty])});}}
}set<int> an;
ll s;
int k[250004];
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j];for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) {dfs(i,j);	}} for(int i=1;i<=n*n;i++) fa[i]=i,k[i]=1;while(pq.size()){no t=pq.top();pq.pop();if(find(t.u)!=find(t.v)){k[find(t.v)]+=k[find(t.u)];fa[find(t.u)]=find(t.v);if(k[find(t.v)]>=(n*n/2)){cout<<t.w;return 0;}}}return 0;
}

http://www.xdnf.cn/news/557713.html

相关文章:

  • Python 中 pass 语句的详解和使用
  • Java双指针法:原地移除数组元素
  • IEEE出版|2025年智能光子学与应用技术国际学术会议(IPAT2025)
  • CRC计算
  • doris数据分片逻辑
  • RFID技术在半导体晶圆卡塞盒中的应用方案
  • C语言学习笔记之结构体
  • Cribl 在的function 的活用 (pipeline中)
  • day018-磁盘管理-案例
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用控件调色板QPalette)
  • Linux X86平台安装ARM64交叉编译器方法
  • 如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)
  • 首次中医知识问答模型微调
  • CSS display有几种属性值
  • 深入理解 Python 中的几种方法:实例方法、类方法、静态方法与特殊方法
  • leetcode 162. Find Peak Element
  • python新手学习笔记①
  • Linux探秘:驾驭开源,解锁高效能——基础指令
  • Git命令使用全攻略:从创建分支到合并的完整流程
  • 大模型高效微调技术全面解析:从PEFT原理到实战应用
  • 项目进度延误,如何按时交付?
  • 预训练模型:深度学习的通用特征引擎
  • Greenplum数据库维护篇之常用操作指导
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(十八)
  • Windows逆向工程提升之IMAGE_DOS_HEADER
  • 定时任务延迟任务
  • linux内核编译学习笔记
  • Java异常处理与File类终极指南
  • 【基础知识】SPI协议的种类及异同
  • 数据库 1.0.1