当前位置: 首页 > news >正文

重庆网站建设选夹夹虫设计师免费素材网站推荐

重庆网站建设选夹夹虫,设计师免费素材网站推荐,南阳网站建设口碑,wordpress增加分类目录颜色平衡树问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序问题描述 格式输入 输入的第一行包含一个整数 n ,表示树的结点数。 接下来 n 行,每行包含两个整数 Ci , Fi,用一个空格分隔,表示第 i 个结点 …

颜色平衡树

  • ==问题描述==
  • ==格式输入==
  • ==格式输出==
  • ==样例输入==
  • ==样例输出==
  • ==评测用例规模与约定==
  • ==解析==
  • ==参考程序==

问题描述

在这里插入图片描述
在这里插入图片描述


格式输入

输入的第一行包含一个整数 n ,表示树的结点数。
接下来 n 行,每行包含两个整数 Ci
, Fi,用一个空格分隔,表示第 i 个结点
的颜色和父亲结点编号。
特别地,输入数据保证 F1 为 0 ,也即 1 号点没有父亲结点。保证输入数
据是一棵树。


格式输出

输出一行包含一个整数表示答案。


样例输入

6
2 0
2 1
1 2
3 3
3 4
1 4


样例输出

4 编号为 1, 3, 5, 6 的 4 个结点对应的子树为颜色平衡树。


评测用例规模与约定

对于 30% 的评测用例,n ≤ 200,Ci ≤ 200 ;
对于 60% 的评测用例,n ≤ 5000,Ci ≤ 5000 ;
对于所有评测用例,1 ≤ n ≤ 200000,1 ≤ Ci ≤ 200000,0 ≤ Fi < i 。


解析

十四届蓝桥


参考程序

#include<bits/stdc++.h>
using namespace std;
const int N = 200000 + 7;
int col[N], f, n, ans;
struct node {int to, next;
}edge[N];
int head[N], cnt, num[N];
inline void add(int x, int to) {edge[++cnt].to = to;edge[cnt].next = head[x];head[x] = cnt;
}
int dfn, in[N], out[N], belong[N], newcol[N];
unordered_map<int, int> mp;
inline void dfs(int x) {in[x] = ++dfn;for (int i = head[x]; i; i = edge[i].next) {int y = edge[i].to;dfs(y);}out[x] = dfn;
}
struct mo {int l, r;
}q[N << 1];
inline bool cmp(const mo& a, const mo& b) {return belong[a.l] == belong[b.l] ? a.r < b.r : a.l < b.l;
}
inline void del(int x) {int c = newcol[x];mp[num[c]]--;if (mp[num[c]] == 0) {mp.erase(num[c]);}num[c]--;if (num[c]) mp[num[c]]++;
}
inline void add(int x) {int c = newcol[x];if (num[c]) mp[num[c]]--;if (mp[num[c]] == 0) {mp.erase(num[c]);}num[c]++;mp[num[c]]++;
}
inline void Case_Test() {cin >> n;for (int i = 1; i <= n; i++) {cin >> col[i] >> f;if (f) add(f, i);}dfs(1);for (int i = 1; i <= n; i++) {// cout << i << " : [" << in[i] << "," << out[i] << "]" << endl;q[i].l = in[i], q[i].r = out[i];newcol[in[i]] = col[i]; newcol[out[i]] = col[i];// dfn改变原来位置,需要用newcol}int sq = sqrt(dfn);// 根号for (int i = 1; i <= dfn; i++) {belong[i] = (i - 1) / sq + 1;// 预处理}sort(q + 1, q + 1 + n, cmp);// 查询区间排序int l = 1, r = 0;// 莫队初始化for (int i = 1; i <= n; i++) {while (l < q[i].l) del(l++);while (l > q[i].l) add(--l);while (r < q[i].r) add(++r);while (r > q[i].r) del(r--);// 莫队四种转移if (mp.size() == 1) ans++;}cout << ans;
}
int main()
{Case_Test();return 0;
}

以个人刷题整理为目的,如若侵权,请联系删除~

http://www.yayakq.cn/news/675584/

相关文章:

  • 孝义网站建设中国作风建设门户网站
  • 徐州徐州网站建设新闻标题做的好的网站
  • 官方网站后台图片下载怎么做wordpress加入视频
  • 厦门手机网站建设公司排名重庆网站建设价格
  • 网站地址查询网wordpress替换
  • 中山网站建设方案托管企业网站营销的实现方式解读
  • 佛山网站制作哪里好大型门户网站程序
  • 网站的工作简报怎么做中国高清adidas网站
  • 校园网站建设培训的心得体会泰安法拍房信息网
  • 郑州整站网站优化订单详情页面设计
  • 那种网站建设软件最好.net网站开发实训体会
  • 网站色差表网站建设整体设计思路
  • 网站 备案 注销那个网站做宝贝主图好
  • 网站网站营销特点公司起名字大全免费好听必过的
  • 网站建设常用结构类型郑州专业网站建设在哪里
  • 有几家做网站的公司智能网站建设哪家好
  • 深圳美食教学网站制作wordpress大图片
  • 做网站的公司现在还 赚钱吗全案网络推广公司
  • 自行创建网站的平台网站建设参考论文
  • 镇江公司网站建设红叶网站开发工作室
  • windows8风格网站模板评价一个网站的好坏
  • 销售产品单页面网站模板哪里有做网站较好的公司
  • 网站开发人员 平均工资H5酒店静态网站建设开题报告范文
  • 华为网站建设方案模板下载展馆设计费取费标准一览表
  • 网站建设流程图解郑州网站建设 58
  • 晋江市住房和城乡建设网站外贸网站营销方案
  • 哪个软件可以做明星视频网站小程序开发和网站开发的区别
  • 汕头网站制作网页个人网站模板打包下载
  • 做国外房产的网站注册城乡规划师有什么用
  • 织梦网站发布的哪些产品和文章放在a文件可以吗qq旧版本大全官方下载