codevs 2977 二叉堆练习1x
2017-03-31 17:54
232 查看
时间限制: 10 s
空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description已知一个二叉树,判断它是否为二叉堆(小根堆)
输入描述 Input Description二叉树的节点数N和N个节点(按层输入)
输出描述 Output DescriptionYES或NO
样例输入 Sample Input样例输入1
3
1 4 9
样例输入2
3
6 4 9
样例输出 Sample Output样例输出1
YES
样例输出2
NO
数据范围及提示 Data Size & Hint对于20%的数据 N≤20
对于50%的数据 N≤1000
对于100%的数据 N≤50000,每个节点≤10000
分类标签 Tags 点此展开
代码如下
#include <cstdlib> #include <cstdio> #include <iostream> using namespace std; int n,tree[100001],bb,n1; int pd()//是否为小根堆 { for (int i=n1-1; i>=2; i--) { if (tree[i]>tree[i/2] && !bb) return 0;//当n为0时 if (tree[i]<tree[i/2] && bb) return 0; } return 1; } int main() { scanf("%d",&n); n1=n; for (int i=1; i<=n; i++) scanf("%d",&tree[i]); while (tree[n1]==tree[n1/2]) n1--; if (tree[n1]>tree[n1/2]) bb=1; if (pd()) cout<<"YES"; else cout<<"NO"; return 0; }
相关文章推荐
- AC日记——二叉堆练习3 codevs 3110
- codevs 3110 二叉堆练习3
- 【codevs 1080】线段树练习 之 花样解法
- 【codevs1082】线段树练习3 线段树
- 【基础练习】【floyd+枚举】codevs1020 孪生蜘蛛题解
- 【codevs1281】Xn数列,矩阵乘法练习
- codevs 1080 线段树练习
- Codevs 1081 线段树练习2
- [Codevs] 1080 线段树练习
- [树状数组]code[vs] 1082——线段树练习 3
- T3186 队列练习2 codevs
- 【codevs1286】【BZOJ1503】郁闷的出纳员,splay练习
- codevs 1082 线段树练习3 模板题
- 【基础练习】【线性DP】codevs2622 数字序列(最大连续子序列和)题解
- 【基础练习】【SPFA】codevs1557 热浪题解
- 【codevs1946】【BZOJ2434】阿狸的打字机,AC自动机练习
- Codevs_P3185 队列练习1
- 【基础练习】【线性DP+离散化】codevs1105 过河题解
- 【codevs1565】【BZOJ2242】计算器,数论练习
- codevs1081 线段树练习 2<区间修改>