COGS——C2274. [HEOI 2016] tree

http://www.cogs.pro/cogs/problem/problem.php?pid=2274

★☆   输入文件:heoi2016_tree.in   输出文件:heoi2016_tree.out   简单对比
时间限制:1 s   内存限制:128 MB

福利题?

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstdio>
 4
 5 using namespace std;
 6
 7 const int N(1e6+15);
 8 int n,q,u,v;
 9
10 int mark[N],dad[N];
11 int Get_grandfa(int x,int y)
12 {
13     for(;!mark[x];)
14         x=dad[x];
15     return x;
16 }
17
18 int main()
19 {
20     freopen("heoi2016_tree.in","r",stdin);
21     freopen("heoi2016_tree.out","w",stdout);
22     scanf("%d%d",&n,&q);
23     for(int i=1;i<n;i++)
24         scanf("%d%d",&u,&v),dad[v]=u;
25     mark[1]=1;
26     for(char op;q--;)
27     {
28         cin>>op>>v;
29         if(op==‘C‘) mark[v]=1;
30         else printf("%d\n",Get_grandfa(v,1));
31     }
32     return 0;
33 }
时间: 2024-08-01 22:47:57

COGS——C2274. [HEOI 2016] tree的相关文章

COGS 2274. [HEOI 2016] tree

★☆   输入文件:heoi2016_tree.in   输出文件:heoi2016_tree.out   简单对比时间限制:1 s   内存限制:128 MB 这道题数据弱到炸了 . 第一次做用树刨在链上找 A了. 第二次边都没连,直接赋值找爸爸 A了.. 屠龙宝刀点击就送 #include <ctype.h> #include <cstdio> #define M 100005 void read(int &x) { x=0; bool f=0; char ch=get

数据结构(并查集||树链剖分):HEOI 2016 tree

[注意事项] 为了体现增强版,题目限制和数据范围有所增强: 时间限制:1.5s 内存限制:128MB 对于15% 的数据,1<=N,Q<=1000. 对于35% 的数据,1<=N,Q<=10000. 对于50% 的数据,1<=N,Q<=100000,且数据均为官方数据. 对于100% 的数据,1<=N,Q<=1000000. 请注意常数因子对于程序运行的影响. 并查集很简单,并查集就是倒序处理,表示删除一个点的标记,删除后不会再加回来,删完后,合并当前点与其

HEOI 2016 游记

闲来无事,把这玩意儿补上. OI生涯中第一次正经的考试.挂的很惨. Day -1 不小心把机油(雾)sm惹毛了. 好像没啥别的事儿. Day 0 说好了上午直接去机房,然而临时说让我们上完前两节课再去机房,整个人都不好了……于是乎前两节课颓废了. 去机房之前成功借到了sm的外套,背上一个角落里商标上写的made in Turkey真心叼…… 在机房好像是复习了一会儿. 去机房之前默默看了看不跟我去打省选的妹子,然后11:00去食堂吃饭(良心食堂开饭这么早),由于某些原因想减肥,于是乎基本没吃.

[HEOI 2016]

好吧我来写一波题解骗访问量QAQ 题目可以在cogs提交 D1T1 tree 树剖可做,然而有更简单的做法,10min搞定 维护一个并查集,时光倒流,如果当前点没有标记就把并查集合并到父亲上,查询就是并查集就可以了 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #define maxn 200010 using namespace std; int

cogs 2478. [HZOI 2016]简单的最近公共祖先

2478. [HZOI 2016]简单的最近公共祖先 ★☆   输入文件:easy_LCA.in   输出文件:easy_LCA.out   简单对比时间限制:2 s   内存限制:128 MB [题目描述] 给定一棵有n个节点的有根树,根节点为1,每个节点有一个权值wi,求 即求所有无序节点对的LCA的权值之和. 树的节点编号为1~n,LCA表示两节点的最近公共祖先,即在它们的所有公共祖先中离根节点最远的节点. [输入格式] 第一行一个整数n,表示节点数. 第二行n个正整数,表示每个点的权值.

COGS 2334. [HZOI 2016]最小函数值

时间限制:1 s   内存限制:128 MB [题目描述] 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix2+Bix+Ci(x∈N∗).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). [输入格式] 第一行输入两个正整数n和m. 以下n行每行三个正整数,其中第i行的三个数分别为Ai.Bi和Ci.输入数据保证Ai<=10,Bi<=100,Ci<=10000. [输出格式] 输出将这n个函数所有可以生成的函数值排序后的前m个元素.

COGS 2416.[HZOI 2016]公路修建 &amp; COGS 2419.[HZOI 2016]公路修建2 题解

大意: [HZOI 2016]公路修建 给定一个有n个点和m-1组边的无向连通图,其中每组边都包含一条一级边和一条二级边(连接的顶点相同),同一组边中的一级边权值一定大于等于二级边,另外给出一个数k(k<=n-1),求原图的一个生成树,使得其中至少包含k条一级边且最大的边权值尽量小. [HZOI 2016]公路修建2 和上一题基本一样,但是求出的不一定是生成树(也就是说可以有多于n-1条边,只要让图连通即可),在此前提下仍然使得其中至少包含k条一级边且最大的边权值尽量小. 解法: 两题均可以使用

cogs 2632. [HZOI 2016] 数列操作d

2632. [HZOI 2016] 数列操作d ★★★   输入文件:segment.in   输出文件:segment.out   简单对比时间限制:3 s   内存限制:512 MB [题目描述] 一个长度为n的序列,一开始序列数的权值都是0,有m次操作 支持两种操作: 1 L R x,给区间[L,R]内位置为pos的数加上(pos-L)*x 0 L R,查询区间[L,R]内的权值和 最终答案对109+7取模. [输入格式] 第一行两个数n,m,表示序列长度和操作次数 接下来m行,每行描述一

[COGS 2421] [HZOI 2016] 简单的Treap 笛卡尔树

笛卡尔树就是你给两维限制,一维堆R,一维二叉搜索树K,平地拔起一棵Treap,最广范的应用:用LCA求区间最值,建Treap,还有个什么范围top k我表示并不会查都查不到.它最妙最高的地方在于用栈来建树:我们可以先排序K然后一个个插入,那么我们都是最右端,横容易被卡,那么我们不从上到下,我们从下到上,用栈维护,那就把时间复杂度从O(n^2)降到O(n),具体过程见下图从图一到图二就是这么一个过程,我们在把K为13的点插入时要找到一个合适的位置,上比他大,下比他小(假设大根堆) 下面见代码 #i