HDU 3660 Alice and Bob's Trip
来源:互联网 发布:女性从事数据分析师 编辑:程序博客网 时间:2024/04/30 03:20
树形dp,这道题如果选G++的话,只输入都会超时。我是C++ 1900ms + 飘过的。。。但是输入优化后就快了很多了,1100ms左右。dfs按层次求最值就行了,差不多也算是博弈吧,到bob取的时候要选尽量大的分支(满足条件L和R之间的情况下),反之要alice选尽量小的分支。然后一遍dfs就可以了,时间复杂度为O(n)。
#include<algorithm>#include<iostream>#include<cstring>#include<fstream>#include<sstream>#include<vector>#include<string>#include<cstdio>#include<bitset>#include<queue>#include<stack>#include<cmath>#include<map>#include<set>#define FF(i, a, b) for(int i=a; i<b; i++)#define FD(i, a, b) for(int i=a; i>=b; i--)#define REP(i, n) for(int i=0; i<n; i++)#define CLR(a, b) memset(a, b, sizeof(a))#define debug puts("**debug**")#define LL long long#define PB push_back#define MP make_pair#define eps 1e-8using namespace std;const int N = 500005;const int INF = 1e9 + 7;bool read(int &x){ char c; while(c=getchar()) { if(c == EOF) return 0; if(c<='9'&&c>='0')break; } x=c-'0'; while(c=getchar()) { if(c == EOF) return 0; else if(c>'9'||c<'0')break; else x=x*10+c-'0'; } return 1;}struct Edge{ int u, v, c;} E[N << 1];int fir[N], next[N << 1], tot, l, r;void Add_Edge(int u, int v, int c){ E[tot].u = u, E[tot].v = v, E[tot].c = c; next[tot] = fir[u], fir[u] = tot ++;}int dfs(int u, int fa, int c, bool lvl){ int v, ret = INF, tmp; if(lvl) ret = 0; for(int i = fir[u]; ~i; i= next[i]) { v = E[i].v; if(v != fa) { tmp = dfs(v, u, c + E[i].c, !lvl) + E[i].c; if((tmp + c >= l) && (tmp + c <= r)) { if(lvl) ret = max(ret, tmp); else ret = min(ret, tmp); } } } if(ret == INF) ret = 0; return ret;}int main(){ int n, u, v, c, ans; while(read(n)) { read(l);read(r); CLR(fir, -1); tot = 0; for(int i = 1; i < n; i ++) { read(u);read(v);read(c); Add_Edge(u, v, c); Add_Edge(v, u, c); } ans = -1; for(int i = fir[0]; ~i; i = next[i]) { v = E[i].v; int tmp = dfs(v, 0, E[i].c, 0) + E[i].c; if(tmp >= l && tmp <= r) { ans = max(ans, tmp); } } if(ans == -1) puts("Oh, my god!"); else printf("%d\n", ans); }}
- HDU 3660 Alice and Bob's Trip
- hdu 3660 Alice and Bob's Trip
- HDU 3660 Alice and Bob's Trip
- [HDU] 3660 Alice and Bob's Trip -- 树形DP?
- hdu - 3660 - Alice and Bob's Trip(树形dp)
- 树形dp-hdu-3660-Alice and Bob's Trip
- hdu 3660 Alice and Bob's Trip(树形DP)
- hdoj 3660 Alice and Bob's Trip
- uva-1484(hdu-3660) Alice and Bob's Trip 听说是树形dp
- hdoj 3660 Alice and Bob's Trip(树dp)
- UVALive - 5088 Alice and Bob's Trip
- uva 1484 Alice and Bob's Trip (树形dp)
- UVALive 5088 Alice and Bob's Trip(树形DP)
- UVA 1484 - Alice and Bob's Trip(树形DP)
- uva 1484 - Alice and Bob's Trip(树形dp)
- hdu3660 Alice and Bob's Trip 树形dp
- UVA 1484 Alice and Bob's Trip (树形dp)
- UVA1484 Alice and Bob's Trip(树形dp)
- Android智能电视焦点控制
- PHP smarty配置
- java反射机制学习总结
- 《暗时间》读书笔记(0)
- opengl学习笔记3-1-在3D中绘制点
- HDU 3660 Alice and Bob's Trip
- Activity
- ExtJS4.1 分页传参
- C++类型转换详解--const_cast
- 最负盛名的程序设计竞赛你都知道吗?
- opencv笔记6----轮廓检测
- 解决Wmqtt在android 4.0下报MqttException:NULL错误
- Mcafee 会阻止电脑的TCP 连接
- rubymine创建rails项目图