CF1140G Double Tree】的更多相关文章

题解 首先如果我们要确定出每个\(dis_{i \to i+1 , i \in odd}\) 这个可以用两遍树形\(DP\)来解决 一遍是考虑走子树子树绕过来的 一遍是考虑从走祖先绕过来的 然后就可以考虑用倍增来解决了 设\(st1[u][i][0/1][0/1]\)表示从点\(u\)开始向上跳\(2^j\)步,开始的位置位于左/右边的树,结束的位置位于左/右边的树 倍增的时候就用两个数组\(dp1[0/1]/dp2[0/1]\)表示从\(u/v\)到左/右边树的\(LCA\) 不断往上跳着更新…
刚开始, 我以为两个点肯定是通过树上最短路径过去的, 无非是在两棵树之间来回切换, 这个可以用倍增 + dp 去维护它. 但是后来又发现, 它可以不通过树上最短路径过去, 我们考虑这样一种情况, 起点在奇树里面, 终点在偶树里面, 然后这两个点最短路径里面点到对应点的距离都很大, 这种情况下我们就需要从别的地方绕过去, 这样 就不是走树上最短路径了, 但是如果我们将对应点的距离更新成最短距离, 上面这个倍增 + dp的方法就可行了, 所以 我们可以用最短路去更新对应点之间的距离, 将它变成最小值…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定两棵 N 个点的树,以及树上每条边的权值 w(u, v),每个点的初始点权 val(u). 有 Q 次操作.每次操作更改一个点的点权,请在每次操作后输出 \(\max_{1 \le u < v \le n}\{T_1.dis(u,v)+T_2.dis(u,v)+val(u)+val(v)\}\). Input 多组数据. 每组数据以 N, Q (2≤N≤10…
题意 有一颗高度为 \(h\) 的完全二叉树(即点数为 \(2^{h+1}-1\) ),有两种操作: add x y 给 \(x\) 点的权值加 \(y\) decay 一次衰变定义为选择一个叶子节点,断掉它到根的所有边,这样整个树会变成很多个连通块,一个连通块的权值是其中所有点的权值和:这个衰变的权值为这些连通块的权值中的最大值.这个操作要求输出随机选一个叶子进行衰变的期望权值.(衰变之间互不影响) \(h\le 30,q\le 10^5\) . 分析 一般这种完全二叉树都要利用其深度很小的性…
替罪羊树(Scapegoat Tree) 入门模板题 洛谷oj P3369 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入xx数 删除xx数(若有多个相同的数,因只删除一个) 查询xx数的排名(排名定义为比当前数小的数的个数+1+1.若有多个相同的数,因输出最小的排名) 查询排名为xx的数 求xx的前驱(前驱定义为小于xx,且最大的数) 求xx的后继(后继定义为大于xx,且最小的数) 输入格式 第一行为n,表示操作的个数,下面n行每行有两个数opt和…
题目链接:Click here Solution: 看起来不太能dp,则考虑树上贪心 题目要求一个点必须先染父亲才能染自己,就给了我们启示,贪心的合并点 我们定义一个点的权重为这个点的价值和/点数,然后贪心的选择权重最大的点加入到答案,合并到他的父亲 值得注意的是加入到答案的过程为加上这个点的价值和\(\times\)父亲节点的点数,因为这代表在他之前染色的点数 Code: #include<cstdio> #include<cstring> #include<algorit…
题意:有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名. 给了其中一个人的所有比赛的名次.求这个人最终排名的期望. 思路: 渣渣的第一道概率DP...弱渣. dp[i][j]代表进行了i轮比赛之后得分为j的人数的期望,可以知道dp[i][j]来自于dp[i-1][j-m...j-1]的期望的人数乘以概率.这里就是前缀和,用树状数组进行优化... 但是要注意,转移的时候一定要排除已经知道的名次的影响,不能用已知名次来转移...…
最近省队前联考被杭二成七南外什么的吊锤得布星,拿一场Div. 2恢复信心 然后Div.2 Rk3.Div. 1+Div. 2 Rk9,rating大涨200引起舒适 现在的Div. 2都怎么了,最难题难度都快接近3K了-- A. Detective Book 记\(a_i\)的前缀最大值为\(Max_i\),那么要求的就是\(Max_i = i\)的\(i\)的数量 #include<iostream> #include<cstdio> #include<cstdlib>…
#include<iostream> #include<vector> #include<cmath> #include<algorithm> using namespace std; #define y1 y11 #define ls rt<<1,l,m #define rs rt<<1|1,m+1,r ; double x1[maxn]; double y1[maxn]; double x2[maxn]; double y2[ma…
成段更新+离散化才能过,数据好强.. 单点更新挂在了test27,下次做到成段更新再来做! /* 期望=存活概率*点权值/100 ans=sum(期望) 离散化树木权值,数轴统计累加可能倒下的树木概率(直接加权值即可) 线段树单点,sum[rt]维护在这个区间中所有蘑菇的存活期望值 */ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namesp…
Semana i 2018 A Giga-Kilo-Gigabyte 思路: dp水题 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pi acos(-1.0) #define LL long long //#def…
一 树状图形状 Search里搜索Tree,找到Double Tree或者Multi Tree的形状 二 分出更多branch 按住主干上的黄色小方块,拖出更多分支. 三 等分分支 将每个分支和对应的形状连接在一起,现在分支位置是跟随形状移动了. 选择所有形状,中心对齐,水平均分,分支也均分了. 四 多于6个分支的情况 一个tree最多只能6个分支,如果多余6个的话,再增加一个tree,和第一个tree重叠在一起,第二个tree开辟第6个分支. 五 主干居中 最后还需要让那个主要位于所以分支的水…
由中国计算机学会(CCF)主办的2019全国青少年信息学奥林匹克冬令营(CCF NOI 2019冬令营)将于2019年1月24日-31日在广州市第二中学举行.其中1月24日为报到日,1月31日为疏散日. 现将相关事项通知如下: 报到时间:2019年1月24日8:00-18:00 报到地点:广州市第二中学高中部(广东省广州市黄埔区科学城水西路11号) 一.冬令营培训费 1.正式/非正式营员选手:2600元/人: 2.正式/非正式营员教师:2400元/人,CCF会员2000元/人: 3.超额选手每人…
题目链接:https://cn.vjudge.net/problem/HDU-1542 题目大意:求面积并 具体思路:我们首先把矩形分割成一横条一横条的,然后对于每一个我们给定的矩形,我们将储存两个点,一个是左下角,一个是右上角.对于左下角的点,我们将他标记为-1,对于右上角的点,我们把它标记成1,-1代表这块区域的面积是需要减去的,1代表这块区域的面积是需要加上的,然后我们通过扫描线的形式,从y轴从下往上扫就可以了. 离散化的过程,数组还是尽量从0开始吧,因为在更新的过程中会出现0的情况,如果…
1.算法简介 算法的原始论文 http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf .python的sklearn中已经实现了相关的api,对于单机的数据已经足够使用了,链接如下 http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html .如果你想探究分布式下该算法怎么实现,下面细看. 按照惯例先讲一下算法…
题目链接:https://www.luogu.org/problemnew/show/SP2713 真暴力啊. 开方你开就是了,开上6次就都没了. #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define ll long long using namespace std; const int maxn…
题意:\(n\)个赌场,每个赌场有\(p_{i}\)的胜率,如果赢了就走到下一个赌场,输了就退回上一个赌场,规定\(1\)号赌场的上一个是\(0\)号赌场,\(n\)号赌场的下一个是\(n + 1\)号赌场,一旦到达\(0\)或\(n + 1\)号赌场就相当于退出赌局了. 定义统治区间\([l, r]\)为从第\(l\)个赌场开始,到达第\(r + 1\)个赌场,且在过程中不经过\([1, l - 1]\)的赌场.维护2种操作: 1,修改一个赌场的胜率 2,询问统治\([l, r]\)的概率 题…
Creating an generated Earth AVI with C++        EarthGenerator.cpp /*    EarthGenerator.cpp An example on how to use AviMemDC.cpp Copyright (c) 1998-2003 Torben AE. Mogensen   Copyright (c) 2004,2005 René Nyffenegger All algorithms and source code pe…
题意:求AC率,x/y 的最小值,x是区间数字的种类数,y是区间的长度. 分析: 二分答案比率.ans, 动态插入结点,一些区间的size会发生变化,是那些前面暂时没有新的结点的区间 size + 1. ans*l,每一个区间只有一个ans*l,只与 l 相关,线段树单点更新. 用线段树维护区间的最小值.最小值小于 ans,二分左移. #include <bits/stdc++.h> using namespace std; ; ; int a[maxn]; int last[maxn]; ]…
E - Little Elephant and Shifts 思路: 一次函数线段树(疯狂debug): b不断循环左移,判断每次最小的|i-j|,a[i]=b[j]: 仔细观察发现,每个bi移动时,|i-j|呈现多个一次函数图像: 所以用线段树来维护这些一次函数图像: 线段树维护一次函数,当两个函数在区间没有交点时: 判断哪个在图像较下的位置,然后覆盖: 当有交点时,保留最优,将另一条传下去: 时间复杂度O(nlog^2n); 代码: #include <cmath> #include &l…
题目链接 我脑子怕不是有坑qwqqq 用前缀和思想,dis[i]表示i离根的距离,那么修改操作其实是对x的子树区间加y/dis[x],查询的时候*dis[to]即可. 对付/0错的思路是建森林,然而这个地方我犯蠢了. qwq. #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cctype> #include<cmath>…
p.s. 复合函数求导时千万不能先带值,再求导. 一定要先将符合函数按照求导的规则展开,再带值. 设 $f(x)=g(h(x))$,则对 $f(x)$ 求导: $f'(x)=h'(x)g'(h(x))$ 此题中,我们用 LCT 维护 $x^{i}$ 前的系数和,每次询问时将一条链的系数和提出,将 $x$ 带入其前 15 项即可. Code: #include<bits/stdc++.h> using namespace std; #define maxn 500000 #define M 17…
题意:有n棵树在水平线上,给出每棵树的坐标和高度,然后向左倒的概率和向右倒的概率,和为1,然后给出了m个蘑菇的位置,每一个蘑菇都有一个魔法值,假设蘑菇被压死了,也就是在某棵树[a[i] - h[i], a[i]) 或 (a[i], a[i] + h[i]]范围内.魔法值就没有了.仅仅有生存下来的蘑菇才有魔法值,问生存下来的蘑菇的魔法值的期望. 题解:能够看到n和m的范围是1e5.而坐标范围是1e9.所以肯定要离散化,然后更新每一个区间的概率值,单点查询每一个蘑菇所在区间的概率值乘其魔法值. #i…
Solved Pro.ID Title Ratio(Accepted / Submitted)   1001 Another Chess Problem 8.33%(1/12)   1002 Beauty Of Unimodal Sequence 19.07%(74/388)   1003 Coefficient 6.76%(5/74)   1004 Double Tree 0.00%(0/20)   1005 Everything Is Generated In Equal Probabili…
2019 Multi-University Training Contest 2 A. Another Chess Problem B. Beauty Of Unimodal Sequence 题意 给一个序列,求下标字典序最小和字典序最大的,先增后减的序列. 解体过程 比赛时首先不知道字典序最小LIS怎么求. 试图枚举分界点.[解体的开始] 公无渡河,公竟渡河? 活鱼在摸鱼,rdc在划水,sdcgvhgj在水深火热. 做法 考虑字典序最小的LIS怎么求? 这是个经典问题,预处理前缀LIS后缀L…
一.树的一些概念 树,子树,节点,叶子(终端节点),分支节点(分终端节点): 节点的度表示该节点拥有的子树个数,树的度是树内各节点度的最大值: 子节点(孩子),父节点(双亲),兄弟节点,祖先,子孙,堂兄弟,深度或高度: 森林是指若干棵或不相交的树,对于树中的每个节点,其子树的集合即为森林: 二叉树,满二叉树: 完全二叉树指一个深度为k的二叉树,它的每个节点的编号都与深度为k的满二叉树节点一一对应.例如: 而下图则不是完全二叉树 因为它的第六个节点对应满二叉树的第七个节点. 二.BST的实现及遍历…
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6070 (2017 Multi-University Training Contest - Team 4 - 1004) 解 二分答案 check时,要满足distinct(l,r)/(r-l+1)<val ,将这个不等式转化为distinct(l,r)+val*l<val*(r+1) check的时候,从左到右枚举右端点r,用线段树维护查询从1到r中选一个l,distinct(l,r)+val*…
[NOI2004]郁闷的出纳员 题目链接 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心情好,就可能把每位员工的工资加上一个相同的量.反之,如果心情不好,就可能把他们的工资扣除一个相同的量.我真不知道除了调工资他还做什么其它事情. 工资的频繁调整很让员工反感,尤其是集体扣除工资的时候,一旦某位员工发现自己的工资已经低于了合同规定的工资…
Desctiption 传送门:Portal 大致题意: 给你一个序列, 支持两种操作: 1 l1 r1 l2 y2 在\([l1, r1]\)随机选择一个数a, \([l2, r2]\) 内随机选择一个数b, 交换a, b. 2 l r 询问一个区间的期望. \[ n \leq 200000; a_i \leq 1e9 \] Solution 根据==期望线性性==,只需要维护出==每个位置元素值的期望==就可以. ==区间操作期望==问题的经典套路是==维护出每个位置的期望==. 考虑一个数…
/*怎么理解排序二叉树呢?在二叉树的基本定义上增加两个基本条件: (1)所有左子树的节点数值都小于此节点的数值: (2)所有右节点的数值都大于此节点的数值. */ 1 /************************头文件部分**************************/ 2 /******************************************************** 3 filename :tree_head.h 4 time :2013-11-13 5 cop…