这道题我拖了有8个月... 今天放假拉出来研究一下带权的正确性,还有半开半闭的处理还有ab指向的一系列细节问题 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; const int maxn = 200010; int p[maxn],r[maxn]; void init(int n){ memset(r,0,sizeo…
#include<stdio.h> #include<string.h> #define N  200100 struct node { int x,count; }pre[N]; int find(int n) { if(n!=pre[n].x) { int h=pre[n].x; pre[n].x=find(pre[n].x); pre[n].count=pre[n].count+pre[h].count; } return pre[n].x; } int Union(int…
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15582    Accepted Submission(s): 5462 Problem Description TT and FF…
#include<stdio.h> #define N 1100000 struct node { int x,y; }f[N],pre[N]; int find(int x) { if(x!=pre[x].x) { int h=pre[x].x; pre[x].x=find(h); pre[x].y=(pre[x].y+pre[h].y)%2; } return pre[x].x; } int main() { int t,m,n,i,j,k,flag,cou=0; scanf("…
#include<iostream> #include<cstring> #include<cstdio> using namespace std; +; int p[N]; int w[N]; int find(int x) { if(p[x]==x) return x; int root=find(p[x]); w[x]+=w[p[x]]; p[x]=root; return p[x]; } int n,m; int main() { while(~scanf(&q…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he is always…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10164    Accepted Submission(s): 3699 Problem Description TT…
这个题看了2天!!!最后看到这篇题解才有所明悟 转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298091.html   ---by 墨染之樱花 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038 题目描述:某个无聊的骚年给他的女友(烧!)一系列三元组x,y,c,表示序列中ax+ax+1+...+ay=c.但是其中有一些是错误的,也就是与前面的信息出现了冲突,比如给了1,2,6和3,4,…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038 题解转载自:https://www.cnblogs.com/liyinggang/p/5327055.html 题目大意:有n个数,你不知道具体是啥,只知道有n个,然后输入m组数据,每组包含三个整数,a,b,s,表示区间[a,b]的整数和为s,输出有错误的数据的组数. 解题思路:是个典型的带权并查集,难点就在于更新相对信息值.在查找和合并也要对相对信息值进行更新. 做法是用一个数组存储某个节点…
http://acm.hdu.edu.cn/showproblem.php?pid=3038 大致题意: 有一个区间[0,n],然后会给出你m个区间和,每次给出a,b,v,表示区间[a,b]的区间和为v,但每次给出的区间可能与之前的有冲突,问这样起冲突的区间共有多少个 首先区间[a,b]的和可由区间[0,b]的和减去区间[0,a-1]的和得到 但是我们不太可能知道[0,b],故我们只用知道和b的合并过的区间的左端点就行 其实并查集实质就是一颗树,我们可以以树的角度去看待它,理解维护过程 不理解的…