zoukankan      html  css  js  c++  java
  • 假期测试1~3

    Day1

    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回去即可。

    Day2

    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,勉强能过。

    Day3

    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秒多。
    每种颜色数量没有限制,那么对于不同的颜色的第一次涂色,答案相同。
    于是搜出一种其他直接加上就可以了。

  • 相关阅读:
    angularJs之http后台访问数据
    angularJ之$filter过滤器
    angularJs之service
    下拉列表select显示ng-options
    angularJs非空校验requied
    angularJs禁用或启用输入框指令ng-disabled="true"
    angularJS支持的事件
    angularJ表单验证
    angularJs之template指令
    angularJs自定义指令.directive==类似自定义标签
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12241549.html
Copyright © 2011-2022 走看看