COGS 1361. 树】的更多相关文章

1361. 树 ★   输入文件:treed.in   输出文件:treed.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 在一个凉爽的夏夜,xth和rabbit来到花园里砍树.为啥米要砍树呢?是这样滴,小菜儿的儿子窄森要出生了.Xth这个做伯伯的自然要做点什么.于是他决定带着rabbit去收集一些木材,给窄森做一个婴儿车……(xth早就梦想着要天天打菜儿他儿窄森的小pp,到时候在婴儿车里安装一个电子遥控手臂,轻轻一按,啪啪啪……"乌卡卡——"xth邪…
★   输入文件:treed.in   输出文件:treed.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 在一个凉爽的夏夜,xth和rabbit来到花园里砍树.为啥米要砍树呢?是这样滴,小菜儿的儿子窄森要出生了.Xth这个做伯伯的自然要做点什么.于是他决定带着rabbit去收集一些木材,给窄森做一个婴儿车……(xth早就梦想着要天天打菜儿他儿窄森的小pp,到时候在婴儿车里安装一个电子遥控手臂,轻轻一按,啪啪啪……"乌卡卡——"xth邪恶滴笑了,&qu…
2039. 树的统计 ★★   输入文件:counttree.in   输出文件:counttree.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 关于树的统计问题有多种多样的版本,这里你需要解决一个比较简单的问题:对于一棵包含N个节点的有根树,将所有点从1到N编号后,对于每一个节点v,统计出以v为根的子树中有多少个点的编号比v小. [输入格式] 输入第一行包含一个整数N,以下N行每行包含一个整数,其中第i行的整数表示编号为i的节点的父亲节点的编号,根的父亲节点…
1.COGS.2039. 树的统计 思路: 各种方法. 代码: 1.遍历树1   时间 0.314 s   平均内存 2.96 MB #include<cstdio> using namespace std; ; ],fa[N],Ans;//,Dfn[N],Size[N]; struct Edge { int to,nxt; }e[N<<]; int read() { ;;char c=getchar(); ') { ; c=getchar(); } )+(now<<)…
题目:http://cojs.tk/cogs/problem/problem.php?pid=1583 1583. [POJ3237]树的维护 ★★★☆   输入文件:maintaintree.in   输出文件:maintaintree.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 给你由N个结点组成的树.树的节点被编号为1到N,边被编号为1到N-1.每一条边有一个权值.然后你要在树上执行一系列指令.指令可以是如下三种之一: CHANGE i v:将第i条边的…
题目:http://cojs.tk/cogs/problem/problem.php?pid=1672 1672. [SPOJ375 QTREE]难存的情缘 ★★★☆   输入文件:qtree.in   输出文件:qtree.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 一天机房的夜晚,无数人在MC里奋斗着... 大家都知道矿产对于MC来说是多么的重要,但由于矿越挖越少,勇士们不得不跑到更远的地方挖矿,但这样路途上就会花费相当大的时间,导致挖矿效率低下. cjj…
题目链接: COGS.BZOJ3236 Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以\(O(1)\)修改\(O(sqrt(n))\)查询.同BZOJ3809. 莫队为\(O(n^{1.5})\)次修改和\(O(n)\)次查询. 注意这两个需求并不平衡,所以在搭配数据结构时常使用分块而不是线段树. (转自莫队复杂度分析 by Meiku Kazami) 1.莫队+树状数组 /* 每个[l,r]的询问中又多了[a,b]值的限制.原先now是所有种类的个数,所以用 莫队+树状数组做 两…
传送门 : COGS 2638. 数列操作ψ 线段树 这道题让我们维护区间最大值,以及维护区间and,or一个数 我们考虑用线段树进行维护,这时候我们就要用到吉司机线段树啦 QAQ 由于发现若干次and,or之后,如果数据分布均匀,那么几乎所有的数在若干次操作后都会变成同一个数 因为我们的and操作中的0位,以及or操作当中的1位,都是可以把整个区间的那一二进制位重置为相同的 我们考虑利用这一个性质 如果我们直接维护一个区间内的值是否是相同的,那么效果会差很多. 我们发现我们在进行and操作的时…
题目链接 cogs 2554. [福利]可持久化线段树 题解 没有 代码 #include<cstdio> #include<cstring> #include<algorithm> inline int read () { int x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9'){if(c=='-')f=-1; c=getchar();} while(c <= '9' &&a…
二次联通门 : COGS 1583. [POJ3237]树的维护 /* COGS 1583. [POJ3237]树的维护 树链剖分 + 边权化点权 线段树 单点修改 + 区间取相反数 + 查询区间最大 对于区间取相反数 考虑在线段树中维护两个值 一个区间最大, 一个区间最小 对于更改, 只需把区间最大与最小分别取相反数后交换即可 然后对于标记, 由于对区间连续取反两次相当于不变 则只需开一个bool 标记, 每次放标记时对标记取反即可 */ #include <cstdio> #define…
贪婪大陆 难度等级 ★★ 时间限制 1000 ms (1 s) 内存限制 128 MB 测试数据 10 简单对比 输入文件:greedisland.in 输出文件:greedisland.out 简单对比 时间限制:1 s 内存限制:128 MB 试题四:贪婪大陆 [题目描述] 面对蚂蚁们的疯狂进攻,小FF的Tower defense宣告失败--人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海,前方是变异了的超级蚂蚁. 小FF还有大好前程,他可不想命丧于…
27. [WC 2006] 水管局长 ★★★☆   输入文件:tube.in   输出文件:tube.out   简单对比时间限制:3 s   内存限制:128 MB [问题描述 ] SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从 x 处运往 y 处,嘟嘟需要为供水公司找到一条从 A 至 B 的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,…
2211. 谈笑风生 ★★★★   输入文件:laugh.in   输出文件:laugh.out   简单对比时间限制:3 s   内存限制:512 MB [问题描述] 设T 为一棵有根树,我们做如下的定义: • 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道高明到哪里去了”. • 设a 和 b 为 T 中的两个不同节点.如果 a 与 b 在树上的距离不超过某个给定常数x,那么称“a 与b 谈笑风生”. 给定一棵n个节点的有根树T,节点的编号为1 n,根节点为1号节点.你…
★★★☆ 输入文件:dynamic_tree.in 输出文件:dynamic_tree.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 开始时有n个点形成的森林,共m个操作.tp=1时,接下来一个参数u,表示将u所在的树树根变为u.tp=2时,接下来一个参数u,询问以u为根的子树的大小.tp=3时,接下来两个参数u,v,添加一条边(u,v),并将u所在树的根作为两棵树合并后的根. [输入格式] 第一行两个整数n,m. 接下来m行,每行开头是一个整数tp.tp=1或tp=…
★   输入文件:trie.in   输出文件:trie.out   简单对比 时间限制:1 s   内存限制:128 MB 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树,其特点如下: 根节点不包含字母,除根节点外每一个节点都仅包含一个大写英文字母: 从根节点到某一节点,路径上经过的字母依次连起来所构成的字母序列,称为该节点对应的单词.单词列表中的每个词,都是该单词查找树某个节点所对应的单词: 在满足上述条件…
外面是树状数组,里面是动态开点线段树,对于查询我们先把有关点找出来,然后一起在线段树上行走,这样就是单个O(log2)的了 #include <cstdio> #include <vector> #include <cstring> #define R register #define Inf 1000000000 #define MAXN 50000 using namespace std; inline int read() { R ; R char ch=getc…
我们用树状数组做差就可以解决一切问题,我用桶排并用此来表示出第几大就可以直接求前缀和了 #include<cstdio> #include<algorithm> #define MAXN 100010 using namespace std; inline int read() { ; char ch=getchar(); ')ch=getchar(); ') { sum=(sum<<)+(sum<<)+ch-'; ch=getchar(); } retur…
笛卡尔树就是你给两维限制,一维堆R,一维二叉搜索树K,平地拔起一棵Treap,最广范的应用:用LCA求区间最值,建Treap,还有个什么范围top k我表示并不会查都查不到.它最妙最高的地方在于用栈来建树:我们可以先排序K然后一个个插入,那么我们都是最右端,横容易被卡,那么我们不从上到下,我们从下到上,用栈维护,那就把时间复杂度从O(n^2)降到O(n),具体过程见下图从图一到图二就是这么一个过程,我们在把K为13的点插入时要找到一个合适的位置,上比他大,下比他小(假设大根堆) 下面见代码 #i…
主席树裸板子 #include<cstdio> #include<iostream> #include<algorithm> #define MAXN 100005 #define MAX 2000005 using namespace std; int sum[MAX],l[MAX],mid[MAX],r[MAX],a[MAXN],b[MAXN],n,m,sz,size,root[MAXN],cnt; void build(int &x,int z,int y…
2554. [福利]可持久化线段树 ★★☆   输入文件:longterm_segtree.in   输出文件:longterm_segtree.out   简单对比时间限制:3 s   内存限制:256 MB [题目描述] 为什么说本题是福利呢?因为这是一道非常直白的可持久化线段树的练习题,目的并不是虐人,而是指导你入门可持久化数据结构. 线段树有个非常经典的应用是处理RMQ问题,即区间最大/最小值询问问题.现在我们把这个问题可持久化一下: Q k l r 查询数列在第k个版本时,区间[l,…
★★   输入文件:B_Tree.in   输出文件:B_Tree.out   简单对比时间限制:2 s   内存限制:512 MB [题目描述] 给定一棵有根树,树根为1,一开始这棵树所有节点均为白色 之后给定一个染色序列,第i个数ai表示将ai这个点染黑 之后给定若干询问 询问第L到第R个染黑的黑点和u所有的LCA中深度最大的LCA的编号 [输入格式] 第一行n,m,q 表示节点总数,染色序列长度,询问个数 以下n-1行,每行u,v描述一条边的两个端点 之后m个正整数表示染色序列 之后q行,…
293. [NOI2000] 单词查找树 ★★   输入文件:trie.in   输出文件:trie.out   简单对比时间限制:1 s   内存限制:128 MB 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树,其特点如下: 根节点不包含字母,除根节点外每一个节点都仅包含一个大写英文字母: 从根节点到某一节点,路径上经过的字母依次连起来所构成的字母序列,称为该节点对应的单词.单词列表中的每个词,都是该单词查…
1143. [石门中学2009] 切割树 ★   输入文件:treecut.in   输出文件:treecut.out   简单对比时间限制:1 s   内存限制:128 MB treecut 题目描述: 有一个N个节点的无根树,各节点编号为1..N,现在要求你删除其中的一个点,使分割开的连通块中节点个数都不超过原来的一半多. 数据范围 1 <= N <= 10,000 输入文件 treecut.in 第一行:一个整数N. 后面有N-1行:每行两个整数 X 和 Y,表示一个边连接的两个节点号.…
第一次写cdq分治 感谢hhd&lty 这20亿对CP的指导(逃) 其实 就是 递归看左半部分对右半部分的贡献 (树状数组写挂了--临时改的线段树[大写的尴尬]) //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 666666 int w,n,tree[N*16]; struct Oper{int op,i…
[题目描述] noip要到了,大家来到许愿树前.这个许愿树不仅仅是许愿树,还有未卜先知的功能.众OIer问许愿树:“不平凡的许愿树,CCF告诉我们noip中会有两道题目从Openjudge上选择,你能不能告诉我是哪两道题.” 许愿树想了想直接说出答案并不妥:“中国有句古话叫‘闷声大发财’,我就什么也不说,这是最好的.但是我看到你们这么热情,一句话不说也不好,我就告诉你 们点信息吧.你们看我是一个由N个结点组成的树,在树中任选着3个点,有多少种选择方案使得这三个点互相之间的距离相同?两个方案不同当…
[ZJOI2013] K大数查询 /* 树套树写法. bzoj过不了. 可能有负数要离散吧. 线段树套线段树. 外层权值线段树,内层区间线段树维护标记. 对权值建一棵权值线段树. 某个点表示权值在某个范围内的数的个数. 然后对每个点建一棵区间线段树. 表示该权值范围在某个区间的数的个数. 然后查找用类似二分的思想. */ #include<iostream> #include<cstdio> #define MAXN 50001 using namespace std; struc…
[ZJOI2008]树的统计Count ★★★ 输入文件:bzoj_1036.in 输出文件:bzoj_1036.out 简单对比 时间限制:5 s 内存限制:162 MB [题目描述] 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:…
网上似乎这道题的题解很少?写一个吧 我跟这道题的渊源追溯到了上个学期刚刚学线段树的那一天... 当时线段树专题前边的题都是一些板子就不一会就水过了,然后就看到了最后一题的它:山海经 那一个上午,我竭尽全力,却毫无收获. 后来我下午继续肛还是肛不动,但是mikufun大神,在刚学线段树的阶段,把这道我现在都要写30min的难题给A了! 他当时的NB代码: #include<iostream> #include<cstdio> using namespace std; struct t…
173. 词链 ★★☆   输入文件:link.in   输出文件:link.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]给定一个仅包含小写字母的英文单词表,其中每个单词最多包含 50 个字母. 如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链.例如下面的单词组成了一个词链: i int integer 而下面的单词不组成词链: integer intern 请在给定的单词表中取出一些词,组成最长的词链.…
247. 售票系统 ★★☆   输入文件:railway.in   输出文件:railway.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 某次列车途经C个城市,城市编号依次为1到C,列车上共有S个座位,铁路局规定售出的车票只能是坐票, 即车上所有的旅客都有座.售票系统是由计算机执行的,每一个售票申请包含三个参数,分别用O.D.N表示,O为起始站,D为目的地站,N为车票张数.售票 系统对该售票申请作出受理或不受理的决定,只有在从O到D的区段内列车上都有N个或N个…