参考:https://www.cnblogs.com/clrs97/p/7518696.html

其实和圆方树没什么关系

设f[i][j][k]为i点选/不选,这个环的底选不选

这个底的定义是设u为这个环在dfs中第一个被扫到的点,箭头表示dfs序:

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int n,m,h[N],cnt,in[N],dfn,fa[N],f[N][2][2],a[2][2],ans;
bool tp[N],bt[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;
}
void dfs(int u,int fat)
{
in[u]=++dfn;
fa[u]=fat;
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fat&&in[e[i].to])
bt[u]=1;
f[u][1][bt[u]]=1;
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fat)
{
if(!in[e[i].to])
{
dfs(e[i].to,u);
a[0][0]=a[0][1]=a[1][0]=a[1][1]=0;
for(int j=0;j<2;j++)
for(int k=0;k<2;k++)
for(int p=0;p<2;p++)
if(!j||!p)
for(int q=0;q<2;q++)
if(!tp[e[i].to]||!j||!q)
a[j][k|(q&!tp[e[i].to])]=max(a[j][k|(q&!tp[e[i].to])],f[u][j][k]+f[e[i].to][p][q]);
for(int j=0;j<2;j++)
for(int k=0;k<2;k++)
f[u][j][k]=a[j][k];
}
else if(in[e[i].to]<in[u])
{
int x=u;
while(fa[x]!=e[i].to)
x=fa[x];
tp[x]=1;
}
}
}
int main()
{
n=read(),m=read();
for(int i=1;i<=m;i++)
{
int x=read(),y=read();
add(x,y),add(y,x);
}
for(int i=1;i<=n;i++)
if(!in[i])
{
dfs(i,0);
int nw=0;
for(int j=0;j<2;j++)
for(int k=0;k<2;k++)
nw=max(nw,f[i][j][k]);
ans+=nw;
}
printf("%d\n",ans);
return 0;
}

bzoj 4316: 小C的独立集【仙人掌dp】的更多相关文章

  1. BZOJ.4316.小C的独立集(仙人掌 DP)

    题目链接 \(Description\) 求一棵仙人掌的最大独立集. \(Solution\) 如果是树,那么 \(f[i][0/1]\) 表示当前点不取/取的最大独立集大小,直接DP即可,即 \(f ...

  2. BZOJ 4316: 小C的独立集 仙人掌 + 树形DP

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MB Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. ...

  3. 【BZOJ-4316】小C的独立集 仙人掌DP + 最大独立集

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 57  Solved: 41[Submit][Status][Discuss] ...

  4. BZOJ 4316: 小C的独立集 解题报告

    4316: 小C的独立集 Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点, ...

  5. BZOJ 4316: 小C的独立集

    4316: 小C的独立集 思路:先将树上的转移做好.然后环上的转移就是强制最上面的的点选或者不选,然后在环上跑一遍转移就可以了. 代码: #pragma GCC optimize(2) #pragma ...

  6. 【刷题】BZOJ 4316 小C的独立集

    Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...

  7. 【BZOJ】4316: 小C的独立集 静态仙人掌

    [题意]给定仙人掌图,求最大独立集(选择最大的点集使得点间无连边).n<=50000,m<=60000. [算法]DFS处理仙人掌图 [题解]参考:[BZOJ]1023: [SHOI200 ...

  8. bzoj 5072 小A的树 —— 树形DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5072 由于对于一个子树,固定有 j 个黑点,连通块大小是一个连续的范围: 所以记 f[i][ ...

  9. [BZOJ4316]小C的独立集 仙人掌?

    题目链接 因为xls让我每周模拟一次,然后学习模拟中没有学过的东西.所以就来学圆方树. 本来这道题用不着圆方树,但是圆方树是看yyb的博客学的,他在里面讲一下作为一个引子,所以也来写一下. 首先来Ta ...

随机推荐

  1. 常用linux系统监控命令

    一.内存监控 监控内存的使用状态是非常重要的,通过监控有助于了解内存的使用状态,比如内存占用是否正常,内存是否紧缺等等,监控内存最常使用的命令有free.vmstat.top等 1.1 free $ ...

  2. ubuntu如何修改root密码

    安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...

  3. MongoDB与MySQL的插入性能测试【转】

    1.1  MongoDB的简单介绍 在当今的数据库市场上,MySQL无疑是占有一席之地的.作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用.2009年,甲骨文 ...

  4. 横跨十年CPU架构回顾

    http://cpu.zol.com.cn/209/2092791_all.html#p2092791 本文导航 第1页:K7架构 打开AMD崛起大门的钥匙 第2页:玩破解 K7时代便已经拥有 第3页 ...

  5. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

  6. C# does not contain a constructor that takes no parameter

    C# 中子类要重用父类的构造函数时, 一般会在子类构造函数后面调用 : base(paratype, para). 如果父类有一个參数个数为1的构造函数, 没有 0 參构造函数. 子类想要重用这个构造 ...

  7. 文件宝iOS/iPhone/iPad客户端简介

    App Store地址:https://itunes.apple.com/cn/app/id1023365565?mt=8 文件宝-装机必备的文件管家,专业的rar-zip 解压工具,局域网看片神器, ...

  8. bash shell parameter expansion

    1 ${parameter%word}和${parameter%%word} ${parameter%word},word是一个模式,从parameter这个参数的末尾往前开始匹配.单个%进行最短匹配 ...

  9. 对云资源服务商资源读写的架构思考:前端代码走token

    第一.统一了访问端接口.提高前端开发速度:第二统一了阿里各个产品的 数据读写模式: 第三,我们的服务器产生token时对读写规则做限制,特定的token由特定的规则产生,而不是让前端代代码去管控限制 ...

  10. ubuntu16.04和服务器 caffe 安装

    在centos6.X上安装caffe 0.编译安装gcc4.8.5 由于centos6.x中的gcc版本老旧,不支持c++11所以要安装gcc4.8.5,以下是安装教程.参考CentOS 6.4 编译 ...