摘要:
/*题目: n个人中有m对人互为朋友,若a认识b,b认识c,则a认识c,问这n个人中最多有多少人 相互认识分析: 并查集实现,把互为朋友的放置在同一集合中,询问最大人数时可以使用计数器计算该 人所在集合的父节点的数字*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int X = 30002;int p[X],cnt[X],n,m;int find_set(int x){ if(x!=p[x]) p[x] = find_set(p[x])... 阅读全文
摘要:
/*题目: 给出序列,其中一个子序列为(x,y,z),问最多有多少个这样的子序列, 使得x<z<y,其中该序列为1到n的排列分析: 由于是排列,所以不存在相同的元素,所以x,y,z互不相等。所以序列中 的大小关系可表示为 小中大+小大中 = 小__ __ ,所以答案 小大中 = 小__ __ -小中大 统计 小__ __可以统计该位后面的所有元素中比他大的个数为x,则 小__ __ = x*(x-1)/2 而统计小中大时,只需要统计前面比他小的以及后面比他大的个数x,y,则 小中大 = x*y 统计个数可以用树状数组... 阅读全文