「考试」糊涂图

不知道为啥达哥说简单。。。。。。

考场上打了俩小时啥也没写出来导致崩盘了。

但是真的是好题啊。

要求在$NIM\ DAG$上随意加一条边,这条边只能走一次,求$Nim$博弈的胜率最大值和平均值。

考虑求出两个数组$dp[i]$和$g[i][0/1]$

$dp[i]$表示到达的地方是$i$的情况下不论是谁的胜率。

$g[i][0/1]$表示到达的点是$i$的情况下,当前要走的人是达哥/B哥的概率。

两个数组都很好求,第一个反向拓扑即可,叶子节点都为0。

$$dp[t]+=\frac{(1-dp[x])}{d[t]}$$

第二个正向拓扑即可,初始化$g[st][0]=1$。

$$g[t][l]+=\frac{g[x][l^1]}{d[x]}$$

然后可爱的达哥又保证了所有的边$(a,b)$都保证$a<b$那么拓扑序就是$1-n$,直接循环即可。

考虑统计答案。

假设当前链接的两个点是$i,j$的话,如果我们不经过$i$点的话。

胜率是:

$$dp[st]g[st][0]-dp[i]g[i][0]-(1-dp[i])g[i][1]$$。

如果经过呢?

就有点麻烦了。

分开考虑贡献即可。

设$F[i][j]$为走$i$点,不论是谁的胜率。

那么:

$$F[i][j]=dp[i]\frac{d[i]}{d[i]+1}+(1-dp[j])\frac{1}{d[i]+1}$$

那么胜率是:

$$g[i][0]F[i][j]+g[i][1](1-F[i][j])$$

那么:

$$ans[i][j]=dp[st]g[st][0]-dp[i]g[i][0]-(1-dp[i])g[i][1]+g[i][0]F[i][j]+g[i][1](1-F[i][j])$$

首先考虑求最大值。

我们发现对于某一个$i$来说,除了$j$的部分其余贡献都是确定了的,确定最值只在于$F[i][j]$,枚举$j$复杂度又太高,但是发现$F[i][j]$的最值只和$dp[j]$有关,那么我们用一个$set$维护最值即可,可以$logn$查询出对于每个$i$的最优决策。

再考虑求和。

化一下式子就可以求出每个$i$的贡献。

$$\begin{array}{rcl}\\Su&=&\sum\limits_{i=1}^{n}ans[i]\\&=&\sum\limits_{i=1}^{n}\left(\ (n-1)(dp[st]g[st][0]-dp[i]g[i][0]-(1-dp[i])g[i][1])+g[i][0]f[i]+g[i][1](1-f[i])\ \right)\end{array}$$

$$f[i]=\sum\limits_{j=1}^{n}[i!=j]F[i][j]$$

对于每个$j$求个和即可。

这样平均值也解决了。

原文地址:https://www.cnblogs.com/Lrefrain/p/11702747.html

时间: 2024-08-30 17:47:29

「考试」糊涂图的相关文章

「考试」图论专测1

挺懵的... T1 实际上不难. 发现对于同一条边来说. 我们的答案关于我们取得点在这个边上的位置是一个单谷函数,因为两侧取max. 然后直接三分边上所在的位置. check的时候首先用随便什么最短路处理出每个点之间互相的距离即可求值了. T2 很棒的二进制分组. 我们把这种满足要求的路径拆成三段\(1->a->b->n\). 第一段:定向之后的\(1->a\)的最短路. 第二段:\(a->b\)之间不走任何最短路边的最短路. 第三段:定向之后的\(b->n\)的最短路

「考试」省选23

好难啊... T3 讲了一次了,不过似乎大家都没有听懂. 详细的复读一次. 这个题是构造题. 首先题意转化. 我们发现一个\(E\)的序列的形成过程中任意时刻的图都可以对应为一个大小为\(i\)大强连通分量和\(n-i\)个单独的点的形式. 因为只有一个强连通所能到达的状态是最多的,这样我们求出这种图的方案就是\(E\)序列的方案. 然后设\(dp[e][i]\)为大强联通有\(i\)个点,总共有\(e\)条边的方案数. 转移很简单,枚举一个新圈即可: \[dp[e][i]=dp[e-1][i]

「考试」省选61

T1 dy讲的原题. 建议去翻\(DC\)大神的\(dp\)视频课. T2 结论题. 一种想法是抽象为一个\(ans+1 n\)的矩阵. 每次从上面一段连续区间向底层走. 维护每一个位置最高的高度是多少就可以得到答案了. 这里用一个队列实现. 每一个位置的队列长度可以用来更新答案. T3 生成函数题. 考虑容斥. 用走了几条输入边来容斥. 设\(dp[i][s]\)为当前在\(i\)点,经过的点集为\(s\)的方案数. 设\(f[s]\)为经过的点集为\(s\)的方案数. 设\(g[i][s]\

「考试」weight

正解是树剖. 首先Kru求最小生成树. 然后分别考虑树边和非树边的答案. 首先是非树边,非树边链接的两个点在MST上能够构成一条链. 这条链上最大的那条边-1就是这条边的答案. 为什么. 模拟Kru的过程.如果这条边在树上那一条之前的话.这条边的起点和终点两个集合必然还没有链接. 因为之前那树上那一条断了树链就断了. 那么这条边会成为树边. 然后是树边. 树边的答案就更加浅显一点了,我们的非树边会威胁树边的地位. 也就是说在非树边可能到达某一个树边前面的话,这条边就会成为树边. 那么这条非树便就

「考试」小P的生成树

考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长度. 如果精度开到$1e-3$我们完全可以枚举最终的和向量的角度,因为只有在对角线,也就是正确的方向上,向量的模长才是最大的,所以也就是说即使枚举的角度不可构成,它得出的解也必然不是最优解. 但是精度开的很高,枚举复杂度过高了.(随机化角度就能A) 接着考虑对于某条向量有两种表达形式: 1.$(\a

「考试」老司机的狂欢

啊考场上没想到. 直接二分答案,然后$nlogn$求解最长上升序列来$check$是否大于$K$即可. 然后恶心的是要求输出方案,而且...字典序最小. 我们考虑二分出答案之后求出方案. $LIS$的过程其实类似于建树,我们要把当前的决策挂在当前树上某一深度的点中,字典序最小的方案下面. 那么当我们比较两个方案的时候,只需要求出他们在$LIS$树上的$LCA$,那么在$LCA$以上的部分完全相同,所以只需要比较他们在$LCA$一下的部分中最小值的大小,较小的更优,一边跑$LIS$一边跑倍增$LC

「考试」$5T$

啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,rc)}\binom{lc-1}{i-1}\binom{rc}{i}$$ 因为要固定一个来去重. 等价于: $$\sum\limits_{i=0}^{n}\binom{n}{i}\binom{m}{i}=\sum\limits_{i=0}^{n}\binom{n}{n-i}\binom{m}{i}$$

「考试」省选5

这套做的比较顺. 题也很好. T1 一个简单的贪心. 我们二分能够无伤通过的蛤个数. check就用之前用烂了的队列来check. 然后我们知道无伤通过最多一定对应这所有的石头被踩完,因为这样可以让每只蛤单次跳跃距离的最大值尽量的小. 这也就是说两种最优操作是合在一起的,有点像\(CSP-2019 D2T2\). 那么,二分出来剩下的就是必然要跳出大于\(D\)的了,我们取最小的几只,让他们一步从\(1\)跳过去. 另外一种情况是没有蛤可以无伤过. 这时候就让最便宜的那只去踩地雷,踩过所有的石头

「考试」省选7

比较简单的一场,但是我好像做的xibalan. 上来看了一小时题啥也不会. 然后发现\(T2\)数据范围像是分块. 然后傻逼一样去打根号算法. 最终结果当然是死了,到九点半也没写出来. 然而早就会\(T1\)正解了,于是先五分钟拿了\(T3\)的30分(为啥60那么好打..). 然后半个小时打完\(T1\)(临接表被卡常到90?) 然后继续搞T2最后弄出来了. 剩下十分钟啥也没干,三分块长从\(12s\)变成了\(2s\). T1 原题,\(xor\)差分之后就没了. T2 数据结构题毫无思维难