草庐IT

range-tree

全部标签

Codeforces 1682 D Circular Spanning Tree

题意1-n排列,构成一个圆;1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数;询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案。提示1.首先考虑什么时候无解,显然,奇数点个数是偶数,并且>=22.由奇数点个数为偶数可以发现,它们可以连到同一个偶数点上(并非直接连)3.剩下的偶数点可以直接顺时针串联,直到连到最近的一个奇数点上4.相当于每个奇数点后面有一条偶数链,或者没有偶数链只有一个奇点(这都是一样的,因为链最后一个点都只剩下一个需要连的点),直接把链的最后一个点连在一起就好了代码#includeusingnamespacestd;chars[20

Codeforces 1682 D Circular Spanning Tree

题意1-n排列,构成一个圆;1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数;询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案。提示1.首先考虑什么时候无解,显然,奇数点个数是偶数,并且>=22.由奇数点个数为偶数可以发现,它们可以连到同一个偶数点上(并非直接连)3.剩下的偶数点可以直接顺时针串联,直到连到最近的一个奇数点上4.相当于每个奇数点后面有一条偶数链,或者没有偶数链只有一个奇点(这都是一样的,因为链最后一个点都只剩下一个需要连的点),直接把链的最后一个点连在一起就好了代码#includeusingnamespacestd;chars[20

leetcode 303. Range Sum Query - Immutable 区域和检索 - 数组不可变(简单)

一、题目大意https://leetcode.cn/problems/range-sum-query-immutable给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含left和right)之间的nums元素的和,其中 left实现NumArray类:NumArray(int[]nums)使用数组nums初始化对象intsumRange(inti,intj)返回数组nums 中索引 left 和 right 之间的元素的总和,包含 left 和 right 两点(也就是 nums[left]+nums[left+1]+...+nums[right]

leetcode 303. Range Sum Query - Immutable 区域和检索 - 数组不可变(简单)

一、题目大意https://leetcode.cn/problems/range-sum-query-immutable给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含left和right)之间的nums元素的和,其中 left实现NumArray类:NumArray(int[]nums)使用数组nums初始化对象intsumRange(inti,intj)返回数组nums 中索引 left 和 right 之间的元素的总和,包含 left 和 right 两点(也就是 nums[left]+nums[left+1]+...+nums[right]

leetcode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(中等)

一、题目大意https://leetcode.cn/problems/range-sum-query-2d-immutable给定一个二维矩阵matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为(row1,col1),右下角为(row2,col2)。实现NumMatrix类:NumMatrix(int[][]matrix)给定整数矩阵matrix进行初始化intsumRegion(introw1,intcol1,introw2,intcol2)返回左上角(row1,col1)、右下角(row2,col2)所描述的子矩阵的元素总和。示例1:![img](images

leetcode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(中等)

一、题目大意https://leetcode.cn/problems/range-sum-query-2d-immutable给定一个二维矩阵matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为(row1,col1),右下角为(row2,col2)。实现NumMatrix类:NumMatrix(int[][]matrix)给定整数矩阵matrix进行初始化intsumRegion(introw1,intcol1,introw2,intcol2)返回左上角(row1,col1)、右下角(row2,col2)所描述的子矩阵的元素总和。示例1:![img](images

Codeforces 1670 E. Hemose on the Tree

题意给你个数p,n=2^p;有一棵树有n个节点,告诉你怎么连边;每个点有个权值,每条边也有个权值,权值需要自行分配,[1,2,3..n...2n-1],总共2n-1个权值;你需要选一个节点,使得他到所有其他边或者节点的简单路径的异或最大值最小。思路显然,给你个p,不直接给你n一定是有潜藏的东西的,分析一下,n=2^p,那么n的结构一定是1000000,1后面都是0,那可以推测出最终的答案一定是小于等于n的1.初始节点可以随便选的,但是它的值一定设为n2.处于一个点的连接点与边来说,他们的关系一定是x,x+n,这样他们的异或值一定是n,可以保证答案在0-n之间改变,注意x与x+n的位置设置3.如

Codeforces 1670 E. Hemose on the Tree

题意给你个数p,n=2^p;有一棵树有n个节点,告诉你怎么连边;每个点有个权值,每条边也有个权值,权值需要自行分配,[1,2,3..n...2n-1],总共2n-1个权值;你需要选一个节点,使得他到所有其他边或者节点的简单路径的异或最大值最小。思路显然,给你个p,不直接给你n一定是有潜藏的东西的,分析一下,n=2^p,那么n的结构一定是1000000,1后面都是0,那可以推测出最终的答案一定是小于等于n的1.初始节点可以随便选的,但是它的值一定设为n2.处于一个点的连接点与边来说,他们的关系一定是x,x+n,这样他们的异或值一定是n,可以保证答案在0-n之间改变,注意x与x+n的位置设置3.如

Codeforces 1646 D. Weight the Tree

题意给你n个节点的树,让你给每个节点进行赋值,并且赋的值需要为正整数;同时当一个节点的值等于所有邻居节点的值的和时,这个点为好点;求出一组赋值情况,满足树的好点个数最大化的同时,所有节点赋值的总和最小;思路1.显然无法存在两个好点相邻存在的情况(除非只有两个节点);2.对于坏点直接赋值为1即可;3.可以树形dp解决,f[x][0/1][0/1],第一维代表以x为根,第二维代表是否为好点,第三维代表是好点的个数/子树节点值的总和代码#includeusingnamespacestd;vectorg[200005];intf[200005][2][2];longlongans[200005];in

Codeforces 1646 D. Weight the Tree

题意给你n个节点的树,让你给每个节点进行赋值,并且赋的值需要为正整数;同时当一个节点的值等于所有邻居节点的值的和时,这个点为好点;求出一组赋值情况,满足树的好点个数最大化的同时,所有节点赋值的总和最小;思路1.显然无法存在两个好点相邻存在的情况(除非只有两个节点);2.对于坏点直接赋值为1即可;3.可以树形dp解决,f[x][0/1][0/1],第一维代表以x为根,第二维代表是否为好点,第三维代表是好点的个数/子树节点值的总和代码#includeusingnamespacestd;vectorg[200005];intf[200005][2][2];longlongans[200005];in