[kuangbin带你飞]专题七 线段树 J HDU 3974
来源:互联网 发布:网络写手排名 编辑:程序博客网 时间:2024/05/20 05:27
题目地址:https://vjudge.net/contest/66989#problem/J
思路:讲真,我没看出来这是线段树啊……我用类似并查集的方法,记录每一个人的上级,然后对于每个人,更新操作时记录时间以及这件事是第几件。查找时,从目标人物向上查找,如果有比他当前记录的事顺序更后面的事,说明他的事情以及变了,更新答案继续向上找,直到找到最高级的的那个boss。
AC代码:
#include<bits/stdc++.h>using namespace std;const int maxn=5e4+10;int fa[maxn];struct person{ int task,count;}E[maxn];int main(){ int t; scanf("%d",&t); for(int casei=1;casei<=t;casei++) { int n; scanf("%d",&n); for(int i=0;i<=n;i++) fa[i]=-1; for(int i=1;i<n;i++) { int a,b; scanf("%d%d",&a,&b); fa[a]=b; } int m; scanf("%d",&m); for(int i=0;i<=n;i++) E[i].task=E[i].count=-1; int sum=0; printf("Case #%d:\n",casei); while(m--) { char a[2]; scanf("%s",a); if(a[0]=='C') { int a; scanf("%d",&a); int task=E[a].task; int count=E[a].count; while(a!=-1) { if(E[a].count>=count) { task=E[a].task; count=E[a].count; } a=fa[a]; } printf("%d\n",task); } else if(a[0]=='T') { int a,b; scanf("%d%d",&a,&b); E[a].task=b; E[a].count=++sum; } } }}
0 0
- [kuangbin带你飞]专题七 线段树 J HDU 3974
- [kuangbin带你飞]专题七 线段树
- [kuangbin带你飞]专题七 线段树 H HDU4027
- [kuangbin带你飞]专题七 线段树 B
- [kuangbin带你飞]专题七 线段树 A
- [kuangbin带你飞]专题七 线段树 C
- [kuangbin带你飞]专题七 线段树 E
- [kuangbin带你飞]专题七 线段树 F
- [kuangbin带你飞]专题七 线段树 A HDU 1166
- [kuangbin带你飞]专题七 线段树 B HDU 1754
- [kuangbin带你飞]专题七 线段树 E HDU 1698
- [kuangbin带你飞]专题七 线段树 I HDU 1540
- [kuangbin带你飞]专题七 线段树 H HDU-4027
- [kuangbin带你飞]专题七 线段树 ABCDE 题解,持续更新
- [kuangbin带你飞]专题七 线段树 C POJ 3468
- [kuangbin带你飞]专题七 线段树 D POJ 2528
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- [kuangbin带你飞]专题七 线段树 题解(未完)
- 使用Spark调用word2vec接口将文本转化为向量
- Effective stl 第23条:考虑用排序的vector代替关联容器
- war文件如何打开
- HDU-5536 Chip Factory(字典树)
- js 算出Array数组中出现次数最多的元素
- [kuangbin带你飞]专题七 线段树 J HDU 3974
- JAVA基础知识点梳理五:方法
- 第四周【项目三-单链表应用(3)单链表的递增】
- css中的盒子模型
- 【LeetCode】207. Course Schedule (Medium)
- BroadcastReceiver
- std::cerr与std::cout区别
- LINUX下python程序的运行
- 车道检测