UVAlive3662 Another Minimum Spanning Tree 莫队算法
就是莫队的模板题
/* Memory: 0 KB Time: 1663 MS Language: C++11 4.8.2 Result: Accepted */#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstdlib> #include<cmath> using namespace std; typedef long long LL; const int INF=0x3f3f3f3f; const int maxn=100005; struct Point {int x,y,id;bool operator<(const Point &e)const{if(x==e.x)return y<e.y;return x<e.x;} } point[maxn]; struct Edge {int u,v,w;bool operator<(const Edge &e)const{return w<e.w;} } edge[maxn*4]; int tot; void addedge(int u,int v,int w) {++tot;edge[tot].u=u;edge[tot].v=v;edge[tot].w=w; } struct Node {int minval,pos;void init(){minval=INF;pos=-1;} } node[maxn]; int lowbit(int x) {return x&(-x); } void update(int i,int val,int pos) {while(i>0){if(val<node[i].minval){node[i].minval=val;node[i].pos=pos;}i-=lowbit(i);} } int query(int i,int m) {int minval=INF,pos=-1;while(i<=m){if(node[i].minval<minval){minval=node[i].minval;pos=node[i].pos;}i+=lowbit(i);}return pos; } int dis(Point a,Point b) {return abs(a.x-b.x)+abs(a.y-b.y); } int c[maxn],b[maxn],n; void build() {sort(point+1,point+n+1);for(int i=1; i<=n; ++i)b[i]=c[i]=point[i].y-point[i].x;sort(c+1,c+1+n);int m=unique(c+1,c+1+n)-(c+1);for(int i=1; i<=m; ++i)node[i].init();for(int i=n; i>0; --i){int pos=lower_bound(c+1,c+1+m,b[i])-c;int tt=query(pos,m);if(tt!=-1)addedge(point[i].id,point[tt].id,dis(point[i],point[tt]));update(pos,point[i].x+point[i].y,i);} } int fa[maxn]; int find(int x) {if(x==fa[x])return x;return fa[x]=find(fa[x]); } LL solve() {sort(edge+1,edge+1+tot);for(int i=1; i<=n; ++i)fa[i]=i;int cnt=0;LL mst=0;for(int i=1; i<=tot; ++i){int fx=find(edge[i].u);int fy=find(edge[i].v);if(fx==fy)continue;fa[fy]=fx;mst+=edge[i].w;cnt++;if(cnt>=n)break;}return mst; } int main() {int cas=0;while(~scanf("%d",&n),n){tot=0;for(int i=1; i<=n; ++i)scanf("%d%d",&point[i].x,&point[i].y),point[i].id=i;build();for(int i=1; i<=n; ++i)point[i].y=-point[i].y;build();for(int i=1; i<=n; ++i)point[i].y=-point[i].y,swap(point[i].x,point[i].y);build();for(int i=1; i<=n; ++i)point[i].y=-point[i].y;build();printf("Case %d: Total Weight = %lld\n",++cas,solve());}return 0; }
View Code
转载于:https://www.cnblogs.com/shuguangzw/p/5059650.html
UVAlive3662 Another Minimum Spanning Tree 莫队算法相关推荐
- 【学习笔记】莫队算法
莫队算法 确实是看过的最良心的讲解: https://www.cnblogs.com/CsOH/p/5904430.html 问题:有n个数组成一个序列,有m个形如询问L, R的询问,每次询问需要回答 ...
- Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...
- 《Boost》Part1 Minimum Spanning Tree
<Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...
- 莫队算法 (普通莫队、带修莫队、树上莫队)
莫队算法 主要基于分块的思想 用结构体记录询问的左右端点及询问编号 (这是一个离线算法) 通过排序优化指针扫描顺序优化时间复杂度 . 1.普通莫队 例题:SP3267 DQUERY - D-query ...
- 曼哈顿距离最小生成树莫队算法
参考资料:https://www.cnblogs.com/CsOH/p/5904430.html https://blog.csdn.net/huzecong/article/details/8576 ...
- 莫队算法二(树上莫队cot2,Haruna’s Breakfast)
例一:不带修改 Count on a tree II Time Limit: 1207MS Memory Limit: 1572864KB 64bit IO Format: %lld & ...
- 【算法竞赛学习笔记】莫队算法-超优雅的暴力算法
title : 莫队算法 tags : ACM,暴力 date : 2021-10-30 author : Linno 普通莫队 常用操作:分块/排序/卡常/离散化等,直接上板子. luoguP270 ...
- [HDU](6333)Problem B. Harvest of Apples ---- 数论+莫队算法
Problem Description There are n apples on a tree, numbered from 1 to n. Count the number of ways to ...
- 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树
知识点 树是没有环的图 在树中,任意顶点r和顶点v之间必然存在着1条路径 生成树:拥有图G的所有顶点,并且在保证自身是树的前提下拥有尽量多的边. 最小生成树(MST):个边权值总和最小的生成树 普里姆 ...
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
最新文章
- python3 配置文件操作库 configparser 读取配置文件后 元组列表转字典
- 计算机科学概论ppt免费,计算机科学概论(第9版)Lecture_slide07.ppt
- Centos7.X通过rpm包安装Docker
- 【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
- 16位汇编第一讲简介
- 韩犯罪团伙雇朝鲜***从中国发动***
- 虚拟试衣 原理与应用
- 二维傅里叶变换深度研究-图像与其频域关系
- 无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载
- python的自省与反射
- java向飞秋发文件_飞秋如何发文件夹
- 计算机主机配置有哪些,组装电脑配置推荐有哪些
- python爬取小说章节_python之如何爬取一篇小说的第一章内容
- 技术内幕 | StarRocks Community Champion、阿里云技术专家解读 Optimizer 实现
- 。免费词典 StarDict 星际译王 和 MDict
- UWA Pipeline 功能详解|可视化配置自动测试
- 用HTML写一个论坛网站
- 手把手教你设计CPU RISC-V处理器设计
- 2018后端面试经历分享
- OpenGL红宝书正序解读(一)
热门文章
- VS2010编译:_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
- 海康设备插上移动硬盘,空间为0的解决办法
- css渐变颜色php,CSS3中的颜色值RGBA以及渐变色的具体详解(图)
- mysql中的replication_MySQL Replication(主从服务器)配置实例
- ftp关闭mysql约束校验_使用mysql验证配置ftp服务器
- 鼠标宏会不会封号_每天一个英雄联盟封号技巧:峡谷先锋可以连续撞塔两次,你会吗?...
- linux mysql 5.7.10_CentOS7 安装 MySQL 5.7.10
- html5游戏燕郊,December | 2019 | 微信html5游戏源码发布站
- 学习自动驾驶的路径是什么?这份技能图谱告诉你
- [20170612]FOR ALL COLUMNS SIZE repeat12c