bzoj 4871: [Shoi2017]摧毁“树状图”
4871: [Shoi2017]摧毁“树状图”
Time Limit: 25 Sec Memory Limit: 512 MB
Submit: 53 Solved: 9
[Submit][Status][Discuss]
Description
Input
Output
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 100005
using namespace std;
int read()
{
int p=0;char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')p=p*10+c-'0',c=getchar();
return p;
}
int cas,t,n;
int head[N],nxt[N*2],ver[N*2],tot;
void add(int a,int b)
{
tot++;nxt[tot]=head[a];head[a]=tot;ver[tot]=b;return ;
}
int f[N],h[N],l[N],g[N],h1[N],l1[N];
int ans;
int mx(int a,int b)
{
if(a>b)return a;
return b;
}
void dfs(int x,int ff)
{
int num=0,mk=0;
for(int i=head[x];i;i=nxt[i])
{
if(ver[i]==ff)continue;
dfs(ver[i],x); int tf=f[x],tg=g[x],th=h[x]+1,tl=l[x]+1,th1=h1[x]+1,tl1=l1[x]+1; tf=mx(tf,f[ver[i]]);
tf=mx(tf,mx(h1[ver[i]],h[ver[i]])+1); tg=mx(tg,g[ver[i]]);
tg=mx(tg,mx(l1[ver[i]],l[ver[i]])+1);
tg=mx(tg,f[x]+mx(h1[ver[i]],h[ver[i]])); th=mx(th,h[ver[i]]+num);
tl=mx(tl,l[ver[i]]+num); th1=mx(th1,h[x]+h[ver[i]]); tl=mx(tl,h[x]+f[ver[i]]);
tl=mx(tl,h1[x]+h[ver[i]]);
tl=mx(tl,h1[ver[i]]+h[x]);
tl=mx(tl,h[ver[i]]+mk); tl1=mx(tl1,h1[ver[i]]+h1[x]);
tl1=mx(tl1,l[x]+h[ver[i]]);
tl1=mx(tl1,l[ver[i]]+h[x]);
tl1=mx(tl1,h1[x]+f[ver[i]]);
tl1=mx(tl1,h[ver[i]]+l[x]); mk=max(mk+1,num+mx(h1[ver[i]],mx(h[ver[i]],f[ver[i]])));
num++;
f[x]=tf;g[x]=tg;h[x]=th;l[x]=tl;l1[x]=tl1;h1[x]=th1; }
h[x]=max(h[x],num);
return ;
}
int main()
{
cas=read();t=read();
int t1,t2,t3,t4;
while(cas--)
{
if(!t)n=read();
else if(t==1)n=read(),t1=read(),t2=read();
else n=read(),t1=read(),t2=read(),t3=read(),t4=read();
for(int i=1;i<n;i++)
{
t1=read();t2=read();
add(t1,t2);add(t2,t1);
}
dfs(1,-1);
printf("%d\n",mx(g[1],mx(l1[1],l[1])));
tot=0;
for(int i=1;i<=n;i++)head[i]=0;
for(int i=1;i<=n;i++)h[i]=f[i]=l[i]=g[i]=l1[i]=h1[i]=0;
}
return 0;
}
bzoj 4871: [Shoi2017]摧毁“树状图”的更多相关文章
- bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
4871: [Shoi2017]摧毁"树状图" 题意:一颗无向树,选两条边不重复的路径,删去选择的点和路径剩下一些cc,求最多cc数. update 5.1 : 刚刚发现bzoj上 ...
- bzoj 4871: [Shoi2017]摧毁“树状图”【树形dp】
做不来--参考https://www.cnblogs.com/ezyzy/p/6784872.html #include<iostream> #include<cstdio> ...
- 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.$ 节点子树内经过本身的路径的 ...
- SqlServer-无限递归树状图结构设计和查询
在现实生活中,公司的部门设计会涉及到很多子部门,然后子部门下面又存在子部门,形成类似判断的树状结构,比如说评论楼中楼的评论树状图,职位管理的树状图结构等等,实现类似的树状图数据结构是在开发中经常出现的 ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- D3树状图给指定特性的边特别显示颜色
D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白 ...
- D3树状图异步按需加载数据
D3.js这个绘图工具,功能强大不必多说,完全一个Data Driven Document的绘图工具,用户可以按照自己的数据以及希望实现的图形,随心所欲的绘图. 图形绘制,D3默认采用的是异步加载,但 ...
随机推荐
- 最新Python笔试题2017 涵盖知识面广泛
引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...
- Python基础_异常处理与跟踪
异常的种类 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或 ...
- Python之并发编程-协程
目录 一.介绍 二. yield.greenlet.gevent介绍 1.yield 2.greenlet 3.gevent 一.介绍 协程:是单线程下的并发,又称微线程,纤程.英文名Coroutin ...
- reduce()用法
reduce()方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值 参数 callback 执行数组中的每个值的函数,包含四个参数 previousValue 上一次调用回调 ...
- 团队项目-NABCD
用户需求分析与NABCD 模拟经营类(SIM)游戏:玩家模拟经营一家软件公司,平台初步定为Android. Need需求 任何一款游戏都要有自己的定位和目标群体,这些 iiMediaResearch数 ...
- 20162328蔡文琛week08
学号 20162328 <程序设计与数据结构>第X周学习总结 教材学习内容总结 错误和异常代表不常见的或不正确处理的对象. 抛出异常时输出的消息提供了方法调用栈的轨迹. 每个catch子句 ...
- 初学Cocos2dx
初学cocos2dx Cocos2dx 中的主要概念包括:应用.导演.场景.层.精灵.动画.动作. Cocos2dx里面的主要类 1.CCObject Object Object Object 是co ...
- Hibernate的使用技巧②
1.Hibernate统计记录的数量 Criteria c = session.createCriteria(User.class.getName()); c.setProjection ...
- 使用myeclipse2014整合ss2h
使用myeclipse2014整合ssh 新建一个webproject 创建过程中注意选择生成web.Xml 先添加struts2的能力 选择都添加过滤器的选项 Core dojo Dwr spr ...
- HTTP&HTTPS、GET&POST
1.HTTP&HTTPS: HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure ...