博客
关于我
Codeforces Round #456 (Div. 2) D. Fishes
阅读量:530 次
发布时间:2019-03-08

本文共 1387 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要找到一种方法来放置k条鱼,使得随机放置r×r的网时,平均捕捉到的鱼的数量尽可能高。通过分析,我们发现每条鱼被捕捉的概率取决于它所在位置的覆盖次数。我们需要找到覆盖次数最多的位置,并将鱼尽可能集中在这些位置,以最大化期望值。

方法思路

  • 计算总的位置数:首先计算整个n×m水池中可以放置r×r网的总位置数T。
  • 计算覆盖次数:对于每个位置(x, y),计算它被覆盖的次数。覆盖次数是该位置作为网的位置时,可以覆盖多少个其他位置。
  • 排序覆盖次数:将所有位置的覆盖次数从大到小排序。
  • 选择最大的k个覆盖次数:选择覆盖次数最大的k个位置,计算它们的覆盖次数总和。
  • 计算期望值:用总和除以总的位置数T,得到期望值。
  • 解决代码

    n, m, r, k = map(int, input().split())if r > n or r > m:    print("0.0000000000")    exit()T = (n - r + 1) * (m - r + 1)if T == 0:    print("0.0000000000")    exit()coverages = []for x in range(1, n + 1):    for y in range(1, m + 1):        # 计算x轴的覆盖次数        cx_low = max(1, x - r + 1)        cx_high = min(n - r + 1, x)        if cx_low > cx_high:            cx = 0        else:            cx = cx_high - cx_low + 1                # 计算y轴的覆盖次数        cy_low = max(1, y - r + 1)        cy_high = min(m - r + 1, y)        if cy_low > cy_high:            cy = 0        else:            cy = cy_high - cy_low + 1                coverage = cx * cy        if coverage == 0:            continue        coverages.append(coverage)# 按覆盖次数从大到小排序coverages.sort(reverse=True)# 取前k个最大的覆盖次数sum_c = sum(coverages[:k])# 计算期望值E = sum_c / Tprint("{0:.12f}".format(E))

    代码解释

  • 输入读取:读取输入的n, m, r, k值。
  • 总位置数计算:计算可以放置r×r网的总位置数T。
  • 覆盖次数计算:遍历每个位置,计算其x和y轴的覆盖次数,得到该位置的覆盖次数。
  • 排序覆盖次数:将所有位置的覆盖次数从大到小排序。
  • 选择最大的k个覆盖次数:取前k个最大的覆盖次数,计算它们的总和。
  • 计算期望值:用总和除以总的位置数T,得到期望值并输出结果。
  • 这种方法通过贪心算法,确保我们总是选择覆盖次数最大的位置,从而最大化期望值。

    转载地址:http://pgziz.baihongyu.com/

    你可能感兴趣的文章
    poj 1125Stockbroker Grapevine(最短路)
    查看>>
    Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
    查看>>
    poj 1151 (未完成) 扫描线 线段树 离散化
    查看>>
    POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
    查看>>
    poj 1163 数塔
    查看>>
    POJ 1177 Picture(线段树:扫描线求轮廓周长)
    查看>>
    Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
    查看>>
    POJ 1182 食物链(并查集拆点)
    查看>>
    POJ 1185 炮兵阵地 (状态压缩DP)
    查看>>
    POJ 1195 Mobile phones
    查看>>
    POJ 1228 Grandpa's Estate (稳定凸包)
    查看>>
    poj 1236(强连通分量分解模板题)
    查看>>
    poj 1258 Agri-Net
    查看>>
    quagga 和 zebos
    查看>>
    poj 1286 Necklace of Beads
    查看>>
    POJ 1321 棋盘问题
    查看>>
    poj 1321(回溯)
    查看>>
    Qt高级——Qt元对象系统源码解析
    查看>>
    qt调用vs2008编写的dll动态库(隐式调用)
    查看>>
    Qt读取注册表默认值
    查看>>