题目大意:给定一些点之间的位置关系,求两个点之间的曼哈顿距离

此题土豪题。只是POJ也有一道相同的题,能够刷一下

别被题目坑到了,这题不强制在线。把询问离线处理就可以

然后就是带权并查集的问题了。。

将权值设为方向向量,重载+和-,依照正常权值并查集做即可了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 40400
using namespace std;
struct abcd{
int x,y;
abcd(){}
abcd(int X,int Y):x(X),y(Y){}
abcd operator + (const abcd &Y) const
{
return abcd( x+Y.x , y+Y.y );
}
abcd operator - (const abcd &Y) const
{
return abcd( x-Y.x , y-Y.y );
}
}f[M];
struct operation{
int x,y;
abcd temp;
}operations[M];
struct query{
int x,y,z,pos;
bool operator < (const query &Y) const
{
return z < Y.z ;
}
}queries[10100];
int n,m,q,fa[M],ans[10100];
int Distance(abcd x)
{
return abs(x.x)+abs(x.y);
}
int Find(int x)
{
if(!fa[x]||fa[x]==x)
return fa[x]=x;
int y=fa[x];
fa[x]=Find(fa[x]);
f[x]=f[y]+f[x];
return fa[x];
}
int main()
{
int i,j,x,y,z;
char p[10];
cin>>n>>m;
for(i=1;i<=m;i++)
{
scanf("%d%d%d%s",&operations[i].x,&operations[i].y,&z,p);
switch(p[0])
{
case 'E':operations[i].temp=abcd(z,0);break;
case 'W':operations[i].temp=abcd(-z,0);break;
case 'N':operations[i].temp=abcd(0,z);break;
case 'S':operations[i].temp=abcd(0,-z);break;
}
}
cin>>q;
for(i=1;i<=q;i++)
scanf("%d%d%d",&queries[i].x,&queries[i].y,&queries[i].z),queries[i].pos=i;
sort(queries+1,queries+q+1);
for(i=1,j=1;i<=q;i++)
{
for(;j<=queries[i].z;j++)
{
int x=operations[j].x;
int y=operations[j].y;
int fx=Find(x),fy=Find(y);
fa[fy]=fx;
f[fy]=f[x]-f[y]+operations[j].temp;
}
int x=queries[i].x;
int y=queries[i].y;
if( Find(x)!=Find(y) )
ans[queries[i].pos]=-1;
else
ans[queries[i].pos]=Distance(f[x]-f[y]);
}
for(i=1;i<=q;i++)
printf("%d\n",ans[i]);
}

BZOJ 3362 Navigation Nightmare 带权并查集的更多相关文章

  1. POJ 1984 - Navigation Nightmare - [带权并查集]

    题目链接:http://poj.org/problem?id=1984 Time Limit: 2000MS Memory Limit: 30000K Case Time Limit: 1000MS ...

  2. POJ-1984-Navigation Nightmare+带权并查集(中级

    传送门:Navigation Nightmare 参考:1:https://www.cnblogs.com/huangfeihome/archive/2012/09/07/2675123.html 参 ...

  3. BZOJ 2303 方格染色(带权并查集)

    要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...

  4. POJ 1984 Navigation Nightmare 带全并查集

    Navigation Nightmare   Description Farmer John's pastoral neighborhood has N farms (2 <= N <= ...

  5. 【poj 1984】&【bzoj 3362】Navigation Nightmare(图论--带权并查集)

    题意:平面上给出N个点,知道M个关于点X在点Y的正东/西/南/北方向的距离.问在刚给出一定关系之后其中2点的曼哈顿距离((x1,y1)与(x2,y2):l x1-x2 l+l y1-y2 l),未知则 ...

  6. 带权并查集【bzoj3362】: [Usaco2004 Feb]Navigation Nightmare 导航噩梦

    [bzoj]3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 ​ 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤40000)条的不同的垂 ...

  7. 【POJ 1984】Navigation Nightmare(带权并查集)

    Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...

  8. POJ 1984 Navigation Nightmare 【经典带权并查集】

    任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K To ...

  9. POJ1984:Navigation Nightmare(带权并查集)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7871   Accepted: 2 ...

随机推荐

  1. 说说iDempiere = OSGi + ADempiere的OSGi

    怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ 我对iDempiere还完全摸不着头脑,正好在学习之际,应erp100的@纵横四海 邀请 ...

  2. (转)解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题

    解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题   开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Serve ...

  3. 自己动手写CPU之第五阶段(2)——OpenMIPS对数据相关问题的解决措施

    将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第16篇.我尽量每周四篇 5.2 OpenMIPS对数据相关问题的解决措施 OpenMIPS处理器採用数据前推的方法来解决流水 ...

  4. Lintcode---二叉树的层次遍历(原型)

    给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 ...

  5. js对象成员的访问

    var obj={0:1,1:'id'};//访问对象 obj['0'];//用[]来访问,不要用.的方式访问 -----对象与字符串的转换----- node.js JS对象和JSON字符串之间的转 ...

  6. PhpStorm和PHPstudy配置调试参数(Xdebug),问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.

    配置phpstrom的Xdebug 问题描述: Error. Interpreter is not specified or invalid. Press "Fix" to edi ...

  7. unity调用系统剪切板功能

    package com.game.utils; import android.app.Activity; import android.content.ClipData; import android ...

  8. Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案

    Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案 1. 运行平台:跨平台 android ios pc mobile 1.1. -------------前端 界面------ ...

  9. 基于Verilog语言的FIR滤波【程序和理解】

    一直想找一个简单.清晰.明了的fir滤波器的设计,终于找到了一个可以应用的,和大家分享一下,有助于FPGA新手入门. 1.说道fir滤波器,滤波系数肯定是最重要的,因为后面程序中涉及到滤波系数问题,所 ...

  10. python学习之urlparse()

    urlparse(url, scheme='', allow_fragments=True) <scheme>://<netloc>/<path>;<para ...