HDU 4035 Maze

Maze

http://acm.hdu.edu.cn/showproblem.php?pid=4035

?

分析:

  在樹上走來走去,然后在一個點可以k的概率回到1,可以e的概率走出去,可以1-k-e的概率走到其他的位置(分為父節點和子節點討論)。

  轉移方程就是:$dp[i] = dp[1] \times k + 0 \times e + \frac{1 - k - e}{deg[i]} \times (dp[fa]+1) + \sum\limits_{j∈child[i]}\frac{1 - k - e}{deg[i]} \times (dp[j]+1)$

  發現式子沒法轉換,有后效性,然后式子只與$dp[1],dp[fa],dp[child[i]]$有關系,可以寫成統一的格式:$dp[i] = A_i \times dp[1] +B_i \times dp[fa] +C_i$

  這樣寫完了,發現$A,B,C$就可以從它的子節點轉移了,然后可以從葉子節點推到根。最后$dp[1] = \frac{C[1]}{1-A[1]}$。

https://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html

?

代碼:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<cctype>
 7 #include<set>
 8 #include<vector>
 9 #include<queue>
10 #include<map>
11 using namespace std;
12 typedef long long LL;
13 
14 inline int read() {
15     int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
16     for(;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;
17 }
18 
19 const int N = 10010;
20 const double eps =  1e-10;
21 
22 double A[N], B[N], C[N], k[N], e[N];
23 vector<int> T[N];
24 
25 bool dfs(int u,int fa) {
26     double m = 1.0 * T[u].size();
27     A[u] = k[u], B[u] = (1 - k[u] - e[u]) / m, C[u] = 1 - k[u] - e[u];
28     double t = 0;
29     for (int i=0; i<m; ++i) {
30         int v = T[u][i];
31         if (v == fa) continue;
32         if (!dfs(v, u)) return false;
33         A[u] += (1 - k[u] - e[u]) / m * A[v];
34         C[u] += (1 - k[u] - e[u]) / m * C[v];
35         t += (1 - k[u] - e[u]) / m * B[v];
36     }
37     if (fabs(1 - t) <= eps) return false;
38     A[u] /= (1 - t), B[u] /= (1 - t), C[u] /= (1 - t);
39     return true;
40 }
41 
42 int main() {
43     for (int Case=read(),t=1; t<=Case; ++t) {
44         int n = read();
45         for (int i=1; i<=n; ++i) T[i].clear();
46         for (int i=1; i<n; ++i) {
47             int u = read(), v = read();
48             T[u].push_back(v), T[v].push_back(u);
49         }
50         for (int i=1; i<=n; ++i) {
51             int a = read(), v = read();
52             k[i] = (double)a / 100.0;
53             e[i] = (double)v / 100.0;
54         }
55         printf("Case %d: ",t);
56         if (dfs(1, 0) && fabs(A[1] - 1) > eps) 
57             printf("%.10lf\n",C[1] / (1 - A[1]));
58         else puts("impossible");
59     }
60     return 0;
61 }

?

轉載于:https://www.cnblogs.com/mjtcn/p/9638853.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面向對象之三大特性:繼承,封裝,多態

python面向對象的三大特性&#xff1a;繼承&#xff0c;封裝&#xff0c;多態。 1. 封裝: 把很多數據封裝到?個對象中. 把固定功能的代碼封裝到?個代碼塊, 函數, 對象, 打包成模塊. 這都屬于封裝的思想. 具體的情況具體分析. 比如. 你寫了?個很?B的函數. 那這個也可以被稱為…

configurablebeanfactory

ConfigurableBeanFactory定義BeanFactory的配置.ConfigurableBeanFactory中定義了太多太多的api,比如類加載器,類型轉化,屬性編輯器,BeanPostProcessor,作用域,bean定義,處理bean依賴關系,合并其他ConfigurableBeanFactory,bean如何銷毀. ConfigurableBeanFactory同時繼承了Hi…

Xlua文件在熱更新中調用方法

Xlua文件在熱更新中調用方法 public class news : MonoBehaviour { LuaEnv luaEnv;//定義Lua初始變量 void Awake() { luaEnv new LuaEnv();//new開辟空間 luaEnv.AddLoader(myload);//調用方法地址、返回字節 luaEnv.DoString("requirefish");//更新文件 } void O…

springboot 使用的配置

1&#xff0c;控制臺打印sql logging:level:com.sdyy.test.mapper: debug 2&#xff0c;開啟駝峰命名 mybatis.configuration.map-underscore-to-camel-casetrue 轉載于:https://www.cnblogs.com/xiaohu1218/p/10477318.html

AutowireCapableBeanFactory接口

AutowireCapableBeanFactory在BeanFactory基礎上實現了對存在實例的管理.可以使用這個接口集成其它框架,捆綁并填充并不由Spring管理生命周期并已存在的實例.像集成WebWork的Actions 和Tapestry Page就很實用. 一般應用開發者不會使用這個接口,所以像ApplicationContext這樣的…

外觀模式

一、什么是外觀模式   有些人可能炒過股票&#xff0c;但其實大部分人都不太懂&#xff0c;這種沒有足夠了解證券知識的情況下做股票是很容易虧錢的&#xff0c;剛開始炒股肯定都會想&#xff0c;如果有個懂行的幫幫手就好&#xff0c;其實基金就是個好幫手&#xff0c;支付寶…

OC內存管理

OC內存管理 一、基本原理 &#xff08;一&#xff09;為什么要進行內存管理。 由于移動設備的內存極其有限&#xff0c;所以每個APP所占的內存也是有限制的&#xff0c;當app所占用的內存較多時&#xff0c;系統就會發出內存警告&#xff0c;這時需要回收一些不需要再繼續使用的…

cf1132E. Knapsack(搜索)

題意 題目鏈接 Sol 看了status里面最短的代碼。。感覺自己真是菜的一批。。直接爆搜居然可以過&#xff1f;。。但是現在還沒終測所以可能會fst。。 #include<bits/stdc.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #defi…

ConfigurableListableBeanFactory

ConfigurableListableBeanFactory 提供bean definition的解析,注冊功能,再對單例來個預加載(解決循環依賴問題). 貌似我們一般開發就會直接定義這么個接口了事.而不是像Spring這樣先根據使用情況細分那么多,到這邊再合并 ConfigurableListableBeanFactory具體&#xff1a; 1、…

焦旭超 201771010109《面向對象程序設計課程學習進度條》

《2018面向對象程序設計&#xff08;java&#xff09;課程學習進度條》 周次 &#xff08;閱讀/編寫&#xff09;代碼行數 發布博客量/博客評論量 課堂/課余學習時間&#xff08;小時&#xff09; 最滿意的編程任務 第一周 50/20 1/0 6/4 九九乘法表 第二周 90/5…

面試題集錦

1. L1范式和L2范式的區別 (1) L1范式是對應參數向量絕對值之和 (2) L1范式具有稀疏性 (3) L1范式可以用來作為特征選擇&#xff0c;并且可解釋性較強&#xff08;這里的原理是在實際Loss function 中都需要求最小值&#xff0c;根據L1的定義可知L1最小值只有0&#xff0c;故可以…

Spring注解配置工作原理源碼解析

一、背景知識 在【Spring實戰】Spring容器初始化完成后執行初始化數據方法一文中說要分析其實現原理&#xff0c;于是就從源碼中尋找答案&#xff0c;看源碼容易跑偏&#xff0c;因此應當有個主線&#xff0c;或者帶著問題、目標去看&#xff0c;這樣才能最大限度的提升自身代…

halt

關機 init 0 reboot init6 shutdown -r now 重啟 -h now 關機 轉載于:https://www.cnblogs.com/todayORtomorrow/p/10486123.html

Spring--Context

應用上下文 Spring通過應用上下文&#xff08;Application Context&#xff09;裝載bean的定義并把它們組裝起來。Spring應用上下文全權負責對象的創建和組裝。Spring自帶了多種應用上下文的實現&#xff0c;它們之間主要的區別僅僅在于如何加載配置。 1.AnnotationConfigApp…

了解PID控制

2019-03-07 【小記】 了解PID控制 比例 - 積分 - 微分 積分 --- 記憶過去 比例 --- 了解現在 微分 --- 預測未來 轉載于:https://www.cnblogs.com/skullboyer/p/10487884.html

program collections

Java byte & 0xff byte[] b new byte[1];b[0] -127;System.out.println("b[0]:"b[0]"; b[0]&0xff:"(b[0] & 0xff));//output:b[0]:-127; b[0]&0xff:129計算機內二進制都是補碼形式存儲&#xff1a; b[0]: 補碼&#xff0c;10000001&…

軟件測試問題

1.什么是兼容性測試?兼容性測試側重哪些方面? 主要檢驗的是軟件的可移植性&#xff0c;檢查軟件在不同的硬件平臺軟件平臺上是否可以正常的運行。 細分會有&#xff1a;平臺的兼容&#xff0c;網絡兼容&#xff0c;數據庫兼容&#xff0c;數據格式的兼容等。 2.常用的測試方法…

Spring注解源碼分析

我們知道如果想使用spring注解你需要在applicationContext.xml配置文件中設置context:component-scan base-packagexxx’這樣spring會幫助我們掃描你所設置的目錄里面所有的Bean&#xff0c;如果Bean上面有相應的Service,Controller注解&#xff08;當然還有其他的&#xff0c;…

linux查看和修改PATH環境變量的方法

查看PATH&#xff1a;echo $PATH以添加mongodb server為列修改方法一&#xff1a;export PATH/usr/local/mongodb/bin:$PATH//配置完后可以通過echo $PATH查看配置結果。生效方法&#xff1a;立即生效有效期限&#xff1a;臨時改變&#xff0c;只能在當前的終端窗口中有效&…

GLog 初始化說明

#include <iostream> #include <glog/logging.h>int main(int argc, char* argv[]) {google::InitGoogleLogging(argv[0]);FLAGS_logtostderr false; // 是否將日志輸出到stderr而非文件。FLAGS_alsologtostderr false; //是否將日志輸出到文件和stderr&#xff…