JZOJsenior3425.【NOIP2013模拟】能量获取
来源:互联网 发布:淘宝怎么找内部优惠券 编辑:程序博客网 时间:2024/05/22 07:07
Description
“封印大典启动,请出Nescafe魂珠!”随着圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上。封印台是一个树形的结构,魂珠放置的位置就是根节点(编号为0)。还有n个其他节点(编号1-n)上放置着封印石,编号为i的封印石需要从魂珠上获取Ei的能量。能量只能沿着树边从魂珠传向封印石,每条边有一个能够传递的能量上限Wi,魂珠的能量是无穷大的。作为封印开始前的准备工作,请你求出最多能满足多少颗封印台的能量需求?
注意:能量可以经过一个节点,不满足它的需求而传向下一个节点。每条边仅能传递一次能量。
Input
第一行一个整数n,表示除根节点之外的其他节点的数量。
接下来n行,第i+1行有三个整数Fi、Ei、Wi,分别表示i号节点的父节点、i号节点上封印石的能量需求、连接节点i与Fi的边最多能传递多少能量。
Output
最多能满足多少颗封印石的能量需求。
Sample Input
4
0 3 2
0 100 100
1 1 1
2 75 80
Sample Output
2
Data Constraint
对于100%的数据,满足1<=n<=1000,0<=Fi<=n,0<=Ei,Wi<=100
思路:
这看到题的时候我内心有草泥马奔腾——这什么东东?网络流?可我不会……
不!
我手推了样例,发现贪心可做
思考一下,若当前需求量最小的点都无法满足,那么这个点子树的所有点都不可能满足
但有可能这个点上面的点可能可以满足的
那么我们就按需求量,把点从小到大排序
若当前点到根的路的最小值≥当前点的需求量,我们就把这条路的值都减去需求量
否则,不操作,然后贪心即可AC此题
代码:
var a,b,c,d,father:array[0..1000]of longint; n,i,j,x,ans:longint;procedure qsort(l,r:longint);var i,j,mid:longint;begin i:=l; j:=r; mid:=c[(l+r)shr 1]; repeat while c[i]<mid do inc(i); while c[j]>mid do dec(j); if i<=j then begin c[0]:=c[i]; c[i]:=c[j]; c[j]:=c[0]; d[0]:=d[i]; d[i]:=d[j]; d[j]:=d[0]; inc(i); dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r);end;function min(x,y:longint):longint;begin if x<y then exit(x); exit(y);end;procedure find(m:longint);var now,minn:longint;begin now:=m; minn:=maxlongint; while now<>0 do begin minn:=min(minn,b[now]); now:=father[now]; end; if minn>=a[m] then begin inc(ans); now:=m; while now<>0 do begin dec(b[now],a[m]); now:=father[now]; end; end;end;begin readln(n); for i:=1 to n do begin readln(x,a[i],b[i]); father[i]:=x; c[i]:=a[i]; d[i]:=i; end; qsort(1,n); for i:=1 to n do find(d[i]); writeln(ans);end.
- JZOJsenior3425.【NOIP2013模拟】能量获取
- JZOJ3425. 【NOIP2013模拟】能量获取(2017.8B组)
- 能量获取
- 能量获取
- 【NOIP2013模拟】七夕祭
- 【NOIP2013模拟】小猫爬山
- 【NOIP2013模拟】开心小屋
- 【NOIP2013模拟】四叶草魔杖
- 【NOIP2013模拟】四叶草魔杖
- 【NOIP2013模拟】粉刷匠
- 【NOIP2013模拟】DY引擎
- 【NOIP2013模拟】DY引擎
- NOIP2013模拟最小比例
- 【NOIP2013中秋节模拟】长方形
- 【NOIP2013模拟联考13】线段
- noip2013 计数问题 (模拟)
- 【NOIP2013模拟】导弹防御塔
- 【NOIP2013模拟】导弹防御塔
- Fast RCNN学习
- Go1.9组播发送消息小实例
- a_vision_aided_nonlinear_observer_for_fixed_wing_uav_navigation论文解读
- 设计模式学习笔记----工厂模式
- 动画效果
- JZOJsenior3425.【NOIP2013模拟】能量获取
- Java中常见数据结构List之ArrayLis
- 查找对话框
- FM算法(Factorization Machine)
- Java Zip压缩实现
- 台湾大学林轩田机器学习技法课程学习笔记16(完结) -- Finale
- Debug日志:Dev C++ 5.11的 int 型边界测试
- Spring编程<三>
- scrapy-redis 介绍