zoukankan      html  css  js  c++  java
  • GDOI2018D2T1 谈笑风生

    T1 谈笑风生

    【题目描述】

    【输入】

    【输出】

    一行两个数,所需能量P与在能量最小的前提下最短的到达时间t。

    【样例输入】

    5 7 66
    4 3 2 1 5
    1 2
    1 5
    2 3
    2 4
    2 5
    3 4
    3 5

    【样例输出】

    6 64

    【数据范围限制】

    【样例解释】

    从城市1出发,花费6单位能量,依次经过2、4、3、到达首都5,花费32+3+0+29=64秒

    Solution

    边权计算规则

    [w=sum_{i=1}^{num[u]}sum_{j=1}^{num[v]}(i+j)[(i,j)=1] ]

    [egin{aligned} &设sum(n,m)=sum_{i=1}^{n}sum_{j=1}^{m}(i+j)\ w&=sum_{i=1}^{num[u]}sum_{j=1}^{num[v]}(i+j)[(i,j)=1]\ &=sum_{i=1}^{num[u]}sum_{j=1}^{num[v]}(i+j)sum_{k|(i,j)}mu(k)\ &=sum_{k=1}^{min(num[u],num[v])}kmu(k) sum_{i=1}^{lfloorfrac{num[u]}{k} floor}sum_{j=1}^{lfloorfrac{num[v]}{k} floor}(i+j)\ &=sum_{k=1}^{min(num[u],num[v])}k*mu(k)*sum(lfloorfrac{num[u]}{k} floor,lfloorfrac{num[v]}{k} floor) end{aligned} ]

    易得

    [egin{aligned} sum(n,m)&=sum_{i=1}^{n}sum_{j=1}^{m}(i+j)\ &=frac{nm(n+m+2)}{2} end{aligned} ]

    所以可以(msqrt{max(num[i])})的计算出每条边的边权

    然后二分答案+spfa计算即可。

    因为JZOJ不开放注册。。。所以就没办法交了,口胡一波,题面还是网上找来的。。。

    不过思路是对的。好像GDOI2018我也就两道T1会写T_T

  • 相关阅读:
    Linux之mysql的重新安装
    prometheus监控采集数据promSql
    安装grafana
    prometheus server主配置文件prometheus.yml
    【Java拾遗】不可不知的 Java 序列化
    Centos7 openssh 离线升级8.4
    web for pentester sqli
    web for pentester xss
    ESXI 安装脚本
    nginx 499状态码排查
  • 原文地址:https://www.cnblogs.com/henry-1202/p/10350445.html
Copyright © 2011-2022 走看看