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

原文地址:https://www.cnblogs.com/henry-1202/p/10350445.html