当前位置: 首页 > news >正文

天梯赛 L2-012 关于堆的判断

用数组模拟堆,其中需要注意的就是up函数的写法,

还有从字符串中读入数据,如:sscanf( s.c_str() , "%d is the root" , &x);

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
// #define int long long
typedef long long ll;
const int N = 50000;
int tree[N],idx = 1;
//建小根堆
void up(int x){
	if(x == 1) return;
	else{
		if(tree[x/2] > tree[x]){	//父亲比我大
			swap(tree[x/2],tree[x]);
			up(x/2);
		}
	}
	return;
}
void solve() {
	int n,m;
	cin>>n>>m;
	for(int i = 0 ; i < n ; i++){
		int x;
		cin>>x;
		tree[idx]=x;
		up(idx);
		idx++;
	}
	getchar();
	while(m--){
		string s;
		getline(cin,s);
		int x,y;
		if(s.find("root") != string::npos){
			//从字符串中读入数字
			sscanf(s.c_str(),"%d is the root",&x);
			int i;
			for(i = 0 ; i < idx ; i++) if(tree[i] == x) break;
			if(i == 1) cout<<"T"<<endl;
			else cout<<"F"<<endl;
		}else if(s.find("siblings") != string::npos){
			sscanf(s.c_str(),"%d and %d are siblings",&x,&y);
			int i,j;
			for(i = 0 ; i < idx ; i++) if(tree[i] == x) break;
			for(j = 0 ; j < idx ; j++) if(tree[j] == y) break;
			if(i/2 == j/2)cout<<"T"<<endl;
			else cout<<"F"<<endl;
		}else if(s.find("parent") != string::npos){
			sscanf(s.c_str(),"%d is the parent of %d",&x,&y);
			int i,j;
			for(i = 0 ; i < idx ; i++) if(tree[i] == x) break;
			for(j = 0 ; j < idx ; j++) if(tree[j] == y) break;
			if(i == j/2)cout<<"T"<<endl;
			else cout<<"F"<<endl;
		}else if(s.find("child") != string::npos){
			sscanf(s.c_str(),"%d is a child of %d",&x,&y);
			int i,j;
			for(i = 0 ; i < idx ; i++) if(tree[i] == x) break;
			for(j = 0 ; j < idx ; j++) if(tree[j] == y) break;
			if(i/2 == j)cout<<"T"<<endl;
			else cout<<"F"<<endl;
		}
	}
}
int main() {
    // ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int tt = 1;
    // cin >> tt;
    while (tt--) {
        solve();
    }
    return 0;
}

相关文章:

  • 光谱仪与光谱相机的核心区别与协同应用
  • 使用 AnythingLLM 轻松部署本地知识库!
  • 雷池SafeLine-自定义URL规则拦截非法请求
  • 【MySQL】触发器与存储引擎
  • 基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手
  • 第二章 EXI协议原理与实现--7.5 Efficient XML库和OpenEXI.jar编解码交叉测试
  • Linux网络相关概念和重要知识(2)(UDP套接字编程、聊天室的实现、观察者模式)
  • XGBoost
  • 1987-2023年各省进出口总额数据整理(含进口和出口)(无缺失)
  • 目标检测中归一化的目的?
  • 大模型agent的构建
  • Python高级——类的知识
  • 域渗透工具推荐:impacket
  • 第6关:部分快速排序-用分治法实现
  • 2.Linux基本指令(下)
  • conda报错activate没办法激活环境
  • 从TouchDriver Pro到Touchdriver G1,Weart触觉手套全系解析:XR交互的“真实触感”如何实现?
  • 【北京迅为】iTOP-RK3568开发板OpenHarmony系统南向驱动开发UART接口运作机制
  • 各种排序汇总
  • Linux驱动开发基础(can)
  • 中国首艘海洋级智能科考船“同济”号试航成功,可搭载水下遥控机器人
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯被执行死刑
  • 商务部:中方敦促美方尽快停止232关税措施
  • 外交部:国际社会广泛理解和支持中方不同意台参加世卫大会的决定
  • 泰山、华海、中路等山东险企综合成本率均超100%,承保业务均亏损
  • 伊朗最高领袖顾问:伊朗愿承诺永不制造核武,换取美解除制裁