UVa #1218 Perfect Service (例题9-14)
2015-02-23 16:06
501 查看
发现动态规划的时间复杂度等于dp数组开的大小。像这道题是n*3,复杂度为O(n)。之前有些题目是n*n,复杂度就是O(n^2)
不像例题9-13,这道题本身是无根树,记忆化搜索的函数要加一个父亲节点作为参数。
Run Time: 0.045s
不像例题9-13,这道题本身是无根树,记忆化搜索的函数要加一个父亲节点作为参数。
Run Time: 0.045s
#define UVa "LT9-14.1218.cpp" //Perfect Service char fileIn[30] = UVa, fileOut[30] = UVa; #include<cstring> #include<cstdio> #include<algorithm> #include<vector> using namespace std; //Global Variables. Reset upon Each Case! const int maxn = 10000 + 10, INF = maxn; int N; vector<int> S[maxn]; int d[maxn][3]; ///// int dp(int u, int s, int fa) { if(d[u][s] != -1) return d[u][s]; if(S[u].size() == 1 && S[u][0] == fa){ if(s == 0) d[u][s] = 1; else if(s == 1) d[u][s] = 0; else if(s == 2) d[u][s] = INF; return d[u][s]; } else { if(s == 0) { //u is server. d[u][s] = 1; for(int i = 0; i < S[u].size(); i ++) { if(S[u][i] != fa) d[u][s] += min(dp(S[u][i], 0, u), dp(S[u][i], 1, u)); } } else if(s == 1) { //fa is server, u is not. d[u][s] = 0; for(int i = 0; i < S[u].size(); i ++) { if(S[u][i] != fa) d[u][s] += dp(S[u][i], 2, u); } } else if (s == 2) { //neither fa or u is server. d[u][s] = INF; for(int i = 0; i < S[u].size(); i ++) { if(S[u][i] != fa) d[u][s] = min(d[u][s], dp(u, 1, fa) - dp(S[u][i], 2, u) + dp(S[u][i], 0, u)); } } return d[u][s]; } } int main() { int END; do { for(int i = 0; i < maxn; i ++) S[i].clear(); memset(d, -1, sizeof(d)); scanf("%d", &N); int a, b; for(int i = 0; i < N-1; i ++) { scanf("%d%d", &a, &b); S[a].push_back(b); S[b].push_back(a); } printf("%d\n", min(dp(1,0,1),dp(1,2,1))); }while(scanf("%d", &END) && !END); return 0; }
相关文章推荐
- UVA 1218 Perfect Service——dp
- 【UVA】1218 - Perfect Service(动态规划)
- UVA 1218 Perfect Service - ACM/ICPC Kaoshiung 2006
- Perfect Service UVA - 1218
- UVA - 1218 Perfect Service( 树形dp)
- UVA - 1218 Perfect Service (树形DP)
- UVA 1218 Perfect Service [树形dp]
- 树上dp 完美的服务(py)(Perfect Service)(UVa 1218)题解
- UVa 1218:Perfect Service(DP)
- UVA 1218 - Perfect Service (树形dp)
- UVA - 1218 Perfect Service(树形dp)
- UVA - 1218 Perfect Service(树形dp)
- UVa 1218 - Perfect Service(树形DP)
- UVa1218 Perfect service[树规]
- 【算法竞赛入门经典】树形DP的状态转移方程优化 例题9-14 UVa1218
- 例题 9-14 完美的服务 UVa 1218
- Perfect Service - UVa 1218 dp
- 例题9-14 UVA 1218 Perfect Service 完美的服务(树形dp)
- UVa1218 - Perfect Service(树形dp)
- POJ 3398 / UVA 1218 Perfect Service 树形DP