考察:建堆,字符串的处理

建堆上,跳了坑,才发现自己之前的方法过于笨拙,详情见两种最大堆建堆方式

字符串处理上,走的弯路更大,但是也因此牢记了两个技巧

1. cin>>str可以用getline(cin,str)取代

2. sscanf和str.c_str练手,可以直接百万军中取上将首级(得到整型)

最后在查找的时候,我用二分查找,可耻啊,居然忘记了二分查找的前提是有序序列。

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<cstring>
#include<iostream>using namespace std;const int maxn = 1010;int n,m;int heap[maxn];void createHeap(){for(int i=1;i<=n;i++){for(int j=i;j>1&&heap[j]>heap[j/2];j/=2){swap(heap[j],heap[j/2]);}}
}int find(int x){for(int i=1;i<=n;i++){if(heap[i]==x)return i; }return -1;
} int main(){scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&heap[i]);}createHeap();getchar();string s;int a,b;int p,q;for(int i=0;i<m;i++){getline(cin,s);if(s.find("root")!=string::npos){sscanf(s.c_str(),"%d is the root",&a);int p = find(a);if(p==1)printf("1");else printf("0");}if(s.find("siblings")!=string::npos){sscanf(s.c_str(),"%d and %d are siblings",&a,&b);int p = find(a);int q = find(b);if(p/2==q/2)printf("1");else printf("0");}if(s.find("parent")!=string::npos){sscanf(s.c_str(),"%d is the parent of %d",&a,&b);int p = find(a);int q = find(b);if(p==q/2)printf("1");else printf("0");}if(s.find("left")!=string::npos){sscanf(s.c_str(),"%d is the left child of %d",&a,&b);int p = find(a);int q = find(b);if(p==q*2)printf("1");else printf("0");}if(s.find("right")!=string::npos){sscanf(s.c_str(),"%d is the right child of %d",&a,&b);int p = find(a);int q = find(b);if(p==q*2+1)printf("1");else printf("0");}}return 0;
}

PAT(甲级)2021年春季考试 7-3 Structure of Max-Heap相关推荐

  1. 记PAT 甲级 2021年 秋季考试 经验总结、线上考试细节、考场题解

    1.简单回顾 今天下午考完了秋季的考试,最终得了97分,第一题扣了3分,非常遗憾.还有一个多小时的时候就已经97了,回来和第一题的剩余3分周旋到最后,没能发现问题所在,不停考虑各种,我觉得可能是陷在已 ...

  2. PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles

    解题思路: 先用Floyd算法求出全员最短路径矩阵. 然后使用DFS进行遍历,遍历的原则是就近贪心,对于每一个点先遍历离他最近的未访问点. 记录访问点的个数,同时用数组存放已访问点,如果访问点的个数不 ...

  3. PAT(甲级)2021年春季考试 7-1 Arithmetic Progression of Primes

    思路:用筛除法打素数表(与之相对的是枚举加逐个判断)是降低时间复杂度的第一个点,第二个点是运用上数学技巧,给定了等差数列的范围(2-MAX),给定了个数,那么最大的等差是可以求出的.循环的第一层从最大 ...

  4. 【PAT】2021年冬季考试甲级,摸鱼游记、92分

    T1,简单模拟,20/20分 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int a[max ...

  5. 【PAT】2021年春季PAT甲级题解

    文章目录 1. Arithmetic Progression of Primes (20 分) 题意 解法 暴力+剪枝 2. Lab Access Scheduling (25 分) 题意 解法 排序 ...

  6. PAT(甲级)2019春季考试(Python实现)

    7-1 Sexy Primes 7-1 Sexy Primes 分数 20 作者 陈越 单位 浙江大学Sexy primes are pairs of primes of the form (p, p ...

  7. 【PAT】2020年春季考试划水准备贴

    1.起因 因为之前NOIP凉了,所以算法竞赛没拿到任何加分加好感项,感觉白敲了三年代码 偶然间看到这个而且感觉挺简单,就试试三位一体有没有用,或者暑假实习,再不济反正把乙考了大学在水甲级和顶级凑一凑考 ...

  8. 【PAT】2020年春季考试乙级题目、答案、摸鱼、游记、93分

    T1 对称日 (15分) 7-1 对称日 (15分) 央视新闻发了一条微博,指出 2020 年有个罕见的"对称日",即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组 ...

  9. PAT甲级线上考试备考

    我本人刷了两遍题库 之前考了两次都是四十几分,我认为目前甲级题库已经过时了 (对于有算法基础的同学来说) 前100题没有做的必要 除非是典型算法. DFS 和 回溯是相当重要的考点,如果有时间的话一定 ...

最新文章

  1. 如何采集Nginx的日志?
  2. POJ 3694 (tarjan缩点+LCA+并查集)
  3. hdu2489-DFS+最小生成树
  4. logback Appender详解
  5. 一级建造师考试通过了 !
  6. php使用fopen乱码,php下fopen中文文件名乱码怎么办?
  7. 好看的论文千篇一律,有趣的Github项目万里挑一!
  8. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
  9. SOX 音频处理工具基本使用
  10. Unity 2017 Game Optimization 读书笔记(1)Scripting Strategies Part 1
  11. iOS调用系统相册、相机 显示中文标题
  12. 维吉尼亚密码和一次性密码本_密码学中的一次性密码
  13. 计算机科学考试大纲,计算机科学与技术考试大纲.doc
  14. java中发红包案例之红包界面不出来的解决方案
  15. 学java需要哪些js知识点_JS重要知识点
  16. 6 个步骤,搞定 AI 车牌识别器!(附详细分析)
  17. 【Ubuntu18.04】Seetaface6人脸识别部署
  18. FFmpeg图片合成视频,实现放大平移
  19. OpenCV实现摄像头录像
  20. spring中 allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding)原因分析、解决办法

热门文章

  1. HTML发送语音,上传音频PHP接收
  2. python 之 pip、pypdf2 安装与卸载
  3. 手把手教你搭建一个学习Python好看的 Jupyter 环境
  4. 简析 .NET Core 构成体系
  5. 更改git bash默认的路径
  6. django 快速实现登录
  7. Windows SharePoint Services 3.0 应用程序模板
  8. 激动人心的AutoCAD .net开发技术
  9. SpringMVC4.x源码分析(五):request请求寻址HandlerMethod原理
  10. 解决:无法创建该DNS 服务器的委派