【JZOJ 5248】【NOIP2017提高A组模拟8.10】花花的聚会
2017-08-10 17:15
429 查看
Description
Solution
这一题很显然可以想到树形DP嘛,设fx表示x走到根,最小的代价,
对于每个点,能转移过来的,只有在它上面能走到的,
那么直接用数据结构记录一下上边的最小值即可,
用RMQ代码最短
复杂度:O(nlog(n))
Code
#include <cstdio> #include <cstdlib> #include <cmath> #define fo(i,a,b) for(int i=a;i<=b;i++) #define efo(i,q) for(int i=A[q];i;i=B[i][0]) #define min(q,w) ((q)>(w)?(w):(q)) using namespace std; const int N=100500; int read(int &n) { char ch=' ';int q=0,w=1; for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar()); if(ch=='-')w=-1,ch=getchar(); for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n; } int m,n,ans; int a ; int B[2*N][2],A ,B0; int B1[2*N][3],A1 ,B10; int b1 [2];//ci pay int er[20],lg ; int rmq [20],f ; void link(int q,int w) { B[++B0][0]=A[q],A[q]=B0,B[B0][1]=w; B[++B0][0]=A[w],A[w]=B0,B[B0][1]=q; } void link1(int q,int w,int e) { B1[++B10][0]=A1[q],A1[q]=B10,B1[B10][1]=w,B1[B10][2]=e; } int RMQ(int l,int r){return min(rmq[r][lg[r-l+1]],rmq[l-1+er[lg[r-l+1]]][lg[r-l+1]]);} void dfs(int q,int fa,int c) { f[q]=2e9; for(int i=A1[q];i;i=B1[i][0]) { int t=B1[i][2]; if(B1[i][1]<c-1)t+=RMQ(c-B1[i][1],c-1); f[q]=min(f[q],t); } rmq[c][0]=f[q]; fo(i,1,19)if(c-er[i-1]>0)rmq[c][i]=min(rmq[c][i-1],rmq[c-er[i-1]][i-1]); else rmq[c][i]=rmq[c][i-1]; efo(i,q)if(B[i][1]!=fa)dfs(B[i][1],q,c+1); } int main() { int q,w,e; read(n),read(m); fo(i,1,n)lg[i]=log2(i); er[0]=1;fo(i,1,19)er[i]=er[i-1]<<1; fo(i,1,n-1)read(q),read(w),link(q,w); fo(i,1,m)read(q),read(w),read(e),link1(q,w,e); dfs(1,0,1); read(m); f[1]=0; fo(i,1,m)read(q),printf("%d\n",f[q]); return 0; }
相关文章推荐
- 【jzoj5248】【NOIP2017提高A组模拟8.10】【花花的聚会】【动态规划】【可持久化线段树】
- JZOJ5248. 【NOIP2017提高A组模拟8.10】花花的聚会
- 花花的聚会【NOIP2017提高A组模拟8.10】
- JZOJ5249. 【NOIP2017提高A组模拟8.10】文本编辑器
- 【jzoj5247】【NOIP2017提高A组模拟8.10】【计算几何】【二分答案】
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 4000 (Standard IO)
- 【JZOJ 5249】【NOIP2017提高A组模拟8.10】文本编辑器
- 【JZOJ5249】【NOIP2017提高A组模拟8.10】文本编辑器
- jzoj5249 【NOIP2017提高A组模拟8.10】文本编辑器 (序列修改类问题,数据结构)
- 【jzoj5286】【NOIP2017提高A组模拟8.16】【花花的森林 】【时间倒流】
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林
- jzoj5336 【NOIP2017提高A组模拟8.24】提米树 (dfs序dp,奇异姿势dp)
- JZOJ5400. 【NOIP2017提高A组模拟10.7】Repulsed
- 【JZOJ 5405】【NOIP2017提高A组模拟10.10】Permutation
- [JZOJ5352]【NOIP2017提高A组模拟9.7】计数题
- JZOJ 5353. 【NOIP2017提高A组模拟9.9】村通网
- 【JZOJ 4932】【NOIP2017提高组模拟12.24】B
- JZOJ5377. 【NOIP2017提高A组模拟9.19】开拓 DP
- JZOJ5379. 【NOIP2017提高A组模拟9.21】Victor爱数字
- jzoj5290 【NOIP2017提高组A组模拟8.17】行程的交集 (树上路径交,dfs序+树状数组维护姿势)