Luogu5298 [PKUWC2018]Minimax】的更多相关文章

太久没写博客了,过来水一发. 题目链接:洛谷 首先我们想到,考虑每个叶节点的权值为根节点权值的概率.首先要将叶节点权值离散化. 假设现在是$x$节点,令$f_i,g_i$分别表示左/右节点的权值$=i$的概率. 若$w_x$来自于左儿子,则 $$P(w_x=i)=f_i*(p_x*\sum_{j=1}^{i-1}g_j+(1-p)*\sum_{j=i+1}^mg_j)$$ 右儿子也是一样的. 所以在转移的时候需要顺便维护$f,g$的前/后缀和. 但是我们发现这样直接跑是$O(n^2)$的,肯定不…
BZOJ5461: [PKUWC2018]Minimax https://lydsy.com/JudgeOnline/problem.php?id=5461 分析: 写出\(dp\)式子:$ f[x][i] = sum f[ls][i]\times p\times sum1[rs][j](i>j) + f[ls][i]\times (1-p)\times sum2[rs][j](i<j)$ 这玩意能用线段树合并优化. 具体地,我们考虑线段树上维护答案,那么对于合并过程中\(x,y\)两课子树,…
Problem loj2537 Solution pkuwc2018最水的一题,要死要活调了一个多小时(1h59min) 我写这题不是因为它有多好,而是为了保持pkuwc2018的队形,与这题类似的有一个好玩得多的题 由于答案的形式和期望相去甚远,所以可以肯定这题和期望无关,而且这么复杂的式子我们最好还是把所有可能计算出来啦 可以肯定地说这题是从叶子向根合并,合并时分类讨论下取最大\((p)\)还是最小\((1-p)\),然后维护前后缀概率和即可 再瞟一眼数据,发现线段树合并可以解决,完结 Co…
Description 给定一棵 \(n\) 个节点的树,每个节点最多有两个子节点. 如果 \(x\) 是叶子,则给定 \(x\) 的权值:否则,它的权值有 \(p_x\) 的概率是它子节点中权值的较大值,\(1-p_x\) 的概率是它子节点中权值的较小值.保证叶子结点权值互不相同. 求根节点所有可能的权值的概率.模 \(998244353\). Solution 嗯比较自然的一道题. 设 \(f_{i,x}\) 为结点 \(i\) 权值为 \(x\) 的概率,\(l,r\) 分别是点 \(i\…
BZOJ LOJ 令\(f[i][j]\)表示以\(i\)为根的子树,权值\(j\)作为根节点的概率. 设\(i\)的两棵子树分别为\(x,y\),记\(p_a\)表示\(f[x][a]\),\(p_a'\)表示\(f[y][a]\),\(P_i\)表示给定的\(i\)取最大值作为权值的概率. 转移就是两棵树之间的权值组合,即以\(x\)子树中的\(a\)作为最小值的概率为\(p_a\times\sum\limits_{v>a}p_v'\times(1-P_i)\),以\(x\)子树中的\(a\…
传送门 题意:自己去看 首先可以知道,每一个点都有几率被选到,所以$i$与$V_i$的关系是确定了的. 所以我们只需要考虑每一个值的取到的概率. 很容易设计出一个$DP$:设$f_{i,j}$为在第$i$个点取到权值第$j$小的点的概率,转移就是$f_{i,j}=f_{lson,j} \times (\sum \limits _{k<i} f_{rson,k} \times p_x + \sum \limits _{k > i} f_{rson,k} \times (1 - p_x))$($l…
https://loj.ac/problem/2537 参考了本题在网上能找到的为数不多的题解. 以及我眼睛瞎没看到需要离散化,还有不开longlong见祖宗. ———————————————————————————— 思考一下不难发现,我们的操作相当于对两个数集进行合并,并且重新更新每个数被取到的期望. 权值线段树可以帮我们实现这个功能(当然是要动态开点了). 然后就思考线段树的合并操作了,orz可我不会啊. 设我们期望让左儿子的数字u成为其父亲的权值,其父亲选最大值的概率为k,u在右儿子数集…
还是没有弄清楚线段树合并的时间复杂度是怎么保证的,就当是$O(m\log n)$吧. 这题有一个显然的DP,dp[i][j]表示节点i的值为j的概率,转移时维护前缀后缀和,将4项加起来就好了. 这个感觉已经很难做到比$O(n^2)$更优的复杂度了,但我们要看到题目里有什么条件没用上:每个节点最多有2个儿子. 这个提醒我们可以用启发式合并,据说splay可以做,但我们可以考虑一下线段树合并做法. 仍然采用上面的转移方程,这里线段树上的一个节点T[x]表示x表示的区间[L,R]最终成为当前子树的根的…
点此看题面 大致题意: 有一棵树,给出每个叶节点的点权(互不相同),非叶节点\(x\)至多有两个子节点,且其点权有\(p_x\)的概率是子节点点权较大值,有\(1-p_x\)的概率是子节点点权较小值.假设根节点\(1\)号节点的点权有\(m\)种可能性,其中权值第\(i\)小的可能点权是\(V_i\),可能性为\(D_i\),求\(\sum_{i=1}^mi\cdot V_i\cdot D_i^2\). 前言 好妙的题目,像我这种蒟蒻根本想不到线段树合并还可以这么玩. 同时,在无数个地方漏掉\(…
好劲的题目啊,根本没往线段树合并方面去想啊 首先每种权值都有可能出现,因此我们先排个序然后一个一个求概率 由于此时数的值域变成\([1,m]\)(离散以后),我们可以设一个DP:\(f_{x,i}\)表示节点\(x\)的权值为\(i\)的概率 转移的话分\(x\)有几个子节点讨论,若没有或是只有一个都是随便转移的 考虑如果有两个,记为\(lc\)和\(rc\),显然我们可以列出转移方程(此时\(i\)在左儿子中,右儿子同理): \[f_{x,i}=f_{lc,i}\times(p_x\times…
题目链接 LOJ:https://loj.ac/problem/2537 洛谷:https://www.luogu.org/problemnew/show/P5298 Solution 不定期诈尸 好久没敲代码了犯了好多sb错误 考虑一个暴力的\(dp\),首先这题只用到了权值的大小关系,所以我们先离散化,设\(f_{x,i}\)表示\(x\)点权值为\(i\)的概率. 转移很显然: \[ f_{x,i}=f_{ls,i}\left(\sum_{j=1}^{i-1}p_x\cdot f_{rs,…
好妙的一个题- 我们设 \(f_{i,j}\) 为 \(i\) 节点出现 \(j\) 的概率 设 \(l = ch[i][0] , r = ch[i][1]\) 即左儿子右儿子 设 \(m\) 为叶子结点的个数 显然,\(i\) 出现 \(j\) 的概率为 \[f_{i,j} = f_{l,j} * (p_i \sum_{k=1}^{j-1}f_{r,k} + (1-p_i)\sum_{k=j+1}^{m}f_{r,k}) + f_{r,j} * (p_i \sum_{k=1}^{j-1}f_{…
根据题意,若一个点有子节点,则给出权值:否则可以从子节点转移得来. 若没有子节点,则直接给出权值: 若只有一个子节点,则概率情况与该子节点完全相同: 若有两个子节点,则需要从两个子节点中进行转移. 如何转移?显然,若权值 $i$ 在左子树,要取到它,需要在 $p_i$ 的概率中左子树较大,在 $(1-p_i)$ 的概率中左子树较小,右子树同理.因为当权值 $i$ 在左子树时右子树取到它的概率为 $0$ ,因此可以直接将两个子树的转移式相加合并,没有影响.即: 设节点 $x$ 取到权值 $i$ 的…
(总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZOJ3786]星系探索(伪ETT) [BZOJ4337][BJOI2015]树的同构(树的最小表示法) [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树) [CTSC2017]游戏(Bayes定理,线段树) 4.19 [CTSC2017]吉夫特(Lucas定…
PKUWC&SC 2018 刷题记录 minimax 线段树合并的题,似乎并不依赖于二叉树. 之前写的草率的题解在这里:PKUWC2018 minimax Slay the Spire 注意到强化牌的强化倍数都是大于\(1\)的正整数,所以可以发现能强化就尽量强化. 用\(F(x,y)\)表示强化牌抽\(x\)张打出\(y\)张的倍率之和 用\(G(x,y)\)表示攻击牌抽\(x\)张打出\(y\)张的攻击之和 那么我们枚举抽了多少张攻击牌,在利用以上两个函数就可以算出答案了. 至于怎么计算那两…
整体DP 很明显计算答案需要用容斥计算,如果暴力容斥的话,就是枚举哪些路径不符合条件,在这些路径的并集中的边都不能取,其他边任意取,设当前取了$i$条路径,那么对答案的贡献是$(-1)^i2^{n-1-Union}$ 但是可以发现这个路径是自下往上的,可以考虑树形DP,设$dp[i][j][k]$表示在i的子树内,已选$k$条路径的上面那个端点的深度的最小值为$j$的方案数,特别的如果在这个子树内不选任何一条路径的话,$j$为$maxde$ 但其实在容斥的时候,我们并不关心这个$k$的具体取值,…
题目链接 loj#2537. 「PKUWC2018」Minimax 题解 设\(f_{u,i}\)表示选取i的概率,l为u的左子节点,r为u的子节点 $f_{u,i} = f_{l,i}(p \sum_{j < i} + (1 - p)\sum_{j > i}f_{r,j}) + f_{r,i}(p\sum_{j < i}f_{l,i} + (1 - p)\sum_{j > i}f_{l,j}) $ 对于每个节点s维护当前节点所有可能的概率和 ,线段树合并 代码 #include&…
LINK 思路 首先暴力\(n^2\)是很好想的,就是把当前节点概率按照权值大小做前缀和和后缀和然后对于每一个值直接在另一个子树里面算出贡献和就可以了,注意乘上选最大的概率是小于当前权值的部分,选最小是大于当前权值的部分 然后考虑怎么优化 用线段树合并来做 每次向左递归的时候就把x右子树对y左子树的贡献加上,把y右子树对x左子树的贡献加上 每次向左递归的时候就把x左子树对y右子树的贡献加上,把y左子树对x右子树的贡献加上 考虑每个节点,左边的区间贡献一定会被统计完全,右边的区间贡献一定会被统计完…
题目链接 loj2537 题解 观察题目的式子似乎没有什么意义,我们考虑计算出每一种权值的概率 先离散化一下权值 显然可以设一个\(dp\),设\(f[i][j]\)表示\(i\)节点权值为\(j\)的概率 如果\(i\)是叶节点显然 如果\(i\)只有一个儿子直接继承即可 如果\(i\)有两个儿子,对于儿子\(x\),设另一个儿子为\(y\) 则有 \[f[i][j] += f[x][j](1 - p_i)\sum\limits_{k > j}f[r][k] + f[x][j]p_i\sum\…
题解 加法没写取模然后gg了QwQ,de了半天 思想还是比较自然的,线段树合并的维护方法我是真的很少写,然后没想到 很显然,我们有个很愉快的想法是,对于每个节点枚举它所有的叶子节点,对于一个叶子节点的值为v,然后查询另一棵树小于v的概率和×该节点的p + 大于v的概率和 × 该节点的(1 - p),作为这个v新的概率 我们用线段树合并优化这个操作,我们对于两个树的左右儿子计算四个值 分别是 对于第一棵树的左区间,计算第二棵树的右区间的影响,是第二棵树右区间的概率和×(1 - p) 对于第一棵树的…
题面 题解 强势安利一波巨佬的$blog$ 线段树合并吼题啊 合并的时候要记一下$A$点权值小于$l$的概率和$A$点权值大于$r$的概率,对$B$点同样做 时空复杂度$\text O(nlogw)$,$w$为其中权值的最大值 代码 #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #define RG register #define file(x) freope…
传送门 思路 首先有一个\(O(n^2)\)的简单DP:设\(dp_{x,w}\)为\(x\)的权值为\(w\)的概率. 假设\(w\)来自\(v1\)的子树,那么有 \[ dp_{x,w}=dp_{v1,w}\times (p\times \sum_{w'>w}dp_{v2,w'}+(1-p)\sum_{w'<w}dp_{v2,w'}) \] 其中\(p\)表示\(x\)选较小权值的概率. 由于每个点的状态数只有子树中的叶子个数,可以考虑线段树合并来优化这一DP过程. merge(k1,k2…
总结: D1T1T2的思路较为好想,D1T3考试时估计是战略放弃的对象,D2T1思路容易卡在优化状态上(虽然明显3n的状态中有很多无用状态,从而想到子集最优,选择子集最优容易发现反例,从而考虑连带周边一起考虑,去年考场上想出来的,今年却想不出来***)但50十分容易,D2T2的式子超出目前水平(多项式的式子推法需要继续加强),D2T3在学过MinMax容斥以及树上高斯消元(好像还需要FWT)后较为简单,目前水平在250-380中来回飘荡,感觉pkuwc2019要完. loj#2537. 「PKU…
「PKUWC2018/PKUSC2018」试题选做 最近还没想好报THUSC还是PKUSC,THU发我的三类约(再来一瓶)不知道要不要用,甚至不知道营还办不办,协议还有没有用.所以这些事情就暂时先不管了,PKU的题还是不错的,就刷一刷划水.因为比较简单,所以就不单独写博客了. loj2537 Minimax 数据结构题,两个 \(\log\) 直接启发式合并,一个 \(\log\) 需要转移的时候多维护一些东西. 对于每个节点维护一下选择其子树里每个叶子的权值的概率,线段树合并转移即可. cod…
[题解]PKUWC2018简要题解 Minimax 定义结点x的权值为: 1.若x没有子结点,那么它的权值会在输入里给出,保证这类点中每个结点的权值互不相同. 2.若x有子结点,那么它的权值有p的概率是它的子结点的权值的最大值,有1-p的概率是它的子结点的权值的最小值. 1号点权值第i小的可能性的权值是\(V_i\),它的概率为 ,求: \[ \sum i V_iD_i^2 \] \(n\le 3e5\) 先离散化一下所有叶子节点的值,然后考虑一个DP \(dp(i,j)\)表示在\(i\)点权…
目录 题面 题解 代码 Reference 题面 LOJ #2537 / 洛谷 P5298 「PKUWC2018」Minimax 一棵有根二叉树 \(\mathcal T\) . 定义结点 \(x\) 的权值为: 若 \(x\) 是叶子,则权值在输入中给出(叶子权值各不相同) 若不然,则有 \(p_x\) 的概率是其子节点权值最大值,\(1-p_x\) 的概率是其子节点权值最小值 . 假设 \(1\) 号结点的权值有 \(m\) 种可能性,权值第 \(i\) 小的可能性的权值是 \(V_i\),…
传送门 Sherlock and MiniMax Authored by darkshadows on May 07 2014 Problem Statement Watson gives Sherlock an array $A_1,A_2\cdots A_N$. He asks him to find an integer $M$ between $P$ and $Q$ (both inclusive), such that,$\min \{|A_i-M|, 1\le i\le N\}$ i…
option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4077&mosmsg=Submission+received+with+ID+13588936">题目链接:uva 1331 - Minimax Triangulation 题目大意:依照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求…
1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputing-001/wiki/view? page=trees 1.2 CODE无parent域的树 http://www.codeskulptor.org/#poc_tree.py class Tree: """ Recursive definition for trees plus…
PKUWC2018游记 Day -inf 从去年的12月底开始停课,到现在也有整整一个月的时间了. 前两周考的是OI赛制,后来就变成了IOI赛制. 整体上考的很炸,虐场的次数远少于被虐的次数. 关于去哪个WC的问题,谢总一天神神秘秘地找到我问我想去THU还是PKU.我说无所谓啊.然后谢总就跟我说,我给你一个PKUWC的名额啊. 所以yyb和ppl就被钦定去了THUWC,他们两个真是太强辣! Day -3 晚上搞个一次模拟面试. (中间省略一段不可描述的过程...) 然后就被谢总要求写一个稿子.谢…