有向圖 g有n個頂點 1, 2, …, n,點i 的權值為 w(i)。現在有乙隻螞蟻,從
給定的起點 v0出發,沿著圖 g 的邊爬行。開始時,它的體力為 1。每爬過一條邊,它的體力都*p,而螞蟻爬到某個頂點時的幸福度,是它當時的體力與該點權值的乘積。 求最大幸福值。
因為當體力很小後,對答案就沒什麼影響力,所以用乙個玄學的倍增floyd卡精度就能過。 設f
[i][
j][t
] 表示i到j走2t
步的最大幸福值。
那麼有f[i
][j]
[t]=
max
然後就過了。
code:
#include
#include
#include
#include
using
namespace
std;
const
double eps=1e-10;
int n,m;
double f[110][110],g[110][110];
double w[110],p;
int main()
for(;p>eps;p*=p)
double ans=0;
for(int i=1;i<=n;i++) ans=max(ans,f[st][i]);
printf("%.1lf",ans+w[st]);
}
bzoj2306 Ctsc2011 幸福路徑
有向圖 g有n個頂點 1,2,n,點i 的權值為 w i 現在有乙隻螞蟻,從給定的起點 v0出發,沿著圖 g 的邊爬行。開始時,它的體力為 1。每爬過一條邊,它的體力都會下降為原來的 倍,其中 是乙個給定的小於1的正常數。而螞蟻爬到某個頂點時的幸福度,是它當時的體力與該點權值的乘積。我們把螞蟻在爬行...
BZOJ2306 幸福路徑(動態規劃,倍增)
bzoj 不要求確切的值,只需要逼近 顯然可以通過移動 步來達到逼近的效果 考慮每次的一步怎麼移動 設f i j f i j 表示走i i 步到了j role presentation j j能夠得到的最大權值 f i v ma x f i 1 u w v pi u,v g f i v max f ...
BZOJ 1919 Ctsc2010 效能優化
題目 題意 給出兩個長度為 n 的整數序列a 0.n 1 b 0.n 1 和非負整數 c 對於兩個長度為 n的整數序列,定義 運算,結果為乙個長度為 n的整數序列,例如f g h 則有h k i j k modn f i g j 求a b b b 每一位模 n 1 的值,其中有 c 個 運算,n 1...