Tree CodeForces -932D】的更多相关文章

错误记录:如下注释语句 #include<cstdio> #include<algorithm> using namespace std; typedef long long LL; LL log2n=,cnt=; LL anc[][],maxv[][],v[]; LL anc2[][],sum[][]; LL pow2[]={,,,,,,,,,,,,,,,,,,,}; //maxv[i][j]指i到其2^j级祖先的路径上点权最大值,含2^j级祖先,不含i //sum[i][j]指…
I - Vasya and a Tree CodeForces - 1076E 其实参考完别人的思路,写完程序交上去,还是没理解啥意思..昨晚再仔细想了想.终于弄明白了(有可能不对 题意是有一棵树n个点,初始时候每个点权值都为0,m次修改,对v的叶子节点且距离小于d的都加上x 也就是v以下d层包括v自身都加上x 问最后每个点的权值 现在一想 用线段树来维护就是很自然的事了 但是要维护什么值呢 维护的就是某个深度上增加的值 先更新 后回溯取消更新 详见代码注释 #include <cstdio>…
Distance in Tree CodeForces - 161D 题意:给一棵n个结点的树,任意两点之间的距离为1,现在有点u.v,且u与v的最短距离为k,求这样的点对(u,v)的个数((u,v)/(v,u)算一对). 方法: ans[i][k]表示与i结点距离为k的子结点个数 ans[i][k]=sum{ans[son][k-1]} ans[i][0]=1 sum[i]表示(u,v)都为i的子结点且(u,v)的最短路径过i点 sum[i]=sum{ans[i][p]*ans[i][k-p]…
Water Tree CodeForces 343D 树链剖分+线段树 题意 给定一棵n个n-1条边的树,起初所有节点权值为0. 然后m个操作, 1 x:把x为根的子树的点的权值修改为1: 2 x:把x结点到根路径上的点修改为0: 3 x:查询结点x的值. 解题思路 这个因为是在树上进行的操作,所以首先需要把树进行一些转化,比如使用dfs序列转变成一维的,这样方便使用线段树或则树状数组来进行操作.但是因为这里的操作2需要把x节点和它的父节点赋值为0,所以需要树链剖分来进行处理. 关于树链剖分的讲…
Z - New Year Tree CodeForces - 620E 这个题目还没有写,先想想思路,我觉得这个题目应该可以用bitset, 首先这个肯定是用dfs序把这个树转化成线段树,也就是二叉树. 然后就是一个区间修改和区间查询.这个区间查询时查询这个区间的种类数. 这个之前写过几个题目也是查区间种类数的 G. Yash And Trees 线段树 bitset 20190709 暑训 区间种类数 莫队的学习 莫队和权值线段树应该都是不支持修改的,所以这个题目用不上, 然后就是这个高端压位…
932D - Tree 思路: 树上倍增 anc[i][u]:u的2^i祖先 mx[i][u]:u到它的2^i祖先之间的最大值,不包括u pre[i][u]:以u开始的递增序列的2^i祖先 sum[i][u]:以u开始递增序列从u到2^i祖先的和,不包括u 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,s…
http://codeforces.com/contest/842/problem/C 树 dp 一个数的质因数有限,用set存储,去重 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <time.h> #include <string> #include <set> #include <map>…
C. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Iahub likes trees very much. Recently he discovered an interesting tree named propagating tree. The tree consists of n n…
Gardener Alexey teaches competitive programming to high school students. To congratulate Alexey on the Teacher’s Day, the students have gifted him a collection of wooden sticks, where every stick has an integer length. Now Alexey wants to grow a tree…
题面 Vasya has a tree consisting of n vertices with root in vertex 1. At first all vertices has 0 written on it. Let d(i,j) be the distance between vertices i and j, i.e. number of edges in the shortest path from i to j. Also, let's denote k-subtree of…
有这么一类问题,要求统计一棵树上与子树相关的某些信息,比如:在一棵所有节点被染色的树上,统计每棵子树上出现次数最多的颜色编号之和. 很自然的可以想到用DFS序+主席树去求解,但是编码复杂度很高: 然后我们可以想到DFS序+莫队解决,然而$O(n\sqrt{n})$的时间复杂度在数据较大的时候容易TLE: 有没有更优美一点的解法呢?DSU On Tree(据说叫树上启发式合并)可以以较小的编码复杂度在$O(n\log n)$的时间复杂度完成对于所有子树信息的统计. 先上模板 void dsu(LL…
大意: n节点树, 每个点有权值, 三种操作: 1,换根. 2, lca(u,v)的子树权值全部增加x. 3, 查询子树权值和. 先不考虑换根, 考虑子树x加v的贡献 (1)对fa[x]到根的树链贡献为sz[x]*v; (2)对x子树内的点y贡献为sz[y]*v; 步骤(1)可以用单点更新子树求和实现, 步骤(2)可以子树更新单点求和实现 然后就是换根板子题了. 感觉蠢得不行的题啊, 还是打了好久, 怎么能这么菜啊 #include <iostream> #include <algori…
大意: 给定有根树, 每个点$x$有权值$a_x$, 对于每个点$x$, 求出$x$子树内所有点$y$, 需要满足$dist(x,y)<=a_y$. 刚开始想错了, 直接打线段树合并了.....因为范围是$long \space long$常数极大, 空间很可能会被卡, 不过竟然过了. 实际上本题每个点对树链上的贡献是单调的, 直接二分就行了 放一下线段树合并代码 #include <iostream> #include <algorithm> #include <cs…
大意: 给定树, 多组询问, 每个询问给出一个点集$S$, 给定$m, r$, 求根为$r$时, $S$的划分数, 满足 每个划分大小不超过$m$ 每个划分内不存在一个点是另一个点的祖先 设点$x$的祖先包括x的个数为$f[x]$ (不属于集合S的点不计算), 按$f$排序后, 有转移 $$dp[i][j]=dp[i-1][j-1]+(j-f[i]+1)dp[i-1][j]$$ dp[i][j]为前i个, 划分为j组的方案数 所以讨论一下$r$与$1$的位置关系求出f就行了 #include <…
链接 大意: 给定树, 求树上所有链上最大值最小值之差 817D的树上版本, 用并查集维护即可. 817D由于是链的情况并查集不必压缩路径即可达到均摊$O(n)$, 该题必须压缩, 复杂度$O(nlogn)$ #include <iostream> #include <algorithm> #include <cstdio> #include <vector> #define REP(i,a,n) for(int i=a;i<=n;++i) #defi…
链接 题目大意:给定$n$结点树, 假设当前在结点$v$, 有两种操作 $(1)$移动到$v$的子树内任意一个叶子上 $(2)$若$v$为叶子, 可以移动到距离$v$不超过$k$的祖先上 初始在结点$1$(若结点$1$只有$1$个儿子时,结点$1$不能看做叶子), 求经过若干次操作后, 最多可以访问到的叶子数 记$f_1[x]$为初始在$x$,在$x$子树运动,最后不用返回父亲的最大值 $f_0[x]$为必须返回父亲时的最大值 就有$f_1[x]=\max(f_1[y]-f_0[y])+\sum…
https://vjudge.net/problem/CodeForces-914E 点分就没一道不卡常的? 卡常记录: 1.把不知道为什么设的(unordered_map)s换成了(int[])s 2.减少一次cal2和clr #pragma GCC optimize("Ofast") #include<cstdio> #include<algorithm> #include<cstring> #include<vector> usin…
((半个)智商题,主要难度在于实现) 题意:有一棵n个结点组成的树,其根是编号为1的结点.对于每一个结点,生成从根结点走到这个结点的路径(包括自身),选择路径上的一个点或者不选择任何点,使得其它点的最大公约数最大.每一个结点要分开考虑. 曾经错误做法: ans[x][0]表示走到x点不选择任何点的最大,ans[x][1]表示走到x点选择1个点的最大. ans[x][0]=gcd(ans[fa[x]][0],a[x]) ans[x][1]=max(ans[fa[x]][0],gcd(ans[fa[…
这个题有一个技巧:把颜色压到一个long long 上. #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespace std; typedef long long LL; LL lft[],c[]; vector<]; int n,m; ],lp[],rp[],len; void dfs(int u,int fa) { pp[++len]…
很好的思维 转化为对树上的深度差分 回朔的思想 对查询离线 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<string> #include<queue> #include<map> #include<set> #include<list> #include<ctime> #in…
题意: 给你一个区间[l,r],让你从小到大输出k^x,设y=k^x,要保证y在区间[l,r]中 题解: 就算k是最小的2也不需要枚举多少次就到long long的极限了,所以暴力没商量,根本不会TLE 然后就是爆long long处理,比如r特别大,当k^x=<r但是k^(x+1)就爆long long了,这个要注意一下 代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #in…
[题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. 很明显可以点分治嘛,我们可以按照图上的样子,把一条路径本来是\(12345678\)的路径,变成\(1234|5678\),我们记录图中左边的那种路径为\(f\)(往根),右边的那种路径为\(g\)(从根),记右边的那种到分治中心的深度为\(d\),那么这条路径就可以被表示成\(f\times 1…
读入挂 inline void read(int &v) { v = ; ; ; ') { if (c == '-') { p = -; } c = getchar(); } ') { v = (v << ) + (v << ) + c - '; c = getchar(); } v *= p; } 基本模板 离线: /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a))…
A - Lake Counting POJ - 2386 最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式 B - Paint it really, really dark gray CodeForces - 717E dfs 待会写题解 C - New Year Transportation CodeForces - 500A 简单的模拟 D - Binary Tree Traversals HDU - 1710 给树的先序中序输出后序 贴下代码 #include <algorith…
A - Jzzhu and Cities CodeForces - 449B 题意:n座城市,m条路,k条铁路啥的吧,然后要求最多能删多少条铁路保持1到$n$的最短路不变. 思路:因为铁路是从1出发的.所以能删的铁路有该铁路长度不等于1到该节点的最短路的,相等的时候,如果该节点的入度非1,也可以删去. #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #in…
Darth Vader and Tree CodeForces - 514E When Darth Vader gets bored, he sits down on the sofa, closes his eyes and thinks of an infinite rooted tree where each node has exactly n sons, at that for each node, the distance between it an its i-th left ch…
On Changing Tree CodeForces - 396C You are given a rooted tree consisting of n vertices numbered from 1 to n. The root of the tree is a vertex number 1. Initially all vertices contain number 0. Then come q queries, each query has one of the two types…
E. Anton and Tree time limit per test: 3 seconds memory limit per test :256 megabytes input:standard input output: standard output Anton is growing a tree in his garden. In case you forgot, the tree is a connected acyclic undirected graph. There are …
题目链接:http://codeforces.com/contest/620/problem/E E. New Year Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output The New Year holidays are over, but Resha doesn't want to throw away the N…
B. Alyona and a tree 题目连接: http://codeforces.com/contest/739/problem/B Description Alyona has a tree with n vertices. The root of the tree is the vertex 1. In each vertex Alyona wrote an positive integer, in the vertex i she wrote ai. Moreover, the g…