給定⼀張有向圖,每個點有個權值,螞蟻從某個點開始,初始體⼒為1,每經過⼀條邊,體⼒會變為原來的p(0$n \leq 100,點權 \leq 100$
sol:
正解是自動機的幫浦引理,一看就不可做,考慮暴力碾標算
由於點權不超過 100,體力很小的時候點權的貢獻也很小,保留一位小數就會把很小的貢獻捨去
做乙個 dp
設 $f_$ 表示走了 $i$ 步,從 $j$ 走到 $k$ 的最大收益
那麼 $f_ = max_\,j,l)} + f_,l,k)} \times p^}\}$
多做幾遍就行了
#include #define ll long longview code#define db long double
#define rep(i, s, t) for (register int i = (s), i##end = (t); i <= i##end; ++i)
#define dwn(i, s, t) for (register int i = (s), i##end = (t); i >= i##end; --i)
using
namespace
std;
inline
intread()
const
int maxn = 110
;int
n, m, st;
db ans, p, f[maxn][maxn], g[maxn][maxn], w[maxn];
intmain()
cin >>st;
double
x; cin >>x;
p =x;
rep(i,
1, m)
for (; p > (db)(1e-8); p *=p)
rep(i,
1, n) ans =max(ans, f[st][i]);
double res = ans +w[st];
printf(
"%.1f\n
", res);
}
CTSC2011 幸福路徑
有向圖 g有n個頂點 1,2,n,點i 的權值為 w i 現在有乙隻螞蟻,從 給定的起點 v0出發,沿著圖 g 的邊爬行。開始時,它的體力為 1。每爬過一條 邊,它的體力都會下降為原來的 倍,其中 是乙個給定的小於1的正常數。而 螞蟻爬到某個頂點時的幸福度,是它當時的體力與該點權值的乘積。我們把螞蟻...
bzoj 2306 Ctsc2011 幸福路徑
有向圖 g有n個頂點 1,2,n,點i 的權值為 w i 現在有乙隻螞蟻,從 給定的起點 v0出發,沿著圖 g 的邊爬行。開始時,它的體力為 1。每爬過一條邊,它的體力都 p,而螞蟻爬到某個頂點時的幸福度,是它當時的體力與該點權值的乘積。求最大幸福值。因為當體力很小後,對答案就沒什麼影響力,所以用乙...
bzoj2306 Ctsc2011 幸福路徑
有向圖 g有n個頂點 1,2,n,點i 的權值為 w i 現在有乙隻螞蟻,從給定的起點 v0出發,沿著圖 g 的邊爬行。開始時,它的體力為 1。每爬過一條邊,它的體力都會下降為原來的 倍,其中 是乙個給定的小於1的正常數。而螞蟻爬到某個頂點時的幸福度,是它當時的體力與該點權值的乘積。我們把螞蟻在爬行...