bzoj 4871: [Shoi2017]摧毁“树状图”【树形dp】
做不来……参考https://www.cnblogs.com/ezyzy/p/6784872.html

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int T,o,n,h[N],cnt,f[N],g[N],q[N],q1[N],l[N],l1[N];
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】的更多相关文章
- bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
4871: [Shoi2017]摧毁"树状图" 题意:一颗无向树,选两条边不重复的路径,删去选择的点和路径剩下一些cc,求最多cc数. update 5.1 : 刚刚发现bzoj上 ...
- bzoj 4871: [Shoi2017]摧毁“树状图”
4871: [Shoi2017]摧毁“树状图” Time Limit: 25 Sec Memory Limit: 512 MBSubmit: 53 Solved: 9[Submit][Status ...
- BZOJ4871 Shoi2017摧毁“树状图”(树形dp)
设f[i][0/1/2/3/4/5]表示i子树中选一条链不包含根/i子树中选一条链包含根但不能继续向上延伸/i子树中选一条链可以继续向上延伸/选两条链不包含根/选两条链包含根但不能继续向上延伸/选两条 ...
- bzoj4871 [Heoi2017]摧毁“树状图”
刷完了去年的省选题,发现自己dp已经凉凉了. 虽然暴力可以拿到80分的好成绩,但是正解的dp状态和转移还是没能想到,是时候补一波dp了 这道题我们肯定是要树形dp,存的肯定就是子树某种状态的最多的联通 ...
- P3748 [六省联考2017]摧毁“树状图”
传送门 显然是可以树形 $dp$ 的 对每个节点维护以下 $5$ 个东西 $1.$ 从当前节点出发往下的链的最大贡献 $2.$ 节点子树内不经过本身的路径最大贡献 $3.$ 节点子树内经过本身的路径的 ...
- Android一个炫酷的树状图组织架构图开源控件实现过程
Android一个炫酷的树状图组织架构图开源控件 文章目录 [1 简介] [2 效果展示] [3 使用步骤] [4 实现基本布局流程] [5 实现自由放缩及拖动] [6 实现添加删除及节点动画] [7 ...
- SqlServer-无限递归树状图结构设计和查询
在现实生活中,公司的部门设计会涉及到很多子部门,然后子部门下面又存在子部门,形成类似判断的树状结构,比如说评论楼中楼的评论树状图,职位管理的树状图结构等等,实现类似的树状图数据结构是在开发中经常出现的 ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- D3树状图给指定特性的边特别显示颜色
D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白 ...
随机推荐
- MAC上Nuclide的安装
MAC上Nuclide的安装 本文版权归作者全部,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyu ...
- 软件系统架构 https://www.lanhusoft.com/Article/349.html
跟蓝狐学习Nop--NopCommerce源码架构详解专题目录 Posted By : 蓝狐 Updated On : 2018-04-16 14:46 我们承接以下nop相关的业务,欢迎联系我们. ...
- Web优化 --利用css sprites降低图片请求
sprites是鬼怪,小妖精,调皮鬼的意思,初听这个高端洋气的名字我被震慑住了,一步步掀开其面纱后发觉非常easy的东西.作用却非常大 什么是CSS Sprites CSS Sprites是指把网页中 ...
- Jquery-easyui的默认图标的使用,以及如何添加自己想要的图标
easyui的默认图标有以下这些: .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background: ...
- const *char p和char const *p
const *char p和char const *p,const char*p的区别 char*const p——p必须初始化,且不能指向别处,即p是指针常量: char const*p——p指向的 ...
- OpenGL之路(五)制作旋转飞机模型
#include <gl/glut.h> #include <gl/GLU.h> #include <gl/GL.h> #pragma comment(lib, & ...
- UVA - 12338 Anti-Rhyme Pairs 二分+hash
题目链接:传送门 题意: 给你n个串 问你任意两个串的最大公共前缀长度是多少 题解: 二分+hash 思路很明显,我最近用来写hash 很鸡肋 #include<bits/stdc++.h> ...
- jws webservice code
1.服务器端建立 1.1.创建接口 [java] view plaincopy @WebService public interface IWebService { int add(int ...
- 在线安装Ganglia3.6.0,nginx+php搭建gweb,绝对通过
环境:CentOS6.5 minimal 目标:安装Ganglia核心组件(gmond, gmetad, gmetric, gstat, libganglia).Ganglia web 准备 yum增 ...
- IDHTTP用法详解 good
一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...