hdu 4274 Spy's Work
2013-08-27 17:40
344 查看
题意:大概意思就是有n个部门,每个部门有一个部长,编号为i的人就是第i个部门的部长,1代表boss。除了boss每个人都有一个上司,一个部门的成员包括部长和他的下属,部门的总工资为所有成员的工资和,另外一个人得工资至少为1,给出每个部门工资的限制信息,求是否有矛盾。
思路:其实这题弄明白题意也不是很难想,对于每部门,维护两个值,一个是工资上限,一个是工资下限,如果上限小于下限,那么久说明有矛盾,最开始这两个值都赋值为1和inf就行了。
代码:
思路:其实这题弄明白题意也不是很难想,对于每部门,维护两个值,一个是工资上限,一个是工资下限,如果上限小于下限,那么久说明有矛盾,最开始这两个值都赋值为1和inf就行了。
代码:
#include <iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #include<set> #include<stack> #include<cmath> #include<vector> #define inf 0x3f3f3f3f #define Inf 0x3FFFFFFFFFFFFFFFLL #define eps 1e-9 #define pi acos(-1.0) using namespace std; typedef long long ll; const int maxn=10000+10; struct Info { int type,w; }; vector<int>G[maxn]; int uplim[maxn],downlim[maxn]; bool flag; void clearAll(int n) { for(int i=0;i<=n;++i) G[i].clear(); for(int i=1;i<=n;++i) { uplim[i]=inf; downlim[i]=1; } } void dfs(int u,int fa) { if(!flag) return; int sum=0; for(int i=0;i<G[u].size();++i) { int v=G[u][i]; if(v!=fa) { dfs(v,u); sum+=downlim[v]; } } downlim[u]=max(downlim[u],sum+1); if(downlim[u]>uplim[u]) flag=false; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n,m; while(~scanf("%d",&n)) { clearAll(n); int a,b; char str[2]; for(int i=2;i<=n;++i) { scanf("%d",&a); G[a].push_back(i); G[i].push_back(a); } flag=true; scanf("%d",&m); for(int i=0;i<m;++i) { scanf("%d %s %d",&a,str,&b); if(str[0]=='=') uplim[a]=downlim[a]=b; else if(str[0]=='<') uplim[a]=min(uplim[a],b-1); else downlim[a]=max(downlim[a],b+1); } dfs(1,-1); if(flag) puts("True"); else puts("Lie"); } return 0; }
相关文章推荐
- hdu 4274 Spy's Work
- Hdu 4274 Spy's Work
- [hdu 4274]Spy's Work 树形dp
- HDU 4274 Spy's Work(树形dp)
- hdu 4274 Spy's Work(2012 长春网络赛 树形DP)
- HDU 4274 Spy's Work(12年长春 树形DP)
- Hdu 4274 Spy's Work
- hdu 4274 Spy's Work DFS 贪心
- HDU 4274 Spy's Work 树形dfs
- HDU 4468 Spy && 动态KMP && 2012 Asia Chengdu Regional Contest
- hdu 4274 Spy's Work
- HDU 4274 Spy's Work (树 DFS)
- 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-树dp
- 【最大独立集 && 有墙 && 无向图】HDU - 1045 Fire Net
- hdu 1098 Ignatius's puzzle