BZOJ4316: 小C的独立集
来源:互联网 发布:手机录音放大软件 编辑:程序博客网 时间:2024/05/17 08:31
很裸的仙人掌DP (奇怪的是没有人来做
这是第一次独自打仙人掌DP
打的时候可能因为思路比较清晰 然后只有一个low打错了
然后需要说的是po姐貌似程序有问题。。我的一个小数据他就坏了。。
9 9
2 3
3 4
4 2
5 6
6 3
7 8
8 2
9 2
1 3
就是这个。。。
#include<cstdio>#include<iostream>#include<cstring>using namespace std;struct Chain{ Chain *next; int u; Chain(){ next=NULL; }}*Head[100001];inline void addside(int a,int b){Chain *tp=new Chain;tp->u=b;tp->next=Head[a];Head[a]=tp;}int F[100001][3];int Out_Cir[100001][3];int Stack[100001];int low[100001],f[100001],deep[100001],now[100001];int cnt;int f_DP[100001][3];inline void DP(int root,int low){ int n=1;Stack[0]=root;Stack[1]=low;while(true){if(Stack[n]==root)break;Stack[n+1]=f[Stack[n++]];}//root buquint Old[3]; f_DP[0][0]=f_DP[0][1]=0; for(int i=1;i<=n;i++) f_DP[i][1]=f_DP[i-1][0]+Out_Cir[Stack[i]][1], f_DP[i][0]=max(f_DP[i-1][0],f_DP[i-1][1])+Out_Cir[Stack[i]][0]; Old[0]=f_DP[n][0]; //qu f_DP[0][0]=-(1<<29); for(int i=1;i<=n;i++) f_DP[i][1]=f_DP[i-1][0]+Out_Cir[Stack[i]][1], f_DP[i][0]=max(f_DP[i-1][0],f_DP[i-1][1])+Out_Cir[Stack[i]][0];Old[1]=f_DP[n][1]; Out_Cir[root][1]=Old[1]; Out_Cir[root][0]=Old[0];}void DFS(int u){low[u]=now[u]=++cnt; Out_Cir[u][1]=1;Out_Cir[u][0]=0;if(u==28) u++,u--;for(Chain *tp=Head[u];tp;tp=tp->next) if(tp->u!=f[u]) { if(deep[tp->u]) low[u]=min(low[u],now[tp->u]); else { f[tp->u]=u; deep[tp->u]=deep[u]+1; DFS(tp->u); if(low[tp->u]>now[u]) Out_Cir[u][1]+=Out_Cir[tp->u][0], Out_Cir[u][0]+=max(Out_Cir[tp->u][1],Out_Cir[tp->u][0]);low[u]=min(low[u],low[tp->u]); } }if(u==17) u++,u--;for(Chain *tp=Head[u];tp;tp=tp->next) if(tp->u!=f[u]&&low[tp->u]==now[u]&&deep[tp->u]!=deep[u]+1) DP(u,tp->u);}char c;inline void read(int &a){a=0;do c=getchar();while(c<'0'||c>'9');while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}int main(){int n,m;read(n),read(m);while(m--) { int i,j; read(i),read(j); addside(i,j); addside(j,i); }deep[1]=1;f[1]=1;DFS(1);printf("%d\n",max(Out_Cir[1][0],Out_Cir[1][1]));return 0;}
0 0
- BZOJ4316: 小C的独立集
- 【BZOJ4316】小C的独立集
- BZOJ4316 小C的独立集
- BZOJ4316: 小C的独立集
- [BZOJ4316][仙人掌][DP]小C的独立集
- [BZOJ4316]小C的独立集-圆方树-动态规划
- BZOJ 4316 小C的独立集
- 4316: 小C的独立集
- BZOJ 4316 小C的独立集 仙人掌DP
- bzoj 4316: 小C的独立集 树形dp
- [仙人掌DP] BZOJ 4316 小C的独立集
- 独立的小易
- 独立的小易
- 【算法小总结】二分图的最大独立集
- 网易笔试:独立的小易
- [编程题] 独立的小易
- 网易编程题 独立的小易
- [编程题] 独立的小易
- 正则表达式、扩展表达式以及相关实战
- ubuntu配置全局环境变量后开新shell变量无效的解决方法
- ASIHTTPRequest -- 断点续传
- hdu1082 Matrix Chain Multiplication
- Open Panel as ToolStrip MenuItem after click on menu C#
- BZOJ4316: 小C的独立集
- iOS AVPlayer音频播放应用
- js中将字符串转换成数字
- 微信创建自定义菜单和删除自定义菜单
- 使用ViewGrop和Fragment对Fragmen进行缓存
- 在Ubuntu下安装nodejs4.x,并实现开机自动启动forever进程守护nodejs应用后台运行
- 全局大喇叭,广播机制初篇。
- 访问注解与自定义注解
- lightoj 1017 - Brush (III)