• 题解汇总


    这道题主要是对二进制性质的一些应用,有体现“正难则反”的思想。

    20分的暴力是很简单的枚举。然后对于另外80分,我们考虑:“与”是要求同一位均是1,结果才为1。而对于2进制,越高位有1,数字越大。所以我们可以考虑将所给数列的数字看成二进制,从二进制最高位向下枚举,若有大于等于两个数“这一位上为1”,那么最终结果的这一位肯定是1,于是我们就可以将所有“这一位上为1”的数保留下来,剩下的数舍弃;而若有少于两个数“这一位上为1”,则这一位上一定为0

    小象涂色

    一道有关期望的dp。首先可知每个操作中,一个物品会被染色的概率为1/2,用某种颜色染色的概率为1/c

    40分的方程是用f[i][j][k]表示第i个物品在j次操作次数后颜色变为k的概率,时间复杂度大概是O(T*N*K*c^2)

    60分要考虑到所有物品具有相似性,即n个物品本质是相同的,所以不用枚举物品f[i][j]表示一个物品操作i次颜色变为j的概率。满足:

    f[i+1][j]+=f[i][j]*(1/2)        f[i+1][(j*b)%c]+=f[i][j]*[(1/2)*(1/c)]

    初始值f[0][1]=1,答案就是∑f[i][j]*j  (i表示该箱子的操作次数,0 <= j<c)。复杂度OT*K*c^2

    行动!行动!

    分层图的最短路。

    K=1时可以考虑将一点拆成两点。两层分别按原图建图,然后在第一层向第二层中对应的点连一条长度为0的单向边,例如原图有一条12的双向边。将1拆成11+n2同理,然后分别在121+n2+n之间建原长度的双向边,然后分别在12+n21+n之间建一条长度为0的单向边,这样的图能保证至多跑一次长度为0的边。在点数边数较少的情况下,K大到3,4应该也能卡过。

    至于正解,可以用一个二维的dis数组跑最短路,dis[i][j]表示到达i点,用了j次急救包。用最短路做一个类似于dp的东西。答案为dis[T][K].

    注意:裸跑spfaT三个点,若写spfa记得加SLF优化。

  • 相关阅读:
    python基础练习(七)列表、元组、字典遍历
    python基础练习(六)字典_练习
    python基础练习(五)元组_练习
    python基础练习(四)列表_练习
    滑动条设置为角度
    cell-元胞数组
    MATLAB 爬取天气预报数据
    正则表达式匹配
    函数检视
    相关分析(三)——如何在Excel中计算两个变量之间的相关系数?
  • 原文地址:https://www.cnblogs.com/yxr001002/p/14226179.html
Copyright © 2020-2023  润新知