题意:

Nebula 历 2014 年 12 月 17 日,欢迎来到异世界。
面对截然不同的新世界,你决定采取最普通但最为有效的方式来探索,那便
是徒步。准备好营地的一切,你开始了探索的旅程。
步行大约 10 分钟的路程,穿过森林,你来到了一个悬崖,极目远眺,你看
见了梦幻般的光景。 一棵高大的无法用言语描述的数耸立于悬崖的对岸, 其冠直
冲云天, 其根深入地下。 而这棵大树,最引人瞩目的就是结于其枝上的两颗灰色
的果实。
忽然,古老而悠远的声音传入你的脑海之中: “掌握未来之人必先经过命运
的磨练。拥有‘未来视’受命运牵引前来的人类啊,在这个万华镜的世界,一共
有三个关卡,逐一通过考验之后, 前进之道路将会展现于你的面前。第一个考验
规则写于旁边的牌子,详情请参阅。”
你将目光转向一旁的木牌。上书道:
此树为灰色果实之树,不定时会长出灰色果实。贸然接近果实只会使得自己受其迷惑最后神经错乱而
浑浑噩噩不得终日,与死人无异。你的目标是成功到达树的顶端,砍下灰色果实的灵脉。
为了能够免除灰色果实的影响, 你需要在灰色果实力量微弱时在树的各个点
设置若干个保护点, 保护点内燃烧着镇定人心的香,以此来抵御灰色果实的精神
袭击。一个点必须在 lim[i]距离以内有保护点才能收到保护。而且,由于在树上
作业,地形十分崎岖,使得不同点设置保护点的作业时间 time[i]不同。
谋求最大的效率,请求出保护点笼罩整棵树所需的最短作业时间
 
思路:2006国家集训队陈启峰论文题
dp[u,i]为以u为根的子树全部被i保护的总代价
f[u]为以u为根的子树全部被保护的最小总代价
 var dp,dis:array[..,..]of longint;
q:array[..]of longint;
head,vet,next,len,f,flag,time,lim:array[..]of longint;
inq:array[..]of boolean;
n,i,tot,x,y,z:longint; function min(x,y:longint):longint;
begin
if x<y then exit(x);
exit(y);
end; procedure add(a,b,c:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
len[tot]:=c;
head[a]:=tot;
end; procedure spfa(st:longint);
var t,w,u,e,v:longint;
begin
fillchar(inq,sizeof(inq),false);
t:=; w:=; q[]:=st; dis[st,st]:=; inq[st]:=true;
while t<=w do
begin
u:=q[t]; inc(t); inq[u]:=false;
e:=head[u];
while e<> do
begin
v:=vet[e];
if dis[st,u]+len[e]<dis[st,v] then
begin
dis[st,v]:=dis[st,u]+len[e];
if not inq[v] then
begin
inc(w); q[w]:=v; inq[v]:=true;
end;
end;
e:=next[e];
end;
end;
end; procedure dfs(u,fa:longint);
var e,v,i:longint;
begin
e:=head[u];
while e<> do
begin
v:=vet[e];
if v<>fa then dfs(v,u);
e:=next[e];
end;
for i:= to n do
if dis[u,i]<=lim[u] then
begin
dp[u,i]:=;
e:=head[u];
while e<> do
begin
v:=vet[e];
if v<>fa then dp[u,i]:=dp[u,i]+min(dp[v,i]-time[i],f[v]);
e:=next[e];
end;
dp[u,i]:=dp[u,i]+time[i];
f[u]:=min(f[u],dp[u,i]);
end;
end; begin readln(n);
for i:= to n do read(time[i]);
for i:= to n do read(lim[i]);
for i:= to n- do
begin
readln(x,y,z);
add(x,y,z);
add(y,x,z);
end;
fillchar(dp,sizeof(dp),$3f);
fillchar(f,sizeof(f),$3f);
fillchar(dis,sizeof(dis),$3f);
for i:= to n do spfa(i);
dfs(,);
writeln(f[]); end.
 

【NOIP模拟&POJ2152】灰色的果实(树形DP)的更多相关文章

  1. 【noip模拟赛7】上网 线性dp

    描述 假设有n个人要上网,却只有1台电脑可以上网.上网的时间是从1 szw 至 T szw ,szw是sxc,zsx,wl自创的时间单位,至于 szw怎么换算成s,min或h,没有人清楚.依次给出每个 ...

  2. 【noip模拟赛5】任务分配 降维dp

    描述 现有n个任务,要交给A和B完成.每个任务给A或给B完成,所需的时间分别为ai和bi.问他们完成所有的任务至少要多少时间. 输入 第一行一个正整数n,表示有n个任务.接下来有n行,每行两个正整数a ...

  3. 2018.10.05 NOIP模拟 上升序列(状压dp)

    传送门 状压dp好题. 首先需要回忆O(nlogn)O(nlog n)O(nlogn)求lislislis的方法,我们会维护一个单调递增的ddd数组. 可以设计状态f(s1,s2)f(s1,s2)f( ...

  4. 2018.10.01 NOIP模拟 偷书(状压dp)

    传送门 状压dp经典题. 令f[i][j]f[i][j]f[i][j]表示到第i个,第i−k+1i-k+1i−k+1~iii个物品的状态是j时的最大总和. 然后简单维护一下转移就行了. 由于想皮一下果 ...

  5. 【noip模拟题】迎接仪式(dp+特殊的技巧)

    好神的一题... 这是一道DP题,本题的难点在于状态的确定,由于调整是任意的,很难划分状态,我们略微修改一下调整的形式:把一次’j’和’z’交换看做两次变换:’j’->’z’;’z’->’ ...

  6. (计数器)NOIP模拟赛(神奇的数位DP题。。)

    没有原题传送门.. 手打原题QAQ [问题描述]     一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是00 ...

  7. codehunter 「Adera 6」杯省选模拟赛 网络升级 【树形dp】

    直接抄ppt好了--来自lyd 注意只用对根判断是否哟留下儿子 #include<iostream> #include<cstdio> using namespace std; ...

  8. 2018.11.01 NOIP训练 树的排列(树形dp)

    传送门 跟这道题差不多. 只不过是让权值小的儿子做权值大的儿子的父亲而已. 代码

  9. 2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)

    传送门 如果观察到性质其实也不是很难想. 然而考试的时候慌得一批只有心思写暴力233. 下面是几个很有用的性质: c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0 ...

随机推荐

  1. 通用mapper的generator

    <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-genera ...

  2. 洛谷P2774 方格取数问题(最小割)

    题意 $n \times m$的矩阵,不能取相邻的元素,问最大能取多少 Sol 首先补集转化一下:最大权值 = sum - 使图不连通的最小权值 进行黑白染色 从S向黑点连权值为点权的边 从白点向T连 ...

  3. checkbox:click事件触发文本框显示隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. JavaScript 的垃圾回收与内存泄露

    JavaScript采用垃圾自动回收机制,运行时环境会自动清理不再使用的内存,因此javascript无需像C++等语言一样手动释放无用内存. 在这之前先说一下垃圾回收的两种方式:引用计数与标记清除. ...

  5. js递归和数组去重(简单便捷的用法)

    1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; ...

  6. Unity查找物体的四大主流方法及区别

    GameObject.Find()优点: 使用简单方便不会因为重名而报错,同时查找的是自上而下的第一个物体缺点 不能查找被隐藏的物体,否则出现“空引用异常”,这是很多新人在查找出现空引用bug的原因. ...

  7. iview table 勾选当前行代码 data key _checked: true

    给 data 项设置特殊 key _checked: true 可以默认选中当前项

  8. L_01 网络字节顺序

    (1)计算机在存储多字节数据时存在大端字节顺序和小端字节顺序两种方式. 大端:高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端. 小端:低位字节排放在内存的低地址端(即该 ...

  9. day09 10 11 12 三天函数内容

    小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__      funcming.__name__ def func(name, ag ...

  10. 《BUG创造队》作业8:软件测试与Alpha冲刺(第四天)

    项目 内容 这个作业属于哪个课程 2016级软件工程 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 BUG创造队 作业学习目标 (1)掌握软件测试基础技术.(2)学习 ...