【暴力】vijos P1897 学姐吃牛排

判断堆:递归判断每个节点的孩子是否都比其父亲大(小)。

判断BST:中序遍历是否有序。

 1 #include<cstdio>
 2 using namespace std;
 3 #define lc (rt<<1)
 4 #define rc (rt<<1|1)
 5 int T,n,a[1001],b[1001],en;
 6 void Mid(int rt)
 7 {
 8     if(lc<=n) Mid(lc);
 9     b[++en]=a[rt];
10     if(rc<=n) Mid(rc);
11 }
12 bool is_BST()
13 {
14     bool f1=1,f2=1; en=0; Mid(1);
15     for(int i=2;i<=n;i++) if(b[i]<b[i-1]) {f1=0; break;}
16     if(f1) return 1;
17     for(int i=2;i<=n;i++) if(b[i]>b[i-1]) {f2=0; break;}
18     if(f2) return 1;
19     return 0;
20 }
21 bool is_Heap(int rt)
22 {
23     if(lc<=n)
24       {
25           if(a[lc]>a[rt]) return 0;
26           if(!is_Heap(lc)) return 0;
27       }
28     if(rc<=n)
29       {
30           if(a[rc]>a[rt]) return 0;
31           if(!is_Heap(rc)) return 0;
32       }
33     return 1;
34 }
35 bool is_Heap_2(int rt)
36 {
37     if(lc<=n)
38       {
39           if(a[lc]<a[rt]) return 0;
40           if(!is_Heap_2(lc)) return 0;
41       }
42     if(rc<=n)
43       {
44           if(a[rc]<a[rt]) return 0;
45           if(!is_Heap_2(rc)) return 0;
46       }
47     return 1;
48 }
49 int main()
50 {
51     scanf("%d",&T);
52     for(int i=1;i<=T;i++)
53       {
54           printf("Case #%d: ",i);
55           scanf("%d",&n);
56           for(int j=1;j<=n;j++) scanf("%d",&a[j]);
57           bool flag1=0,flag2=0;
58           if(is_BST()) flag1=1;
59           if(is_Heap(1)) flag2=1;
60           if((!flag2)) if(is_Heap_2(1)) flag2=1;
61           if(flag1&&flag2) puts("Both");
62           else if(flag1) puts("BST");
63           else if(flag2) puts("Heap");
64           else puts("Neither");
65       }
66     return 0;
67 }
时间: 2024-08-25 20:34:46

【暴力】vijos P1897 学姐吃牛排的相关文章

qwb与学姐 (带秩并查集)

qwb与学姐 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 149  Solved: 54[Submit][Status][Web Board] Description qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义路径的值为这条路径上最短的边的长度,现在有 k个询问,询问从A点到B点的所有路径的值的最大值.qwb听完这个问题很绝望啊,聪明的你能帮帮他吗? Input 一组数据.第一行三

vijosP1903学姐的实习工资

描述 学姐去实习了, 一共实习了N天, 每一天都可以得到实习工资V[i], 这里V[1..N]被看作是整数序列.因为学姐很厉害, 所以V[1..N]是不下降的.也就是说学姐每天的工资只会越来越多, 不会变少.然而遗憾的是, 偷懒的学姐只记下来了其中M天的收入.第A[1]天获得了的工资为B[1].第A[2]天获得了的工资为B[2].第A[3]天获得了的工资为B[3]....第A[M]天获得了的工资为B[M].其中A[]是递增的.好在她记下来了第一天和第N天的收入. 也就是说A[1]=1, A[M]

卿学姐与魔法

“你的膜法也救不了你 在去拯救公主的道路上,卿学姐披荆斩棘,刀刃早已锈迹斑斑. 一日卿学姐正在为武器的问题发愁,碰到了正在赏树的天行廖. 天行廖嘴角微扬,似乎看穿了卿学姐的心思,故意在此等待. “少年,你渴望掌握雷电的力量吗?”天行廖如是问道. 已经差不多是条咸鱼的卿学姐欣然答应了.于是卿学姐开始跟随魔法大师天行廖学习魔法的力量. 刚入门的卿学姐发现,每个魔法都是由两种基本元素构成的,A元素和B元素. 而每个魔法的魔力是合成这个魔法的A元素和B元素的大小的和. 例如一个大小为3的A元素和一个大小

学长学姐们的测试-2

  学长学姐们觉得出测试题很有趣呢!于是刚刚返校的我们就又迎来了一次测试.  考试难度:队列:出题人:Cansult,Slr,Milky-way.  当然这个难度是不用信的,因为它并不靠谱... T1:宽嫂的小裙子 题意概述:Cansult得到了一块m*n的布,要把它裁成一个个正方形做裙子,还要对每一块剪开的布进行锁边(只锁一边就可以),最小化这个代价. 看起来像个贪心,事实上也是,每次按照最大的裁,裁到裁完为止...然后我就爆0啦!因为没开longlong,果然一个中考过去什么都忘了...  

2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运算(模二意义下0.1互换,注意前导0也要交换),然后在任意相邻的两个数之间插入二进制与.二进制或,或者二进制异或.现在他想知道这样计算完产生的最美妙的数字是多少. 一共T组数据.对于每组数据,第一行一个n,表示这组数据中一串数有多少个.下面n个非负整数,表示这串数. 样例输入 2 2 3 6 3 1

Vijos1901 学姐的钱包

描述 学姐每次出门逛街都要带恰好M元钱, 不过她今天却忘记带钱包了.可怜的doc只好自己凑钱给学姐, 但是他口袋里只有一元钱.好在doc的N位朋友们都特别有钱, 他们答应与doc作一些交换.其中第i位朋友说:如果doc有不少于Ri元钱,doc可以把手上所有的钱都给这位朋友,并从这位朋友手中换回Vi元钱,但是这次交换会浪费Ti的时间.doc希望可以在最短的时间内换到M元钱(其实是可以大于M的, 因为doc可以存私房钱呢), 否则学姐会生气的! 格式 输入格式 输入数据第一行给定T, 表示总的询问次

卿学姐与魔法(优先队列)

个人心得:思路很简单,不过就是会超时,而且直接用数组的话肯定不够大. 所以就用优先队列,让里面只装N个数就好了,然后再次添加时进行比较,比他小就放进去. 不过这样超时,所以先将A,B排序,然后只要比队首大就break就可以过了. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<queue> 6 #include<

A - 卿学姐与公主(线段树+单点更新+区间极值)

A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了高山,跨过了大洋,卿学姐来到了魔王的第一道城关. 在这个城关面前的是魔王的精锐部队,这些士兵

qwb与学姐

qwb与学姐 Time Limit: 1 Sec  Memory Limit: 128 MB Description qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义路径的值为这条路径上最短的边的长度,现在有 k个询问,询问从A点到B点的所有路径的值的最大值.qwb听完这个问题很绝望啊,聪明的你能帮帮他吗? Input 一组数据.第一行三个整数n,m,k (1<=N<=50000,m<=200000,k<=100000).