L2-012 關於堆的判斷
L2-012 關於堆的判斷
https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888
題目
將一系列給定數字順序插入一個初始為空的小頂堆H[]
。隨後判斷一系列相關命題是否為真。命題分下列幾種:
x is the root
:x
是根結點;x and y are siblings
:x
和y
是兄弟結點;x is the parent of y
:x
是y
的父結點;x is a child of y
:x
是y
的一個子結點。
輸入
每組測試第1行包含2個正整數N
(≤ 1000)和M
(≤ 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間[−10000,10000]內的N
個要被插入一個初始為空的小頂堆的整數。之後M
行,每行給出一個命題。題目保證命題中的結點鍵值都是存在的。
輸出
對輸入的每個命題,如果其為真,則在一行中輸出T
,否則輸出F
。
樣例輸入
5 4
46 23 26 24 10
24 is the root
26 and 23 are siblings
46 is the parent of 23
23 is a child of 10
樣例輸出
F
T
F
T
分析
二叉堆
C++程式
#include<iostream>
#include<string>
#include<map>
using namespace std;
const int N=1005;
int a[N];
map<int,int>pos;
//向堆中插入元素
void up(int start)
{
int c=start,tmp=a[c];
while(c>0&&a[(c-1)/2]>tmp)
{
a[c]=a[(c-1)/2];
c=(c-1)/2;
}
a[c]=tmp;
}
int main()
{
int n,m,x,y;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
up(i);
}
for(int i=0;i<n;i++)
pos[a[i]]=i;//元素a[i]的位置在i
while(m--)
{
string s,s1,s2,s3,tmp;
cin>>x>>s;
if(s=="is")
{
cin>>s1>>s2;
s3=s1+s2;
if(s3=="theroot")
{
printf("%c\n",(pos[x]==0)?'T':'F');
}
else if(s3=="theparent")
{
cin>>tmp>>y;
printf("%c\n",((pos[y]-1)/2==pos[x])?'T':'F');
}
else if(s3=="achild")
{
cin>>tmp>>y;
printf("%c\n",((pos[x]-1)/2==pos[y])?'T':'F');
}
}
else
{
cin>>y;
getline(cin,tmp);
//是否為兄弟
printf("%c\n",((pos[x]-1)/2==(pos[y]-1)/2)?'T':'F');
}
}
return 0;
}
相關文章
- 關於堆
- 記一次關於js陣列型別判斷及js型別判斷的細節探索JS陣列型別
- 聊一下關於判斷資料型別資料型別
- 判斷單連結串列是否關於中心對陣
- 關乎效能的判斷,請作出果斷選擇
- JAVA關於判斷年份是閏年還是平年的問題Java
- day31-33 關於點選事件內的判斷語句事件
- JS的判斷語句:判斷、迴圈JS
- C中關於堆疊的總結
- 使用帶型別判斷的比較判斷型別
- js函式中的if判斷和a==b判斷JS函式
- Spring Security 基於URL的許可權判斷Spring
- mybatis中 if 標籤 test 等於判斷MyBatis
- Flutter 如何判斷 Widget 位於前臺Flutter
- 如何判斷股票有沒有主力?主力的判斷方法
- 淺談基於Shapley值的資料融合反欺騙資料判斷相關
- 判斷NaN的真假NaN
- 質數的判斷
- 怎麼判斷dns汙染,怎麼判斷dns汙染,具體判斷方法DNS
- 多個陣列,判斷從屬關係陣列
- 關於php依據使用者當前定位判斷距離最近的商家或者別的PHP
- python實現基於八方向判斷的斷裂連線Python
- if 判斷使用
- postman關於斷言的設定Postman
- 基於機率判斷矩陣A*B是否等於C矩陣
- js基礎-12-判斷陣列和判斷物件的方法JS陣列物件
- java Script 的if判斷2Java
- 判斷語句的使用
- 移動端的判斷
- python if判斷的使用格式Python
- 前端筆記之JavaScript(二)關於運算子&初識條件判斷語句前端筆記JavaScript
- 關於JVM堆外記憶體的一切JVM記憶體
- 【資料庫】關係模式的正規化的簡明判斷資料庫模式
- AutoCAD C# 判斷多邊形與點的位置關係C#
- 判斷空值
- 素數判斷
- 原型判斷方法原型
- 判斷素數