HZOI2019熟练剖分(tree)】的更多相关文章

题目大意:https://www.cnblogs.com/Juve/articles/11186805.html 题解: 先给出官方题解: 其实这题跟期望没什么关系,因为E=$\sum_\limits{x=0}^{+\infty}$p(x)*x,所以我们只要求出轻链最多为 i 的概率就行了.以下把题面所求的精彩操作称为最长轻链.而这个东西显然是可以由子节点转移到父亲节点的.F[i][j]表示在点 i 为根的子树中,向下最长轻链长度为 j 的概率.对于一个点,先枚举它选择的重儿子是谁,然后扫一遍它…
熟练剖分(tree) 树形DP 题目描述 题目传送门 分析 我们设\(f[i][j]\)为以\(i\)为根节点的子树中最坏时间复杂度小于等于\(j\)的概率 设\(g[i][j]\)为当前扫到的以\(i\)为父亲节点的所有儿子最坏时间复杂度小于等于\(j\)的概率之和 因为每遍历到一个新的节点,原来的\(g\)数组中的值就要全部更新,因此我们压掉第一维 下面我们考虑转移 对于当前枚举到的某一个节点,我们用三重循环分别扫一边 第一重循环代表当前哪一个节点充当重儿子,第二重循环枚举所有儿子,第三充循…
考场 \(65+5+0\),并列 rk2 最高分 \(55+10+10\) T1:等比数列可以写作 \(q^kx\),发现 \(q\le1000\) 且有一档分为 \(a_i\le100\),想到 \(2^{60}>10^{18}\),即等比数列的长度最多为 \(59\),这样枚举的区间就从 \(n^2\) 下降到了 \(60n\).对于每个区间,排序后枚举 \(q\),通过预处理 \(q\) 的次幂大力剪枝,复杂度不明.写了很久,最终有RE有TLE. T3:虽然以前学过欧拉路,但之后再没写过,…
一道概率神题,考试时没读清题考完看了学长的玄学题解看了好几个小时 首先f[i][j]表示在点 i 为根的子树中,向下最长轻链长度小于等于 j 的概率. 首先递归下去并求出子树大小,然后枚举重儿子,枚举该点最长轻链长度,再次枚举儿子节点并逐个 假设当前枚举的重儿子是to1,枚举到儿子节点to2,x最长轻链长度为k,设gs为v(to2)之前考虑的儿子中最长轻链长度为k的概率如果v(to1)=v(to2)即v(to2)为重儿子,则设fs为以v(to2)为根的子树最长轻链长度为k的概率: h[k]=(f…
---恢复内容开始--- 序列 刚调出来样例就A了,假装是水题. 因为是乱序,我们要求出来每两项之间最小公比,而不是直接比 求出来每两项之间最小公比,然后扫一遍就完了.(还要注意重复情况) 那么问题就转化成了怎么求最小公比. 完了 以下是本人丑陋的代码 #include<bits/stdc++.h> #define ll long long #define A 100000 using namespace std; ll n,a[10*A],tot=0,maxlen[10*A],nowlen=…
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2758 题意:平面上有n个多边形(凸包和圆).任意两个多边形AB只有两种关系:(1)A包含B或者B包含A:(2)AB的公共面积为0.每个多边形有一个值x.m个查询.分两种:(1)修改某个多边形的值:(2)从一点s走到另一点t.每次走出一个多边形或者进入一个多边形时,都要抑或上该多边形的值.输出走到t时的值.(由抑或的性质和本题定义可得这个值跟走的路经无关) 思路:首先我们发现,这些…
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3672 题意:给出一棵有根树(1为根),边有长度.每个点u有三个属性(len[u],p[u],q[u]),每次u可以转移到u的某个祖先节点v(v满足dist(u,v)<=len[u]),代价为p[u]*dist(u,v)+q[u].求每个点都转移到1的代价. 思路:首先设f[u]表示u转移到1的最小代价,那么我们可以得到一个DP方程: f[u]=min(f[v]+p[u]*(s[u…
这题真的神仙,蒟弱表示看题解看不懂……std看了几个小时大概看懂,还有一些细节的东西没有思考. 最难受的是题解和std好像并不是同一个人写的……数组状态不一样……看了好久才看出来f也是前缀和. F[i][j]表示在点 i 为根的子树中,向下最长轻链长度小于等于 j 的概率. 首先递归下去并求出子树大小,然后枚举重儿子,枚举该点最长轻链长度,再次枚举儿子节点并逐个考虑(感觉和概率充电器(特地从考试总结中搬出来了)那个题有点类似), 假设当前枚举的重儿子是v(i),枚举到儿子节点v(j),x最长轻链…
\(dis[u] \bigoplus dis[v] = dis[u] \bigoplus dis[v] \bigoplus dis[lca\{x,y\}] \bigoplus dis[lca\{x,y\}]\) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(reg…
刚调完了一个非常恶心的题(可能是我写的太恶心了),心累……先写会博客吧. 今天上午该完了考试的三道题,感觉第二道真的是个好题(学长说是经常会遇到的一类题……完了完了),看了一个小时std才看懂,写了篇博客. 下午好颓啊,先是学长讲课,讲tarjan的正确性及一些细节证明(正确性不是显然的吗???),搞懂了dfn和low的区别,然后学长留了三道和T2类似的题,我先看的第一道,并没有思路mikufun飞快的想出来了这道题并且说这是模板……(mikufun‘s COW),我没思路就去想第二题,还是挺好…