博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[IOI2008]Island
阅读量:6192 次
发布时间:2019-06-21

本文共 1727 字,大约阅读时间需要 5 分钟。

题目大意:

找基环树直径

(这个题输入给出的是内向基环树(虽然是无向边))

 

存在两种情况:

1.直径在树上。

2.直径从树里走到环上,再走进另外一个树里。

 

首先dfs找到环。

第一种直接树形dp。dp[i]i往下最长路径。还能用来求第二种情况。

第二种,找到环之后,断环成链,复制一倍。求的是,选择距离小于环长的两个点,贡献是两个点的dp[i],和两个点之间的距离。这个用单调队列优化dp即可。

 

bzoj会爆栈mmp

如果你是ywy可以bfs求树形dp

其实,这是一个内向基环树,所以,直接topo排序,从叶子往上面topo

即可求得dp,还能求得环。

 

代码:(dfs爆栈版)

#pragma comment(linker, "/STACK:102400000,102400000")#include
#define il inline#define reg register int #define numb (ch^'0')using namespace std;typedef long long ll;void rd(int &x){ char ch;x=0; while(!isdigit(ch=getchar())); for(x=numb;isdigit(ch=getchar());x=x*10+numb);}namespace Miracle{const int N=1e6+5;int n;struct node{ int nxt,to; ll val;}e[2*N];int hd[N],cnt=1;void add(int x,int y,int z){ e[++cnt].nxt=hd[x]; e[cnt].to=y; e[cnt].val=z; hd[x]=cnt;}bool vis[N];bool on[N];//on the huanbool in[N];int to[N],v[N];int sta[N],top;int len;//huan changint mem[2*N],tot;ll cos[2*N];int q[2*N],l,r;ll f[N];ll ans;ll sum;ll zhi;bool fl;void dfs(int x,int in_edge){// cout<<" dfs "<
<<" "<
<<" "<
<
=len) ++l; if(i!=1) sum=max(sum,f[mem[q[l]]]-cos[q[l]]+cos[i]+f[mem[i]]); while(l<=r&&f[mem[q[r]]]-cos[q[r]]<=f[mem[i]]-cos[i]) --r; q[++r]=i; } return sum;}int main(){ rd(n);int x;int z; for(reg i=1;i<=n;++i){ rd(x);rd(z); to[i]=x; v[i]=z; add(i,x,z);add(x,i,z); } for(reg i=1;i<=n;++i){ if(!vis[i]){ ans+=wrk(i); } } printf("%lld",ans); return 0;}}int main(){ Miracle::main(); return 0;}/* Author: *Miracle* Date: 2018/11/4 9:27:26*/

 

转载于:https://www.cnblogs.com/Miracevin/p/9903327.html

你可能感兴趣的文章
excel之两个sheet对比
查看>>
Kubernetes 中的服务发现与负载均衡
查看>>
windows系统使用技巧
查看>>
Python之多线程爬虫抓取网页图片
查看>>
论学好Linux系统的超级重要性
查看>>
什么是Code Review(转)
查看>>
Linux下安装Nginx详细图解教程
查看>>
Java高级部分笔记-------泛型
查看>>
SpringBoot 整合Mybatis
查看>>
初学Android
查看>>
日志管理
查看>>
SCCM 2016 + SQL 2016 + Win 2012 R2 安装教程
查看>>
我的友情链接
查看>>
火狐浏览器问题踩坑
查看>>
mysql 赋权细节!!
查看>>
我的友情链接
查看>>
Log4j 1使用教程
查看>>
Myeclipse常用快捷键
查看>>
用Linux shell 计算两个时间差
查看>>
window 环境 spring boot 发布脚本整理
查看>>