POJ1984】的更多相关文章

http://poj.org/problem?id=1984 (题目链接) 题意 给出一棵树,这棵树是以平面直角坐标系为基准建立的,也就是每个节点最多只有上下左右4条边.现在动态建树,同时询问两点间的曼哈顿距离 Solution 一开始没看懂题,当做图写了个SPFA..后来发现是树于是删掉重新写了个DFS..最后又发现要动态建树..尼玛..又重新写了个带全并查集.. 注意询问并不保证时间是升序的,要按照给定询问顺序输出. 代码 // poj1984 #include<algorithm> #i…
并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构,  可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集有压缩路径). 用并查集来维护元素之间关系的传递, 那么元素与元素之间就有一个权值(带权并查集),那么当路径压缩时,我们需要根据关系的传递性来维护 当父元素变动时,关系的变动. poj1182食物链 给定一些元素之间的关系, 问我们有多少是错误的. 当碰到一个错误时,并不会用它来更新并查集(错误的怎…
[POJ1984]Navigation Nightmare 试题描述 Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usually numbered/labeled 1..N. A series of M (1 <= M < 40,000) vertical and horizontal roads each of varying lengths (1 <= length <= 1…
题目链接:https://vjudge.net/problem/POJ-1984 解题思路:并查集+离线操作. 用dx[ ]和dy[ ]两个数组存储某点相对于该点所在集合的源头的方位,因此不难推知dx[ ]和dy[ ]要初始化为0.当把一个点依附到另一个点之上时所用的技巧值得细细体会.而finds( )函数则更是点睛之笔. AC代码: #include <cstdio> #include <algorithm> #include <queue> #include <…
Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 5939   Accepted: 2102 Case Time Limit: 1000MS Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usually numbered/labeled 1..N. A series o…
题意:有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1. 只要在元素的权值上保存两个信息,与祖先元素的两个方向的差,我选择正东和正北方向差(负值表示正西和正南),然后直接用带权并查集,询问时曼哈顿距离就是两个权值的绝对值之和.由于询问是嵌在给出关系中间的,所以要先存下所有关系和询问,离线做就行. #include<stdio.h> #include<stri…
题目链接:http://poj.org/problem?id=1984 题意:给定n个farm,m条边连接farm,k组询问,询问根据前t3条边求t1到t2的曼哈顿距离,若不可求则输出-1. 思路:类似与poj1182,也是并查集的向量运用.用root[i]表示farm i的祖先,x[i],y[i]分别表示i到其祖先的曼哈顿距离的横纵坐标,这里离线化先保存边的信息,在询问的时候更新边的信息,具体的合并操作时x[i],y[i]的运算手动推一下就明白了. AC代码: #include<cstdio>…
Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7871   Accepted: 2831 Case Time Limit: 1000MS 题目链接:http://poj.org/problem?id=1984 Description: Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usua…
题目链接:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7136   Accepted: 2556 Case Time Limit: 1000MS Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usual…
#include<stdio.h>//典型题 #include<math.h> #define N 40010 struct node { int x,y,z; }pre[N]; struct fff{ int a,b,dis; char s[2]; }map[N];//储存 int find(int x) { if(x!=pre[x].z)  { int h=pre[x].z; pre[x].z=find(pre[x].z);    pre[x].x=pre[x].x+pre[h…