题意:

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. 安卓&IOS 手机添加O365 邮箱账户

    手机添加O365 邮件账户 一.Android手机添加O365邮件账户 1. 找到手机上“电子邮件” 2. 打开设置 3. 点击添加账户 4. 选择“Exchange” 5. 输入O365的邮箱账户和 ...

  2. vue路由导航守卫及前置后置钩子函数参数详解

    首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWo ...

  3. [Python3]Python官方文档-Python Manuals

    简介 一般情况下,初学者都不愿意直接去浏览Python Manuals,即Python自带的官方文档.尤其是只有英文版的情况下,初学者更加不会去使用该官方文档了. 在这里笔者强力推荐初学者经常学会使用 ...

  4. Android天天数钱游戏项目源码

    Android天天数钱游戏源码,源码功能,天天数钱,这个游戏现在很多线上的小游戏都有这个了,游戏项目是在基于android游戏代码,大家可以参考一下. 源码下载:http://code.662p.co ...

  5. Windows Server 启用匿名共享

    1.开始 → 运行 → gpedit.msc,打开组策略编辑器: 2.依次展开"计算机配置" → "windows设置" → "安全设置"  ...

  6. APP设计细节总结-摘录

    视觉表现型问题 1. 统一的图标设计风格 2. 图标大小的视觉平衡(根据图标的体量对其大小做出相应的调整) 3. 优化你的分割线(通常我们会选择浅色而否定深色) 4. 合理的运用投影的颜色与透明度 5 ...

  7. Urlrewritefilte

    Urlrewritefilter是通过filter的形式,过滤所有的请求,然后再根据配置文件来转换成真正要访问的URL. 好处是隐藏真正的URL和美化提供给客户的URL. 比如,你的首页是www.** ...

  8. Java8函数式编程和lambda表达式

    文章目录函数式编程JDK8接口新特性函数接口方法引用函数式编程函数式编程更多时候是一种编程的思维方式,是一种方法论.函数式与命令式编程区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉 ...

  9. Python 中列表、元祖、字典

    1.元祖: 对象有序排列,通过索引读取读取, 对象不可变,可以是数字.字符串.列表.字典.其他元祖 2.列表: 对象有序排列,通过索引读取读取, 对象是可变的,可以是数字.字符串.元祖.其他列表.字典 ...

  10. STL || HDU 1894 String Compare

    如果一个词包含再另一个词的前面(前缀),是一对前缀,求一共有多少对 *解法:STL万岁 #include<string>:https://www.cnblogs.com/SZxiaochu ...