带权并查集
原创 2023-02-17 01:37:58
91阅读
http://acm.hdu.edu.cn/showproblem.php?pid=3047带权并差集 1 #include 2 #include 3 #include 4 #define maxn 60000 5 using namespace std; 6 7 int f[maxn],d...
转载 2014-05-07 19:48:00
56阅读
2评论
题目大意:排座位,给出关系,B要在A后x位,给出许多的关系,求出错误的个数。题解:加权并查集,注意关系不要弄混了。#include int n, m, data, ans; int f[200010],r[200010]; int sf(int x){ int t; if(x==f[x])return f[x]; t=f[x]; f[x]=sf(f[x]); r[x]+=r[t]; return f[x]; } int Union(int x, int y){ int a, b; a=sf(x); b=sf(y); ...
转载 2014-02-17 20:39:00
23阅读
2评论
​​题目传送门​​//求解本题需要弄清楚冲突发生的条件,很容易看出此题为种类并查集的变种,题上提到了距离,自然想到是带权值的并查集,关键是这个权值怎么办。//菜鸟参考网上各位大牛的解法终于懂了这道题的前因后果。有必要将解题过程中的心得体会记录下来。//(1)弄清题意,找出出现冲突的位置,判断冲突很简单就是当两个人在同一行坐,同时他们到根节点的距离差值正好是他们之间的差值,此时就出现了冲突了。(本质
原创 2022-04-20 10:06:39
50阅读
仙人掌上的最短路,这里有详细的题解http://pan.baidu.com/s/1wzCpC我觉得讲的很清楚,不懂的见代码注释吧 1 type node=record 2 po,next,num:longint; 3 end; 4 5 var e,w:array[0..200010] of node; 6 dfn,low,p,q,mar
转载 2015-02-15 22:57:00
29阅读
2评论
3047: 快速排序算法 Description 设计一个程序,实现快速排序算法,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。 设计一个程序,实现快速排序算法,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。 Input Output 每个排序过程输出一行,直到排序完成。
转载 2018-05-12 10:17:00
83阅读
2评论
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3003 Accepted Submission(s): 1160P...
转载 2017-10-06 19:22:00
60阅读
2评论
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2672 Accepted Submission(s): 1028 Pr
原创 2021-07-21 16:22:45
56阅读
Problem Description In 12th Zhejiang C
原创 2023-02-20 01:02:40
46阅读
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3047思路:冲突的条件是:两个人坐在同一行,同时他们到根节点的差值等于他们之间的差值,这时就产生冲突了。于是我们可以用一个dist数组来保存节点到根的距离,而这个距离在路径压缩的时候更新一下就可以了,dist[x]+=dist[parent[x]]。然后就是合并后的距离,令r1=Find(u),r2=Find(v),于是合并时就有parent[r2]=r1,dist[r2]=dist[u]+w-dist[v]。盗用一张图: 1 #include<iostream> 2 #include&
转载 2013-06-10 09:55:00
126阅读
2评论
题目描述给出两个数a,b。问a能否只通过位移运算( >>和 << 可以多次使用)变成b。如果可以输出"Yes
原创 2022-08-17 10:42:31
145阅读
gg,y一下就是每个点到根的距离用rank维护,,#include #include #include #include #include #include #include #include using namespace std;#define mod 1000000007#define ll int#define rank Rank#define N 100100
原创 2021-08-13 14:04:26
30阅读
gg,y一下就是每一个点到根的距离用rank维护,, #include <cstdio> #include <iostream> #include <algorithm> #include <string.h> #include <vector> #include <queue> #include <math.h&
转载 2014-09-28 19:10:00
53阅读
2评论
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1631    Accepted Submission(s): 616 Problem DescriptionIn 12th Zhejiang Col
转载 2014-08-20 14:37:00
64阅读
2评论
In 12th Zhejiang College Students Games 2007, there w=
原创 2022-06-17 14:12:29
32阅读
题目大意:有N个人,M个句子,句子的组合为A B X,A和B代表位置,X表示距离,合起来就是判断A和B的距离是否为X,现要求找出这M个句子中有句是错误的题思路:带权并查集合,用d[a]表示由根节点指向a的一条向量,现给出了
原创 2023-04-07 10:39:42
52阅读
<题目链接> <转载于 >>> > 题目大意: 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突。 解题分析: (1)弄清题意,找出出现冲突的位置,判断冲突很简单就是当两个人在同一行坐,同时他们到根节点的距离差值正好是他们之间的差值
转载 2018-08-14 21:46:00
74阅读
2评论
经典的向量法,只要找出数学关系就行了 #include<iostream> #include<algorithm> #include<string> #include<cstring> #include<vector> #include<cstdio> #include<map> using nam
转载 2020-03-04 15:49:00
69阅读
2评论
原题链接 考察:树形dp 思路: 换根dp,f[i][j][0]表示以i为根的子树中与i距离不超过j的权值和.f[i][j][1]表示以i为起点,往上走距离不超过j的点集合. 易知f[i][j][0] += f[v][j-1][0] 其中f[i][0][0] = w[i] 如果是往上走:f[v][j
转载 2021-04-08 14:21:00
57阅读
2评论
题意:一个300列的无限行的循环场地,a b d代表a,b顺时针相距d的距离,现在给你一些距离,判断是否有冲突,如果有冲突计算冲突的次数 思路:带权并查集 a,b的距离等于b到根节点的距离 - a到根节点的距离 1.当a,b在同一集合的时候就用b到根节点的距离 - a到根节点的距离和当前输入的距离进行对比,看是否满足条件 2.当a,b不在同一集合的时候合并两个节点,更新距离 向量法,方向一定要搞
转载 2013-07-26 18:42:00
48阅读
2评论
  • 1
  • 2
  • 3