又写了一遍,发出来做个记录

#include<cstdio>
#include<algorithm>
#include<iostream> using namespace std; #define N 500001 int tot=,front[N],to[N<<],nxt[N<<]; int id,dfn[N],low[N]; int fa[N],dep[N]; int dp[N];
int tmp[N],q[N]; int ans; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void add(int u,int v)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;
to[++tot]=u; nxt[tot]=front[v]; front[v]=tot;
} void circle(int x,int y)
{
int cnt=dep[y]-dep[x]+;
int now=y;
while(dfn[fa[now]]>=dfn[x]) tmp[cnt--]=now,now=fa[now];
tmp[cnt]=now;
cnt=dep[y]-dep[x]+;
int nn=cnt;
for(int i=;i<=cnt;++i) tmp[++nn]=tmp[i];
int h=,t=;
for(int i=;i<=nn;++i)
{
while(h<t && i-q[h]>cnt/) h++;
if(h<t) ans=max(ans,dp[tmp[q[h]]]+dp[tmp[i]]+i-q[h]);
while(h<t && dp[tmp[i]]-i>dp[tmp[q[t-]]]-q[t-]) t--;
q[t++]=i;
}
for(int i=;i<=cnt;++i) dp[x]=max(dp[x],dp[tmp[i]]+min(i-,cnt-i+));
} void tarjan(int x,int y)
{
dfn[x]=low[x]=++id;
int t;
for(int i=front[x];i;i=nxt[i])
{
if(i==(y^)) continue;
t=to[i];
if(!dfn[t])
{
fa[t]=x;
dep[t]=dep[x]+;
tarjan(t,i);
low[x]=min(low[x],low[t]);
}
else low[x]=min(low[x],dfn[t]);
if(dfn[x]<low[t])
{
ans=max(ans,dp[x]+dp[t]+);
dp[x]=max(dp[x],dp[t]+);
}
}
for(int i=front[x];i;i=nxt[i])
{
if(i==(y^)) continue;
t=to[i];
if(fa[t]!=x && dfn[x]<dfn[t]) circle(x,t);
}
} int main()
{
int n,m;
read(n); read(m);
int k,x,last;
while(m--)
{
read(k);
read(last);
while(--k)
{
read(x);
add(last,x);
last=x;
}
}
tarjan(,);
printf("%d",ans);
}

bzoj千题计划224:bzoj1023: [SHOI2008]cactus仙人掌图的更多相关文章

  1. bzoj千题计划113:bzoj1023: [SHOI2008]cactus仙人掌图

    http://www.lydsy.com/JudgeOnline/problem.php?id=1023 dp[x] 表示以x为端点的最长链 子节点与x不在同一个环上,那就是两条最长半链长度 子节点与 ...

  2. BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌dp)

    Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3467  Solved: 1438[Submit][Status][Discuss] Descripti ...

  3. BZOJ1023[SHOI2008]cactus仙人掌图 【仙人掌DP】

    题目 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌 图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的回路. 举例来说 ...

  4. BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌)

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的 ...

  5. BZOJ1023:[SHOI2008]cactus仙人掌图(圆方树,DP,单调队列)

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus). 所谓简单回路就是指在图上不重复经过任何一个顶点 ...

  6. bzoj千题计划175:bzoj1303: [CQOI2009]中位数图

    http://www.lydsy.com/JudgeOnline/problem.php?id=1303 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l+1, ...

  7. [bzoj1023][SHOI2008]cactus 仙人掌图 (动态规划)

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的回 ...

  8. bzoj1023: [SHOI2008]cactus仙人掌图

    学习了一下圆方树. 圆方树是一种可以处理仙人掌的数据结构,具体见这里:http://immortalco.blog.uoj.ac/blog/1955 简单来讲它是这么做的:用tarjan找环,然后对每 ...

  9. 2018.10.29 bzoj1023: [SHOI2008]cactus仙人掌图(仙人掌+单调队列优化dp)

    传送门 求仙人掌的直径. 感觉不是很难. 分点在环上面和不在环上分类讨论. 不在环上直接树形dpdpdp. 然后如果在环上讨论一波. 首先对环的祖先有贡献的只有环上dfsdfsdfs序最小的点. 对答 ...

随机推荐

  1. 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1

    最近开始转战安卓,准备把我在苹果上的应用也在安卓上来一波,其中就遇到一个问题就是最牛天气(iOS和微信小程序都已经有了,就差安卓的了)引用的百度的定位功能,需要填写发布版SHA1和开发版SHA1,作为 ...

  2. GitHub 新手教程 三,Git Bash

    1,通过 开始菜单 启动 Git Bash,或者 在 cmd 下执行以下命令: D:\SoftWare\Git\git-bash.exe --cd-to-home (D:\SoftWare\Git 是 ...

  3. SQL手工注入漏洞测试(Sql Server数据库)

    还是先找到注入点,然后order by找出字段数:4 通过SQL语句中and 1=2 union select 1,2,3……,n联合查询,判断显示的是哪些字段,就是原本显示标题和内容时候的查询字段. ...

  4. 了不起的Node.js--之五 TCP连接

    TCP连接 传输控制协议(TCP)是一个面向连接的协议,它保证了两台计算机之间数据传输的可靠性和顺序. TCP是一种传输层协议,它可以让你将数据从一台计算机完整有序地传输到另一台计算机. Node.j ...

  5. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  6. Notes of Daily Scrum Meeting(11.12)

    今天我们召开了Beta阶段MOOC项目开发的第一次Scrum Meeting,在会上就alpha阶段进行了总结,然后我们确定了 接下来的Beta阶段的项目分工,并且就每天的进度汇报做了一个约定,就是每 ...

  7. Scrum Meeting day 2

              第二次会议,开发人员会议 .  •    前端: 1. 登陆界面,login, sign up, 添加加载时的图片. 2. 主界面:采用类微信类型.应含有联系人.群聊.设置 3. ...

  8. Linux 第五章 学习笔记

    ---恢复内容开始--- 第五章 系统调用 一.与内核通信 1.系统调用在用户控件进程和硬件设备之间添加了一个中间层. 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运 ...

  9. a标签属性 rel=noopener noreferrer

    当你浏览一个页面点击一个a标签链接跳转到另一个页面时, <a href="http://www.baidu.com" target="_blank"> ...

  10. 如何用Delphi开发网游外挂

    1.动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标.键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式.2.本地修改式,这种外挂跟传统上的一些游戏修改器没有两样 ...