BOJ 331 树形DP
2012-03-03 16:31
267 查看
这题是一个很明显的树形DP,不过修改和查询有1W次。
先从不是叶子结点的位置DP一次,得到一个结果。然后每次修改某个结点的值得时候,只需要修改跟其有关的路径即可。
先从不是叶子结点的位置DP一次,得到一个结果。然后每次修改某个结点的值得时候,只需要修改跟其有关的路径即可。
/* ID: sdj22251 PROG: inflate LANG: C++ */ #include <iostream> #include <vector> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <cctype> #include <string> #include <cstring> #include <cmath> #include <ctime> #define MAXN 151111 #define INF 1000000000 #define L(x) x<<1 #define R(x) x<<1|1 #define PI acos(-1.0) #define eps 1e-7 #define MIN(a, b) ((a) < (b) ? (a) : (b)) using namespace std; int a[MAXN]; int dp[MAXN]; int n, h, ans; int er[20] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072}; int main() { int x, y, z; while(scanf("%d", &h) != EOF) { n = er[h] - 1; for(int i = 1; i <= n; i++) scanf("%d", &a[i]); int m; int t = er[h - 1] - 1; for(int i = n; i > t; i--) dp[i] = a[i]; for(int i = t; i >= 1; i--) dp[i] = MIN(dp[2 * i], dp[2 * i + 1]) + a[i]; printf("%d\n", dp[1]); scanf("%d", &m); while(m--) { scanf("%d%d%d", &x, &y, &z); t = er[x - 1] - 1+ y; a[t] = z; while(t) { dp[t] = MIN(dp[2 * t], dp[2 * t + 1]) + a[t]; t /= 2; } printf("%d\n", dp[1]); } } return 0; }
相关文章推荐
- boj 215(树形DP)
- Another Crisis - UVa 12186 树形dp
- POJ3342 Party at Hali-Bula 树形DP
- 树形DP_____Party at Hali-Bula( POJ 3342 )
- hdu 1520Anniversary party(简单树形dp)
- HDU 5834 Magic boy Bi Luo with his excited tree 树形DP
- 【树形DP】【2014-3】day5 T2 暴力
- The more, The Better HDU - 1561 树形dp,依赖背包
- POJ 1947 Rebuilding Roads 树形dp
- HDU 3899 树形DP
- Timus 1018 树形DP
- wustoj 1590: As Many Princesses as Possible 树形dp 好题 ★
- UVA 1292 - Strategic game(树形dp)
- uva 1292 - Strategic game(树形dp)
- HDOJ题目4705 Y(简单树形DP+数学)
- [BZOJ1040] [ZJOI2008] 骑士 - 基环外向树 + 树形DP
- ZOJ3201 Tree of Tree 【树形dp】
- poj 2486 (树形DP)
- poj 2342 Anniversary party(树形dp)
- BZOJ1040 骑士 【环套树 树形dp】