当前位置: 首页 > 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;
}

相关文章:

  • 如何看待镍钯金PCB在当代工业制造中的地位和应用?
  • AI大模型应对挑战,使用winform实现小球在旋转五边形内的舞蹈
  • 深入理解 Python 中的几种方法:实例方法、类方法、静态方法与特殊方法
  • 强化学习_置信域算法RL
  • 波峰波谷策略
  • BACnet协议详解:架构、应用、挑战与未来发展
  • jsmpeg+java+ffmpeg 调用摄像头RTSP流播放
  • C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)
  • Semaphore解决高并发场景下的有限资源的并发访问问题
  • 深入解析前端 JSBridge:现代混合开发的通信基石与架构艺术
  • FreeSWITCH rtcp-mux 测试
  • 游戏引擎学习第297天:将实体分离到Z层中
  • “交互式“ PDF 与“静态“ PDF 表单的区别
  • OpenAI Codex 加入Agent编程工具新阵营
  • Nuxt.js一个基于 Vue.js 的通用应用框架
  • SSL证书:谷歌算法排名的安全基石与信任杠杆
  • (十三)深入了解AVFoundation-采集:视频帧采集与实时滤镜处理
  • Windows系统:处理文件夹拖动时的冲突与选择
  • [软件工程]第二章题目汇总
  • 基于线性回归的数据预测
  • 深圳南山法院回应“执行款未到账”:张核子公司申请的执行异议成立
  • 工程院院士、武汉纺织大学校长徐卫林拟任湖北省属本科高校党委书记
  • 凤阳文旅局长回应鼓楼瓦片脱落事件:楼宇是否属于文物?施工经费用在何处?
  • “十五五”规划编制工作开展网络征求意见活动
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%