bzoj 4871: [Shoi2017]摧毁“树状图”【树形dp】
2018-10-24 19:43
549 查看
做不来……参考https://www.cnblogs.com/ezyzy/p/6784872.html
#include<iostream> #include<cstdio> using namespace std; const int N=100005; int T,o,n,h ,cnt,f ,g ,q ,q1 ,l ,l1 ; struct qwe { int ne,to; }e[N<<1]; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } void add(int u,int v) { cnt++; e[cnt].ne=h[u]; e[cnt].to=v; h[u]=cnt; } inline int mx2(int a,int b) { return a>b?a:b; } inline int mx3(int a,int b,int c) { return mx2(a,mx2(b,c)); } inline int mx4(int a,int b,int c,int d) { return mx2(mx2(a,b),mx2(c,d)); } inline int mx6(int a,int b,int c,int d,int e,int f) { return mx2(mx2(a,b),mx2(mx2(c,d),mx2(e,f))); } void dfs(int u,int fa) { int tot=0,mx=0; for(int i=h[u];i;i=e[i].ne) if(e[i].to!=fa) { dfs(e[i].to,u); int tf,tg,tq,tq1,tl,tl1; tf=mx4(f[u],f[e[i].to],q[e[i].to]+1,q1[e[i].to]+1); tg=mx6(g[u],g[e[i].to],f[u]+q[e[i].to],f[u]+q1[e[i].to],l[e[i].to]+1,l1[e[i].to]+1); tq=mx2(q[u]+1,q[e[i].to]+tot); tq1=mx2(q1[u]+1,q[u]+q[e[i].to]); tl=mx6(l[u]+1,l[e[i].to]+tot,q[u]+f[e[i].to],q1[u]+q[e[i].to],q1[e[i].to]+q[u],q[e[i].to]+mx); tl1=mx6(l1[u]+1,q1[e[i].to]+q1[u],l[u]+q[e[i].to],l[e[i].to]+q[u],q1[u]+f[e[i].to],q[e[i].to]+l[u]); mx=mx4(mx+1,tot+q1[e[i].to],tot+q[e[i].to],tot+f[e[i].to]); tot++; f[u]=tf,g[u]=tg,q[u]=tq,q1[u]=tq1,l[u]=tl,l1[u]=tl1; } q[u]=mx2(q[u],tot); } int main() { T=read(),o=read(); while(T--) { n=read(); if(o==1) read(),read(); else if(o==2) read(),read(),read(),read(); for(int i=1;i<n;i++) { int x=read(),y=read(); add(x,y),add(y,x); } dfs(1,0); printf("%d\n",mx3(g[1],l1[1],l[1])); cnt=0; for(int i=1;i<=n;i++) h[i]=0; for(int i=1;i<=n;i++) f[i]=g[i]=q[i]=q1[i]=l[i]=l1[i]=0; } return 0; }
相关文章推荐
- bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
- bzoj4871: [Shoi2017]摧毁“树状图” //树形dp
- bzoj 4871: [Shoi2017]摧毁“树状图”
- 【BZOJ4871】【SHOI2017】摧毁“树状图”
- 【SHOI&SXOI2017】bzoj4871 摧毁“树状图”
- 4871: [Shoi2017]摧毁“树状图”
- BZOJ4872: [Shoi2017]分手是祝愿-期望dp
- BZOJ 3566: [SHOI2014]概率充电器 期望DP + 树形DP
- bzoj1023 [SHOI2008]cactus仙人掌图 树形DP+单调队列
- 【bzoj4872】[Shoi2017]分手是祝愿 数论+期望dp
- bzoj 4890: [Tjoi2017]城市 树形dp
- 【BZOJ4872】【SHOI2017】分手是祝愿 期望DP
- [BZOJ4824][CQOI2017]老C的键盘(树形DP)
- BZOJ4890 [Tjoi2017]城市 【树形dp】
- bzoj 4813: [Cqoi2017]小Q的棋盘 树形dp
- bzoj 4824: [Cqoi2017]老C的键盘【树形dp】
- BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
- bzoj 4784: [Zjoi2017]仙人掌【tarjan+树形dp】
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
- 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP