HDU-3672-Caves
来源:互联网 发布:天地缓缓知乎 编辑:程序博客网 时间:2024/06/07 11:31
ACM模版
描述
题解
树型
设
对于
对于
上述思路核心就是
最后询问时访问一下
代码
#include <iostream>#include <cstdio>#include <cstring>#define clr(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int MAXN = 510;int n, q;int root;int hed[MAXN];int nxt[MAXN];int cost[MAXN];bool vis[MAXN];ll dp[MAXN][MAXN][2];void dfs(int x){ dp[x][1][0] = dp[x][1][1] = 0; for (int i = hed[x]; i; i = nxt[i]) { dfs(i); for (int j = n; j >= 2; j--) { for (int k = 1; k < j; k++) { dp[x][j][0] = min(dp[x][j][0], dp[x][k][0] + dp[i][j - k][0] + cost[i] * 2); dp[x][j][1] = min(dp[x][j][1], min(dp[x][k][1] + dp[i][j - k][0] + cost[i] * 2, dp[x][k][0] + dp[i][j - k][1] + cost[i])); } } }}int main(){ int ce = 1; while (cin >> n && n) { cout << "Case " << ce++ << ":" << endl; clr(dp, 0x3f); clr(hed, 0); clr(vis, 0); int a, b, c; for (int i = 1; i < n; i++) { scanf("%d%d%d", &a, &b, &c); a++; b++; vis[a] = true; nxt[a] = hed[b]; hed[b] = a; cost[a] = c; // a 与 父亲 连边的花费 } for (int i = 1; i <= n; i++) { if (!vis[i]) { root = i; dfs(i); break; } } cin >> q; int x, k; for (int i = 0; i < q; i++) { scanf("%d", &x); k = n; while (dp[root][k][0] > x && dp[root][k][1] > x) { k--; } printf("%d\n", k); } } return 0;}
阅读全文
0 0
- HDU-3672-Caves
- HDU 3672 Caves ACM/ICPC 2007 成都区域赛 C 背包+树形DP
- code caves
- LA4015 Caves
- Ural1553.Caves and Tunnels
- UVALive 4015 Caves
- UVALive 4015 Caves
- UVALive - 4015 Caves
- uva1407 - Caves 树形DP
- HNU13247Connected Caves (拓扑)
- hdu3672 Caves 树形dp
- 【LA4015】Caves【Tree DP】
- uvalive 4015 caves
- Caves (树形DP)
- URAL1553 Caves and Tunnels
- UVA 1407 - Caves(树形DP)
- uva 1407 - Caves(树形dp)
- Caves - UVa 1407 树形dp
- svn服务端证书的问题
- Python计算程序运行时间
- SQL Server 2014 虚拟机的自动备份 (Resource Manager)
- Android6.0+ apk下载及安装出现的权限问题
- React+webpack 的开发环境配置步骤(五)
- HDU-3672-Caves
- Linux有问必答:如何检查Linux的内存使用状况
- iOS学习进阶
- 【安全牛学习笔记】COCAT
- 用FME集成第三方工具(无需代码)
- 谷歌TPU吊打GPU?NVIDIA不服:Tesla P40怒怼
- weblogic 反序列化漏洞
- Hibernate4 拦截器(Interceptor) 实现实体类增删改的日志记录
- 获取通讯录,电话,姓名,地址邮箱