BZOJ 4557: [JLoi2016]侦察守卫
来源:互联网 发布:linux中vi保存退出 编辑:程序博客网 时间:2024/04/27 20:11
做法同 HDU 5290
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<queue>#include<vector>#include<algorithm>#include<map>#include<set>#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i--)#define mmt(a,v) memset(a,v,sizeof(a))#define tra(i,u) for(int i=head[u];i;i=e[i].next)using namespace std;const int N=500000+5;const int inf=1e9;struct Edge{int to,next;}e[N<<1];int head[N],cnt;void ins(int u,int v){e[++cnt]=(Edge){v,head[u]};head[u]=cnt;}void insert(int u,int v){ins(u,v);ins(v,u);}int f[N][25],g[N][25],d,w[N];bool is[N];void dp(int u,int fa){g[u][d+1]=inf;if(is[u])f[u][0]=g[u][0]=w[u];rep(i,1,d)g[u][i]=w[u];tra(i,u){int v=e[i].to;if(v==fa)continue;dp(v,u);per(j,d,0)g[u][j]=min(min(g[u][j]+f[v][j],g[v][j+1]+f[u][j+1]),g[u][j+1]);f[u][0]=g[u][0];rep(j,1,d+1)f[u][j]=min(f[u][j-1],f[u][j]+f[v][j-1]);}}int main(){//freopen("a.in","r",stdin);int n;scanf("%d%d",&n,&d);rep(i,1,n)scanf("%d",&w[i]);int m;scanf("%d",&m);while(m--){int x;scanf("%d",&x);is[x]=true;}rep(i,2,n){int u,v;scanf("%d%d",&u,&v);insert(u,v);}dp(1,0);printf("%d\n",f[1][0]);return 0;}
0 0
- BZOJ 4557: [JLoi2016]侦察守卫
- BZOJ 4557 [JLoi2016]侦察守卫
- bzoj 4557 [JLoi2016]侦察守卫
- bzoj 4557: [JLoi2016]侦察守卫
- [bzoj-4557][JLoi2016]侦察守卫 题解
- BZOJ 4557: [JLoi2016]侦察守卫 树形dp
- 4557: [JLoi2016]侦察守卫
- 4557: [JLoi2016]侦察守卫
- 4557: [JLoi2016]侦察守卫|树形DP
- 【bzoj4557】[JLoi2016]侦察守卫
- bzoj4557: [JLoi2016]侦察守卫
- 【bzoj4557】【JLoi2016】【树规】侦察守卫
- 【bzoj4557】【JLOI2016】【侦察守卫】【树形dp】
- 侦察守卫
- bzoj4557【JLOI2016】侦查守卫
- 【BZOJ 4557】【JLOI 2016】侦查守卫
- BZOJ 4558 [JLoi2016] 方
- BZOJ 4560 [JLoi2016]字符串覆盖
- android开发中常用颜色对应的值
- Programming Scala 第6章 demo05 参数的位置记法
- 畅通工程续(最短路)
- 【JZOJ 3401】Pty爬山
- 关于开机广播无法接受的问题
- BZOJ 4557: [JLoi2016]侦察守卫
- 【科普杂谈】会写程序还不够,硅谷杰出软件工程师都有的 5 种能力
- Light oj 1249 - Chocolate Thief【水】
- Core Data入门
- 【c程序设计语言(第二版)学习】20160326
- 安卓获取sd卡剩余空间
- shiro认证
- 动态规划 problem N
- java简单适配器的使用