这一题不会做啊……

我觉得真要比赛的话我可能会随机上几万次,然后再用LCA求距离,更新最优值,等到快超时的时候输出答案……

题解请看2007年陈瑜希论文

代码:

 const maxn=;
type node=record
w,go,next:longint;
end;
var e:array[..maxn] of node;
f:array[..maxn,..] of int64;
first,u:array[..maxn] of longint;
i,x,y,z,n,tot,m:longint;
ans:int64;
function max(x,y:int64):int64;
begin
if x>y then exit(x) else exit(y);
end;
function get(x,y,z:int64):int64;
begin
get:=x+*y+z;
end;
procedure insert(x,y,z:longint);
begin
inc(tot);e[tot].go:=y;e[tot].w:=z;e[tot].next:=first[x];first[x]:=tot;
end;
procedure init;
begin
readln(n,m);
for i:= to m do
begin
readln(x,y,z);
insert(x,y,z);
insert(y,x,z);
end;
end;
procedure update(x,y:int64);
begin
if y>f[x,] then
begin
f[x,]:=f[x,];
f[x,]:=f[x,];
f[x,]:=y;
end
else
if y>f[x,] then
begin
f[x,]:=f[x,];
f[x,]:=y;
end
else
f[x,]:=max(f[x,],y);
end;
procedure dfs1(x,fa:longint);
var i,y:longint;
begin
i:=first[x];
while i<> do
begin
y:=e[i].go;
if y<>fa then
begin
dfs1(y,x);
u[y]:=e[i].w;
update(x,f[y,]+u[y]);
end;
i:=e[i].next;
end;
end;
procedure dfs2(x,fa:longint);
var i,y:longint;
begin
if f[x,]+u[x]=f[fa,] then update(x,f[fa,]+u[x])
else update(x,f[fa,]+u[x]);
ans:=max(ans,get(f[x,],f[x,],f[x,]));
i:=first[x];
while i<> do
begin
y:=e[i].go;
if y<>fa then dfs2(y,x);
i:=e[i].next;
end;
end;
procedure main;
begin
ans:=;
dfs1(,);
dfs2(,);
writeln(ans);
end;
begin
init;
main;
end.

唉,这种神题,我什么时候才能自己想到呢?

NOI2003 逃学的小孩的更多相关文章

  1. BZOJ 1509: [NOI2003]逃学的小孩( 树形dp )

    树形dp求出某个点的最长3条链a,b,c(a>=b>=c), 然后以这个点为交点的最优解一定是a+2b+c.好像还有一种做法是求出树的直径然后乱搞... ----------------- ...

  2. 【BZOJ1509】[NOI2003]逃学的小孩 直径

    [BZOJ1509][NOI2003]逃学的小孩 Description Input 第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的 ...

  3. [NOI2003]逃学的小孩(树的直径)

    [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一听 ...

  4. 洛谷 P4408 [NOI2003]逃学的小孩

    题目传送门 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚, ...

  5. 1509: [NOI2003]逃学的小孩 - BZOJ

    Description Input 第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的信息.第i+1行包含整数Ui.Vi.Ti(1Ui ...

  6. BZOJ 1509: [NOI2003]逃学的小孩

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1509 直接求出树的直径,枚举每个点更新一遍答案. #include<cstring> ...

  7. 解题报告 『[NOI2003]逃学的小孩(树上操作)』

    原题地址 今天翻看集训队巨佬写的一篇有关于树形动规的论文时看到了这道题,但感觉并不需要用动规,求出树的直径再暴力枚举一下就搞出来了. 其实是因为我太弱了,看不懂大佬在写什么orz 代码实现如下: #i ...

  8. LUOGU P4408 [NOI2003]逃学的小孩(树的直径)

    题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽 ...

  9. BZOJ1509 [NOI2003]逃学的小孩 树型DP

    题目: 分析: 首先明确我们是要求 min(dist[C][A],dist[C][B])+dist[A][B]. 我们把C当成树根,第一我们可以发现min里面取dist[C][A]或者dist[C][ ...

随机推荐

  1. phpcms v9 自定义分页 带下拉跳转

    <?php function new_pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpag ...

  2. DHT网络第一部分研究结果 加入长期在线的node

    源码:http://jijiea.com/upfile/DHT_Part1_How_To_Join_In_DHT.zip

  3. 2015-4-2的阿里巴巴笔试题:乱序的序列保序输出(bit数组实现hash)

    分布式系统中的RPC请求经常出现乱序的情况.写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:123, ...

  4. C语言数据结构之栈:中缀表达式的计算

    *注:本人技术不咋的,就是拿代码出来和大家看看,代码漏洞百出,完全没有优化,主要看气质,是吧 学了数据结构——栈,当然少不了习题.习题中最难的也是最有意思的就是这个中缀表达式的计算了(可以算+-*/和 ...

  5. MVC5+EF6+BootStrap3.3.5 博客系统之项目搭建(一)

    环境:vs2013,sql2008R2 引用版本:MVC5,EF6,BootStrap3.3.5 在之前一直都是webfrom开发,虽然开发简单:但是有很多不足的地方.在之前开发都是webfrom+M ...

  6. DB天气app冲刺第十二天

    今天其实不算冲刺了 ,因为今天没怎么花时间在软件上,而是花时间在老师留的作业上了.所以也算作是软件工程这门课的冲刺吧. DB天气这款app上今天的api接口还是木有弄好.明天会继续弄.但是全国城市的数 ...

  7. ios App 加急审核

    下面进入正题.提交完成后进入加急审核页面. 链接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 在i wo ...

  8. SAML - SSO(转)

    http://baike.baidu.com/view/758527.htm?fr=aladdin SAML即安全断言标记语言,英文全称是Security Assertion Markup Langu ...

  9. 使用C#选择文件夹、打开文件夹、选择文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. hdu 1024

    参考了一下 http://moxi466839201.blog.163.com/blog/static/18003841620110220374942/ 滚动数组   状态转移方程不太好理解 .... ...