NDK 1367 yep的聚会
来源:互联网 发布:招聘网站 网络文案 编辑:程序博客网 时间:2024/04/29 05:25
问题描述:
yep喜欢和它所遇见的所有女性成为朋友,因此它有很多朋友。依照亲密程度,yep给它的朋 友划定了等级,等级数越小,亲密程度越大。例如,”某女“为1级,”非常亲密”为2级,等 等。某女只有一个,其它等级的朋友可以有多个。由于yep强大的个人实力,每个等级 i(i>1)的朋友会嫉妒一个等级为i-1的朋友。现在yep想邀请它的所有朋友开个聚会讨论人 生追求与理想。为了保持社会和谐,yep希望参加聚会的朋友间没有矛盾;为了将来的人 生,它还希望参加聚会的朋友的美丽度之和最大。为了满足它小小的追求,yep请你帮它计 算,参加聚会的朋友的美丽度之和最大为多少。
数据输入:
第1行为一个整数N,为yep的朋友数量。
第2行到第N+1行每行二个整数P,Q。第i行的数分别表示编号为i-1的朋友的美丽度和她所 嫉妒的朋友的编号(Q=-1表示此行描述的是某女)。
结果输出:
一个数ANS,为参加聚会的朋友的美丽度之和的最大值。
样例:
6
30 -1
15 1
2 1
17 2
23 2
7 3
77
核心思想:
Dp,上司选下属不选,上司不选下属爱选不选,也可以成为回溯哈。
type edge=record d,y,next:longint; end;var a:array[0..200001]of edge; f,first:array[0..200001]of longint; n,i,tot,x,y,d:longint;procedure ad_edge(x,y,d:longint);begin inc(tot); a[tot].y:=y; a[tot].d:=d; a[tot].next:=first[x]; first[x]:=tot;end;function dfs(x:longint):longint;var t,k,sum1,sum2:longint;begin iff[x]>0 then exit(f[x]); t:=first[x]; sum1:=a[x].d; sum2:=0; while t>0 do begin k:=first[t]; while k>0 do begin inc(sum1,dfs(k)); k:=a[k].next; end; inc(sum2,dfs(t)); t:=a[t].next; end; ifsum1>sum2 then f[x]:=sum1 else f[x]:=sum2; exit(f[x]);end;begin assign(input,'yepparty.in');reset(input); assign(output,'yepparty.out');rewrite(output); tot:=0; readln(n); fori:=1 to n do begin readln(d,y); ad_edge(y,i,d); end; writeln(dfs(1)); close(input);close(output);end.题目来源:NDK 1367
- NDK 1367 yep的聚会
- NDK 1365 yep的星星
- NDK 1366 yep的礼物
- NDK 1368 yep的收藏品
- 高中同学聚会,没能参加的聚会
- 年前的高中同学聚会
- 同学的聚会!
- 元旦的聚会
- 新的聚会
- 周五的WS聚会
- 聚会时能玩的游戏
- 没有上司的聚会
- 聚会的策略
- 擦肩而过的兄弟聚会
- 女人的聚会
- 花花的聚会
- 【9935】聚会的快乐
- 聚会
- 内存分析工具MAT
- NDK 1366 yep的礼物
- Android入门之RadioGroup(纯java)
- Oracle中的 UPDATE FROM 解决方法
- Speed Up Windows 7 – Master Tutorial to Make Windows 7 Super Fast
- NDK 1367 yep的聚会
- C语言回调函数举例
- 性能分析工具TraceView
- poj 3592 Instantaneous Transference tarjan缩点 最长路 ++tarjan模版 && spfa最长路模版
- NDK 1368 yep的收藏品
- 怎么在itouch中使用epub格式的电子书
- 算法导论学习笔记——动态规划
- Tyvj 1503 最大奇因数
- C++内存分配