假期测试1~3
A. 猜拳游戏
题意:猜拳,已知B的决策概率,n局胜多者赢得一轮胜利,A比B多胜m1轮A最终胜利,反之亦然。求A最优决策下最终胜利的概率。
首先每一轮B的决策相同,如果我们能求出每一轮B胜的概率就可以用高斯消元出解了。
设一轮A赢的概率为p,B赢的概率为r。
发现平局的情况很麻烦,但对局面没有影响。
修改一轮的定义为双方不断游戏直到某方得分的过程。
那么此时A赢得一轮的概率\(q\)为\(\frac{p}{p+r}\)
此时目标是求出且最大化\(q\)
可以变换\(q=1-\frac{1}{1+\frac{p}{r}}\)
设\(k=\frac{p}{r}\),则此时的任务是求最大的k。
并不会直接求,因为这个东西没办法转移。
正解是01分数规划,按照式子的右半部分求。
设t为二分的答案,转化为求\(max(p-t*r)\)
定义A胜一轮得1分,B胜1轮失t分。
类似期望倒着dp回去即可。
A. center
题意:无向图上有一个点(可以在边上),最小化该点到最远节点的距离。
可以三分,然而考场上check预处理写丑了。
check:枚举所有节点u,u取两侧min整体取max。
然而三分参数有的会WA,不会证单调性。
B. escape
题意:求无向图1->n简单路径严格次短路。
没有简单路径的限制开堆或者两遍最短路枚举边都行。。。
题解给出的暴力做法:
首先找特殊边并固定方向
枚举a,b,从1->a和b->n走最短路(必须是原图的最短路上的路径),a->b走不包含任何一条特殊边的最短路。
这样枚举所有a,b一定能够找到次短路。
然而直接枚举代价太高,如同之前做过的一道颜色状压树DP,不妨给点集分组,只要最优的a b分属两个组,答案就正确了。
分组的可行性也是显然的,两头可以预处理(注意只能走最短“路径”),对于每个b最小化dis(1->a)+dis(a->b),放初值就可以了。
可以二进制分组,也可以随机分,一次的正确率是0.75
随几次就可以了,然而这好像不是真`正解(正解也没有发...),也卡了SPFA,勉强能过。
A. Colorado Potato Beetle
题意:给出n条线段,求线段覆盖或包围的面积。n<=1000,x<=1000000
不是很半平面交,因为在一定程度上不是求交而是求并。
部分分暴力bfs,要是离散化n的范围也可行。<-正解
然而并不会,细节很多。
把两个端点都离散化,注意要转成左闭右开。
B. Distinct Paths
题意:n*m的网格限制从左上到右下,总共k种颜色,一些初始有颜色,需要给没涂色的格涂色且保证所有路径不会经过两个颜色相同的格,求方案数。n,m<=1000,k<=10。
首先当n+m-1>k时一定无解。
然后n+m的范围就很小了,于是尝试搜索。
记录现有状态到达每个点的颜色集合,逐格搜索的时候顺便维护。
加了最优性剪枝极限数据7秒多。
每种颜色数量没有限制,那么对于不同的颜色的第一次涂色,答案相同。
于是搜出一种其他直接加上就可以了。