HDU 4274 Spy's Work (树形DP)
来源:互联网 发布:农村淘宝是做什么的 编辑:程序博客网 时间:2024/04/28 09:30
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4274
题意:给一颗树,1是根节点,树上每个结点的权值是该节点子树的权值之和(必然不小于1),现在给出某些结点权值的推算关系,问这些关系是否矛盾
思路:对于每个结点,我们可以在dfs时可以通过子树下限更新其权值下限,上限无法确定,然后再根据所给的信息判断是否矛盾
#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <vector>#include <utility>#include <iostream>#include <algorithm>#include <functional>#include <set>#include <map>using namespace std;const int maxn = 10010;const long long inf = 1e17;typedef long long ll;int cnt, head[maxn];int n;struct node{ ll l, r;} a[maxn];struct edge{ int to, nxt;} e[maxn << 1];void init(){ cnt = 0; memset(head, -1, sizeof(head)); for (int i = 1; i <= n; i++) { a[i].l = 1, a[i].r = inf; }}void add(int u, int v){ e[cnt].to = v; e[cnt].nxt = head[u]; head[u] = cnt++;}bool dfs(int u, int fa){ long long sl = 0; for (int i = head[u]; ~i; i = e[i].nxt) { int v = e[i].to; if (fa == v) continue; if (!dfs(v, u)) return false; sl += a[v].l; } a[u].l = max(a[u].l, sl + 1); return a[u].l <= a[u].r;}int main(){ while (~scanf("%d", &n)) { init(); for (int i = 2; i <= n; i++) { int u; scanf("%d", &u); add(u, i); add(i, u); } int m; scanf("%d", &m); while (m--) { int u, num; char s; scanf("%d %c %d", &u, &s, &num); if (s == '=') { a[u].l = max(a[u].l, (ll)num); a[u].r = min(a[u].r, (ll)num); } if (s == '<') { a[u].r = min(a[u].r, (ll)(num - 1)); } if (s == '>') { a[u].l = max(a[u].l, (ll)(num + 1)); } } // for(int i = 1; i <= n; i++) // cout << a[i].l << " " <<a[i].r << endl; if (dfs(1, -1)) puts("True"); else puts("Lie"); } return 0;}
0 0
- [hdu 4274]Spy's Work 树形dp
- HDU 4274 - Spy's Work(树形DP)
- HDU 4274 Spy's Work(树形dp)
- HDU 4274 Spy's Work (树形DP)
- HDU 4274 Spy's Work 树形dfs
- HDU 4274 Spy's Work(12年长春 树形DP)
- hdu 4274 Spy's Work(2012 长春网络赛 树形DP)
- HDU 4274 spy work (树形DP)
- HDU 4274-Spy's Work-树dp
- hdu 4274 Spy's Work(水题)
- hdu 4274 Spy's Work
- hdu 4274 Spy's Work
- Hdu 4274 Spy's Work
- hdu 4274 Spy's Work
- hdu 4274 Spy's Work DFS 贪心
- HDU 4274 Spy's Work (dfs)
- HDU 4274 Spy's Work (树 DFS)
- HDOJ 4274 Spy's Work DFS
- OKHttp使用教程
- 用3个步骤实现响应式网页设计
- ADB not responding. 的解决办法
- 【游戏服务器Util】 commons-lang3.jar StopWatch 计时
- linux 定时器
- HDU 4274 Spy's Work (树形DP)
- crontab job不能执行的问题
- 在VS2010环境下配置opencv,编程语言为c#
- UIWebView获得内容的高-作出自适应高的UIWebView
- Css 命名规范
- Maven使用总结
- 解决不同屏幕分辨率问题的三种首页焦点图轮播样式(图)
- ANT 打包遇到非法字符: \65279
- 百度地图API 3.x 叠加动画控件(view)的方法