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默认采用的是异步加载,但 ...
随机推荐
- Java non-javadoc
Java注释 non-javadoc 表示该处没有自己的注释, @see javax.servlet.Servlet#init() 参考see后面的链接 /* * (non-javadoc) * @s ...
- MATLAB2018a与2016b分类学习模型Java库向上兼容操作
matlab2016版本无法兼容matlab2018版本Classification Learner创建的分类器 在java环境下,使用matlab2016版本调用matlab2018版本Classi ...
- python3 通过qq邮箱定时发送邮件
下面的代码为了每天定时发送监控邮件,监控什么呢?监控当天redis队列中是否有没有消费的数据,和当天mysql中新增的数据量 # -*- coding:utf-8 -*- from common.re ...
- UVALive 7464 Robots(模拟)
7464Robots Write a program to collect data from robots. We are given two sets of robotsX=fX1;:::;Xmg ...
- java的小学生四则运算
import java.awt.*; import java.awt.event.*; import java.io.FileNotFoundException; import java.io.IOE ...
- angularJS1笔记-(2)-$watch方法监听变量的变化
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- strtr、str_replace()、substr_replace、preg_replace之间的区别
strtr(string, from, to): 逐个字符开始替换,以from跟to中长度较较短的一个为准,例如: strtr("aidengni","ai", ...
- Windows下获取文件的md5码的方法
1.certutil 命令简介 本来想找一个工具 算一个文件的md5 或者是sha 值来着. 找到一个说法是 可以使用 windows 自带的命令行来处理 具体命令 certutil -hashfil ...
- OneZero第二周第一次站立会议(2016.3.28)
会议时间:2016年3月28日 会议成员:冉华,张敏,王巍,夏一鸣. 会议目的:分配第二周任务. 会议内容:由于老师要求4月1日进行Alpha发布,我们决定最优先完成消息录入功能.工作具体分配如下 1 ...
- php in_array()优化
开年首篇文章,后天上班了,正在调整状态.年前室友问我一段程序效率问题,刚好来研究下!该函数是关于判断域名字符串是否是单拼域名.双拼域名.三拼域名...多拼域名问题: //原始程序function pi ...