就是莫队的模板题

/*
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 莫队算法相关推荐

  1. 【学习笔记】莫队算法

    莫队算法 确实是看过的最良心的讲解: https://www.cnblogs.com/CsOH/p/5904430.html 问题:有n个数组成一个序列,有m个形如询问L, R的询问,每次询问需要回答 ...

  2. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm

    我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...

  3. 《Boost》Part1 Minimum Spanning Tree

    <Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...

  4. 莫队算法 (普通莫队、带修莫队、树上莫队)

    莫队算法 主要基于分块的思想 用结构体记录询问的左右端点及询问编号 (这是一个离线算法) 通过排序优化指针扫描顺序优化时间复杂度 . 1.普通莫队 例题:SP3267 DQUERY - D-query ...

  5. 曼哈顿距离最小生成树莫队算法

    参考资料:https://www.cnblogs.com/CsOH/p/5904430.html https://blog.csdn.net/huzecong/article/details/8576 ...

  6. 莫队算法二(树上莫队cot2,Haruna’s Breakfast)

    例一:不带修改 Count on a tree II Time Limit: 1207MS   Memory Limit: 1572864KB   64bit IO Format: %lld & ...

  7. 【算法竞赛学习笔记】莫队算法-超优雅的暴力算法

    title : 莫队算法 tags : ACM,暴力 date : 2021-10-30 author : Linno 普通莫队 常用操作:分块/排序/卡常/离散化等,直接上板子. luoguP270 ...

  8. [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 ...

  9. 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树

    知识点 树是没有环的图 在树中,任意顶点r和顶点v之间必然存在着1条路径 生成树:拥有图G的所有顶点,并且在保证自身是树的前提下拥有尽量多的边. 最小生成树(MST):个边权值总和最小的生成树 普里姆 ...

  10. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

最新文章

  1. python3 配置文件操作库 configparser 读取配置文件后 元组列表转字典
  2. 计算机科学概论ppt免费,计算机科学概论(第9版)Lecture_slide07.ppt
  3. Centos7.X通过rpm包安装Docker
  4. 【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
  5. 16位汇编第一讲简介
  6. 韩犯罪团伙雇朝鲜***从中国发动***
  7. 虚拟试衣 原理与应用
  8. 二维傅里叶变换深度研究-图像与其频域关系
  9. 无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载
  10. python的自省与反射
  11. java向飞秋发文件_飞秋如何发文件夹
  12. 计算机主机配置有哪些,组装电脑配置推荐有哪些
  13. python爬取小说章节_python之如何爬取一篇小说的第一章内容
  14. 技术内幕 | StarRocks Community Champion、阿里云技术专家解读 Optimizer 实现
  15. 。免费词典 StarDict 星际译王 和 MDict
  16. UWA Pipeline 功能详解|可视化配置自动测试
  17. 用HTML写一个论坛网站
  18. 手把手教你设计CPU RISC-V处理器设计
  19. 2018后端面试经历分享
  20. OpenGL红宝书正序解读(一)

热门文章

  1. VS2010编译:_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
  2. 海康设备插上移动硬盘,空间为0的解决办法
  3. css渐变颜色php,CSS3中的颜色值RGBA以及渐变色的具体详解(图)
  4. mysql中的replication_MySQL Replication(主从服务器)配置实例
  5. ftp关闭mysql约束校验_使用mysql验证配置ftp服务器
  6. 鼠标宏会不会封号_每天一个英雄联盟封号技巧:峡谷先锋可以连续撞塔两次,你会吗?...
  7. linux mysql 5.7.10_CentOS7 安装 MySQL 5.7.10
  8. html5游戏燕郊,December | 2019 | 微信html5游戏源码发布站
  9. 学习自动驾驶的路径是什么?这份技能图谱告诉你
  10. [20170612]FOR ALL COLUMNS SIZE repeat12c