bzoj1149: [CTSC2007]风玲Mobiles
来源:互联网 发布:淘宝男鞋高仿店推荐 编辑:程序博客网 时间:2024/04/29 18:00
传送门
脑残模拟题。
如果叶节点深度之差>1无解。
暴力判断两种深度的节点是否存在。
如果左右子树都有不合法。
暴力判断是否要交换即可。
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int c[4][4]={{0,0,0,0},{0,0,0,0},{0,1,0,1},{0,1,0,0}};int a[100005],b[100005],n,mi,ma,ans;int read(){ int k=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ k=k*10+ch-'0'; ch=getchar(); } return k*f;}void dfs(int x,int dep){ if (x==-1){ ma=max(ma,dep); mi=min(mi,dep); return; } dfs(a[x],dep+1); dfs(b[x],dep+1);}int dp(int x,int dep){ if (x==-1) return dep==mi?2:1; int l=dp(a[x],dep+1); int r=dp(b[x],dep+1); if (l+r==6){ printf("-1"); exit(0); } ans+=c[l][r]; return l|r;}int main(){ n=read(); for (int i=1;i<=n;i++){ a[i]=read(); b[i]=read(); } mi=10000000; ma=0; dfs(1,0); if (ma>mi+1){ printf("-1"); return 0; } if (ma==mi){ printf("0"); return 0; } dp(1,0); printf("%d",ans); return 0;}
0 0
- bzoj1149: [CTSC2007]风玲Mobiles
- bzoj1149: [CTSC2007]风玲Mobiles
- 1149: [CTSC2007]风玲Mobiles
- BZOJ 1149: [CTSC2007]风玲Mobiles 题解
- BZOJ 1149 CTSC2007 风玲Mobiles DFS
- bzoj 1149 [CTSC2007]风玲Mobiles dfs
- 【bzoj1149】【ctsc2007】【风铃】【dp】
- 【ctsc2007】【挂缀】
- 【APIO】风铃(mobiles)
- APIO-07Mobiles
- bzoj1149/2895 [JSOI2009]球队收益
- 【NOI2005】【BZOJ1149】【vijos1834】瑰丽的华尔兹
- [CTSC2007]挂缀pendant
- 【贪心】【CTSC2007】【cogs1584】挂缀
- [CTSC2007]挂缀 解题报告
- 【CTSC2007】挂缀 贪心
- COGS 1584. [CTSC2007]挂缀
- [CTSC2007] 数据备份Backup
- static与const的作用
- Maven所遇到的坑
- Go语言基础学习八-映射
- ARM中MRS和MSR汇编指令
- Reactive Native环境搭建(Android)
- bzoj1149: [CTSC2007]风玲Mobiles
- 我看见一个妹子很不想说他的
- VTK编译的一些报错
- 循环节长度
- 剑指Offer 38 数字在排序数组中出现的次数
- LeetCode: 46. Permutations
- 停止worker脚本
- POJ 3669-Meteor Shower [bfs] 《挑战程序设计竞赛》2.1
- java OOP 继承