L2-012. 关于堆的判断(STL中heap)
L2-012. 关于堆的判断
将一系列给定数字顺序插入一个初始为空的小顶堆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
思路:不想自己写堆所以用了STL中heap,然后剩下的就比较暴力了,未满十八岁请在监护人的陪同下观看。
#include<string>
#include<vector>
#include<sstream>
#include<iostream>
#include<functional>
#include<algorithm>
using namespace std;
int main()
{ int n, m; cin >> n >> m;
vector<int>vec; for (int i = ; i < n; i++){
int num; cin >> num;
vec.push_back(num);
push_heap(vec.begin(), vec.end(), greater<int>());
}
getchar();
while (m--){
bool flag = false;
string temp;
stringstream ss;
ss.clear();
getline(cin, temp);
ss << temp; if (temp.find("root") < temp.size()){
int cnt; ss >> cnt;
if (vec[] == cnt)flag = true;
}
else if (temp.find("siblings") < temp.size()){
int a, b; string c;
ss >> a >> c >> b; for (int i = ; i < vec.size(); i++){
if (vec[i] == a){
int bro = i % == ? i + : i - ;
if (vec[bro] == b)flag = true;
break;
}
if (vec[i] == b){
int bro = i % == ? i + : i - ;
if (vec[bro] == a)flag = true;
break;
}
}
}
else if (temp.find("parent") < temp.size()){
int er, ba; string a, b, c, d;
ss >> ba >> a >> b >> c >> d >> er; for (int i = ; i < vec.size(); i++)
if (vec[i] == ba){
if ( * i + < vec.size() && vec[ * i + ] == er){
flag = true; break;
}
if ( * i + < vec.size() && vec[ * i + ] == er){
flag = true; break;
}
}
}
else if (temp.find("child") < temp.size()){
int er, ba; string a, b, c, d;
ss >> er >> a >> b >> c >> d >> ba;
for (int i = ; i < vec.size(); i++)
if (vec[i] == ba){
if ( * i + < vec.size() && vec[ * i + ] == er){
flag = true; break;
}
if ( * i + < vec.size() && vec[ * i + ] == er){
flag = true; break;
}
}
}
if (flag)cout << "T" << endl;
else cout << "F" << endl;
} return ;
}
L2-012. 关于堆的判断(STL中heap)的更多相关文章
- STL中heap相关函数
heap并不是属于STL中的containers,而是在<algorithm>下提供了相关的函数 make_heap,sort_heap,pop_heap,push_heap 函数的说明: ...
- STL中heap算法(堆算法)
①push_heap算法 以下是push_heap算法的实现细节.该函数接收两个迭代器,用来表现一个heap底部容器(vector)的头尾,而且新元素已经插入究竟部的最尾端. template ...
- STL中heap用法
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; ]={,, ...
- STL中的所有算法(70个)
STL中的所有算法(70个)----9种类型(略有修改by crazyhacking) 参考自: http://www.cppblog.com/mzty/archive/2007/03/14/1981 ...
- STL中的算法
STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baidu.com/ding ...
- 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探
本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...
- STL中六大组件
1)容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供.为了访问容器中的数据,可以使用由容器类输出的迭代器: 容器(container)用于存放 ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
随机推荐
- AIZU AOJ 2309 Vector Compression 最小树形图(朱—刘算法)
题意简述:给定若干个相同维度的向量,寻找一种排序方法,使得所有向量的表示长度总和最低. 所谓表示长度为(Aj-r*Ai)^2,其中i<j 数据范围:向量总数和维度均小于100 思路:(1)首先 ...
- JForum论坛添加UEditor文本编辑器
在使用JForum论坛中发现论坛自带的文本编辑器不好用,不能上传图片,样式编辑也很麻烦,就想着把这个文本编辑器替换掉,我这里选用的是百度的开源富文本编辑器UEditor 替换后的效果图 替换方法如下 ...
- Linux系统下 为命令配置别名
1.什么是别名 在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁的输入某个很长命令或用法是不可取的.这时可以使用 别名 功能将这个过程简单化. Li ...
- linux编译安装gcc5.3.0
1.下载GCC5.3.0安装包 #su #cd /opt #wget http://ftp.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz 2.解压 #.tar. ...
- DHTML_____window对象属性
<html> <head> <meta charset="utf-8"> <title>window对象属性</title&g ...
- CF848A From Y to Y
思路1: 每次贪心地选择满足i * (i - 1) / 2 <= k最大的i并从k中减去i * (i - 1) / 2,直至k为0.由于函数x * (x - 1) / 2的增长速度比2x要慢,所 ...
- plc学习笔记
防抖编程代码备份 如果定时到了还未检测到下降沿,则认为信号有效.这一端程序主要是针对现场装料杯在输送过程中由于传送带原因,电眼时常产生无效停机信号,需要过滤,因此需要在电眼检测中添加防抖功能 2018 ...
- Python自动监控错误日志
平时在查看日志的时候打开满屏的日志,看上去有点凌乱.于是写个Python脚本过滤出想要看的错误的日志.直接上脚本 脚本示例 def read_log(logname,keyword): tell = ...
- Django基础之创建程序
环境配置 安装python35 安装django:pip install django==1.9.5 创建django程序 1.命令行创建django程序 A django-admin startpr ...
- Queries for Number of Palindromes(求任意子列的回文数)
H. Queries for Number of Palindromes time limit per test 5 seconds memory limit per test 256 megabyt ...