团体程序设计天梯赛-练习集 - L2-012 关于堆的判断(25 分)

简介: 团体程序设计天梯赛-练习集 - L2-012 关于堆的判断(25 分)

题目链接:点击打开链接

题目大意:略。

解题思路:此题为边插入边建堆,而不是先按层序遍历建好树再调整成堆;注意兄弟结点的判断条件(小偶大奇且(奇 - 偶==1))。


AC 代码

#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
intn, res, a[1009];
voidfind_heap(intrt, intd)
{
if(rt>n||rt<=0) return;
if(a[rt]==d){res=rt; return;}
if(a[rt]<d) find_heap(rt*2,d);
if(a[rt]<d) find_heap(rt*2+1,d);
}
intmain()
{
intm,n1,n2,rt;
scanf("%d%d",&n,&m);
for(inti=1;i<=n;i++)
    {
scanf("%d",&a[i]);
make_heap(a+1,a+1+i,greater<int>());
    }
rt=a[1];
getchar();
strings;
while(m--)
    {
getline(cin,s);
intf=0, id1, id2;
if(sscanf(s.c_str(),"%d and %d are siblings",&n1,&n2)==2)
        {
res=0; find_heap(1,n1); id1=res;
res=0; find_heap(1,n2); id2=res;
if(id1>id2) swap(id1,id2);
if(id1%2==0&&id2%2==1&&id2-id1==1) f=1;
        }
elseif(sscanf(s.c_str(),"%d is the parent of %d",&n1,&n2)==2)
        {
res=0; find_heap(1,n1); id1=res;
res=0; find_heap(1,n2); id2=res;
if(id1*2==id2||id1*2+1==id2) f=1;
        }
elseif(sscanf(s.c_str(),"%d is a child of %d",&n1,&n2)==2)
        {
res=0; find_heap(1,n1); id1=res;
res=0; find_heap(1,n2); id2=res;
if(id2*2==id1||id2*2+1==id1) f=1;
        }
elseif(sscanf(s.c_str(),"%d is the root",&n1)==1)
        {
if(n1==rt) f=1;
        }
puts(f?"T":"F");
    }
return0;
}
目录
相关文章
|
SQL 关系型数据库 MySQL
MySQL8 窗口函数
MySQL 8 引入了窗口函数,这是一种强大的分析工具,可以在查询结果集中执行计算而无需将数据分组到多个输出行中。本文介绍了窗口函数的基本概念和使用方法,并通过几个实际案例展示了如何使用窗口函数进行成绩和排名统计、销售数据分析等操作。
437 1
MySQL8 窗口函数
|
分布式计算 Hadoop Java
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
396 2
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
数据采集 关系型数据库 MySQL
切割字符串:深入了解MySQL中的SUBSTRING()函数
在数据库操作中,提取字符串的一部分是常见的需求,这时可以使用MySQL中的SUBSTRING()函数。本文将深入探讨SUBSTRING()函数的用法、示例以及在数据库操作中的应用。
1164 0
|
存储 安全 Java
基于Java的企业级身份认证与授权
基于Java的企业级身份认证与授权
|
机器人 Java 编译器
2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛-本科组国赛
该文章是关于2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛的介绍。
|
SQL 关系型数据库 数据库连接
Python中使用pymysql和pymssql进行数据库操作的完整指南
Python中使用pymysql和pymssql进行数据库操作的完整指南
|
设计模式 JSON 数据可视化
2023最新Python阅读书籍推荐
入门的书很多,但能让新手轻松看懂的就少了,作者写的思路非常清晰,对每一个知识点讲解的很到位,不多不少,对初学者来说,力道刚刚好。这本书是Python入门最好的书。《A byte-of-python》就像一把钥匙一样,开启编程世界的大门。而且篇幅也短,适合零基础小白。
3263 2
2023最新Python阅读书籍推荐
|
前端开发 Java 应用服务中间件
Request 和 Response详解(上)
Request 和 Response详解(上)
407 0
|
XML Java 数据格式
springboot 微服务项目如何集成 html 页面
springboot 微服务项目如何集成 html 页面
484 0