BZOJ 3362 Navigation Nightmare 带权并查集
题目大意:给定一些点之间的位置关系,求两个点之间的曼哈顿距离
此题土豪题。只是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 带权并查集的更多相关文章
- POJ 1984 - Navigation Nightmare - [带权并查集]
题目链接:http://poj.org/problem?id=1984 Time Limit: 2000MS Memory Limit: 30000K Case Time Limit: 1000MS ...
- POJ-1984-Navigation Nightmare+带权并查集(中级
传送门:Navigation Nightmare 参考:1:https://www.cnblogs.com/huangfeihome/archive/2012/09/07/2675123.html 参 ...
- BZOJ 2303 方格染色(带权并查集)
要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...
- POJ 1984 Navigation Nightmare 带全并查集
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= ...
- 【poj 1984】&【bzoj 3362】Navigation Nightmare(图论--带权并查集)
题意:平面上给出N个点,知道M个关于点X在点Y的正东/西/南/北方向的距离.问在刚给出一定关系之后其中2点的曼哈顿距离((x1,y1)与(x2,y2):l x1-x2 l+l y1-y2 l),未知则 ...
- 带权并查集【bzoj3362】: [Usaco2004 Feb]Navigation Nightmare 导航噩梦
[bzoj]3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤40000)条的不同的垂 ...
- 【POJ 1984】Navigation Nightmare(带权并查集)
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...
- POJ 1984 Navigation Nightmare 【经典带权并查集】
任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K To ...
- POJ1984:Navigation Nightmare(带权并查集)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7871 Accepted: 2 ...
随机推荐
- js取消radio选中 反选
var radio=document.createElement("input");radio.type="radio";radio.onclick = fun ...
- Cacti监控MySQL实现过程中碰到的问题解汇总
前言:cacti监控mysql服务器的大概50张graphs都弄出来了,也出图了,当中遇到一些问题,印象比較深刻的记录例如以下: (一):加入io监控 点击Create Graphs for this ...
- asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付
asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付 仅仅是多了一个defalutbank的參数. 详细看 open.alipay.com <% ' 类名:AlipaySubmit ' 功 ...
- 为何 IntelliJ IDEA 比 Eclipse 更好
http://www.oschina.net/news/26929/why-intellij-is-better-than-eclipse圣战 有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是 ...
- linux下各种形式的shell加法操作总结
linux 下shell加法操作总结: #!/bin/bash n=1;echo -n "$n " let "n = $n + 1" echo -n & ...
- Office 365 离线安装
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yueque.blog.51cto.com/4580340/1707479 有个O ...
- CentOS6.x修改主机名,关闭防火墙
一.centos默认主机名为localhost,不方便管理,此次,我修改为noi. 1.修改网络配置文件:/etc/sysconfig/network 首先,备份一下源文件,注意date命令和加号之间 ...
- 使用sublime模板加快编码效率
这是使用模板系列的最后一篇了,也是最实用的方法. 前面提到的,插入文件的方法,适合计算机水平一般的初学者:而用TCL脚本的,则适合喜欢自定义各种奇特功能的专业人士. 那么,本次介绍的配置编辑器的方法, ...
- [svc][jk][mem]linux 内存清理/释放命令
1.清理前内存使用情况 free -m 2.开始清理 echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m 4.完成! 查看内存条数命令: ...
- IOS,objective_C中用@interface和 @property 方式声明变量的区别
转自:http://www.cnblogs.com/letmefly/archive/2012/07/20/2601338.html 一直有疑问,在objective_C中声明变量会有 2种方式,今天 ...