天梯赛PTA
weixin_43535668
这个作者很懒,什么都没留下…
展开
-
L2-018 多项式A除以B (25分) 详解
思路:这道题真的把我的心态搞崩了。中间一些小细节写错了,没注意,调bug调到眼都花了!(1)把被除式、除式按某个字母作降幂排列,并把所缺的项用零补齐.(2)用被除式的第一项除以除式第一项,得到商式的第一项.(3)用商式的第一项去乘除式,把积写在被除式下面(同类项对齐),消去相等项,把不相等的项结合起来.(4)把减得的差当作新的被除式,再按照上面的方法继续演算,直到余式为零或...原创 2020-02-27 17:35:01 · 1223 阅读 · 1 评论 -
L2-017 人以群分 (25分) 详解
思路:先按由小到大的顺序进行排序。如果是偶数就直接对半分;如果实际数就把大的一份给活跃的;没啥好说的,没有涉及数据结构emmm#include<iostream>#include<algorithm>using namespace std;int book[100010];int sum(int a, int b){ int t=0; f...原创 2020-02-27 15:47:50 · 642 阅读 · 0 评论 -
L1-039 古风排版 (20分) 详解
思路:这道题不能想着一个一个输出,要先用一个字符数组把所有内容存取起来再输出。还有值得注意的地方是要计算列数:int M = (s.length() + N- 1) / N;//得到所需要的列数,且N=1的情况下也成立,当字符数量不能被整除时,加入N-1能补全缺少的一列同时也不会加多一列具体看代码~~#include<iostream>#include<...原创 2020-02-27 00:13:27 · 162 阅读 · 0 评论 -
L1-037 A除以B (10分) 坑点提醒
思路:思路显而易见,就是简单。但自己傻,在细节上做错了!用于提醒自己别傻了emmm具体看代码!#include<iostream>#include<stdio.h>using namespace std;int main(){ int a; int b; double c; cin >> a >> b; if ...原创 2020-02-26 21:46:48 · 140 阅读 · 0 评论 -
L1-035 情人节 (15分) 详解
思路:这道题挺简单的,就是统计名字数量而已。纯粹就是这道题的题目让我虎躯一震,挺有意思的哈哈哈情人节VIP专属题目#include<iostream>#include<vector>#include<string>using namespace std;int main(){ vector<string> a; s...原创 2020-02-26 21:24:42 · 347 阅读 · 0 评论 -
set运用之L1-033 出生年
思路:一开始的思路是把每个位上的数字单独取出,再一一比较,看看到底有多少个不同。但这样很复杂,写起来很繁琐。完全没有想起set。。。。运用上set的话,就简单多了,直接是数元素,里面不会有重复的元素。还有一个注意的地方是,输出的年份要是四位数,不够前面要补零。#include<iostream>#include<set>#include<std...原创 2020-02-26 18:28:49 · 141 阅读 · 0 评论 -
【DFS或BFS】之L2-016 愿天下有情人都是失散多年的兄妹 详解
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216思路:利用的是二叉树的原理。原创 2020-02-25 22:43:37 · 312 阅读 · 0 评论 -
L2-015 互评成绩 【快速排序】详解
思路:这道题目思路挺简单的,就是去掉最小最大值求和平均。但是要注意答案保留小数点后三位。而且还要善用头文件<algorithm>中的sort函数(快速排序),快速高效不容易错。#include<iostream>#include<algorithm>#include<stdio.h>using namespace std...原创 2020-02-25 16:57:00 · 187 阅读 · 0 评论 -
L2-014 列车调度 【贪心】详解
思路:首先,一条火车道可以停很多俩火车我们需要尽量减少加轨道条数,也就是新的火车最好能到一条路线的末尾排着,而为了之后的顺序输出,一条轨道上后面的车需要比前面的编号小,这就产生了选择问题。选择时可以归结出以下逻辑:选择时要减少轨道条数,增加轨道条数的条件是需要进入的火车大于所有链尾序号,所以为了减小这个条件的成立可能性,就需要使每条轨道尽量多地容纳。举个例子,比如我们现在有两条轨道...原创 2020-02-25 16:15:00 · 295 阅读 · 0 评论 -
【并查集或BFS】之L2-013 红色警报 详解
思路:首先利用并查集计算出初始时连通块的数量。 然后攻掉一个城市,即去掉一个点,再次计算连通块的数量,注意:被去掉的点此刻算作一个连通块,连通块的数量是一直递增的! 找到 去掉一个点时连通块数量变化的规律来设置判断是否要发出红色警报。如果被攻占的城市之前是单独一个城市或者是连通块的不影响其他城市连通的城市,cnt=cnt0;如果是连通块的桥的时候,被攻占了cnt=cnt0+2;#...原创 2020-02-24 17:11:43 · 314 阅读 · 0 评论 -
L1-032 Left-pad (20分)坑点详解
思路:首先得理解题目的意思! 题目要求如果给出的字符串大于数字,就输出字符串后数字的位数:如果小于的话,就在前面补上自己输入的字符。 其次,getline函数要注意,它会自动接收上一次输入的回车,所以要在前面加上cin.ignore()来消除回车具体看代码~~#include<iostream>#include<algorithm>#include&...原创 2020-02-24 15:40:07 · 1219 阅读 · 1 评论 -
set的运用之L1-027 出租 (20分)详解
思路:首先用set来记录电话号码中出现的数字,并用arr数组存储起来。接着遍历电话号码中的各个数字,在arr中找到各个数字所在的位置。再按照对应的格式进行输出这里还有道相似的题目,并附有set的详细介绍和使用!https://blog.csdn.net/weixin_43535668/article/details/104381291#include<iostr...原创 2020-02-23 17:25:26 · 176 阅读 · 0 评论 -
L1-031 到底是不是太胖了 (10分)
#include<iostream>#include<algorithm>#include<cmath>using namespace std;int main(){ int N; double H; double W; double standard; cin >> N; for (int i = 0; i < ...原创 2020-02-23 16:24:55 · 136 阅读 · 0 评论 -
L1-030 一帮一 (15分)
#include<iostream>using namespace std;struct student{ int num;//编号 char name[20];//编号 int flag;};int main(){ int N; cin >> N; student s[51]; for (int i = 0; i < N; i...原创 2020-02-23 16:04:27 · 383 阅读 · 0 评论 -
L1-028 判断素数 详解
思路:首先得明确:1不是素数!!!素数:除1以外只能被其自身整除,注意1不是素数,2是素数为降低时间复杂度,可以只遍历2到sqrt(n)的因子,因为一个数就是两个因子相乘嘛#include<iostream>#include<algorithm>#include<math.h>using namespace std;int mai...原创 2020-02-22 23:29:58 · 215 阅读 · 0 评论 -
L1-025 正整数A+B (15分)详解
思路:一开始我是用两个字符数组来做的,发现总有一些数据过不了emmm。。后来发现这道题有些坑,第一个字符串是可以为空的,所以决定用一个字符串变量存取,接着来找空格的位置。#include<iostream>#include<string>using namespace std;int main(){ string S; int flagA = ...原创 2020-02-22 22:56:10 · 1484 阅读 · 0 评论 -
BFS之L2-011 玩转二叉树 (前序中序确定二叉树)
思路:这是一道关于二叉树确定以及遍历的题目。首先我们要了解前序中序的特点。前序:根节点->左节点->右节点中序:左节点->根结点->右节点所以前序的第一个元素就是二叉树的根,再到中序里面找到这个值;这个值左边的的数就是左子树的,右边的数就是右子树的。不断重复这个步骤,就可以确定二叉树的节点位置。然后我们可以利用bfs进行层序输出,注意:一定要是节...原创 2020-02-21 23:38:13 · 117 阅读 · 0 评论 -
【并查集】之L2-010 排座位 (25分)详解
1和2是朋友,2和3是朋友。1和3之间就连通了,题目说朋友的朋友也是朋友,所以1和3也是朋友。我们用数组a[]表示下标对应的下一个点多少。例如图 a[1]=2,a[2]=3, 每个点都有自己的下一个点。当下一个点没有了,找不到了,他就是最后一个点,所有的点只要能找到最后这个点的都是朋友例如现在加进来一个5,5和3是朋友。a[5]=3,虽然a[1]=2,一直找到尽头:a[1]=a[2...原创 2020-02-21 22:37:01 · 577 阅读 · 0 评论 -
L2-009 抢红包 (25分)
思路:其实这道题目并不难,就是题目意思和很多输入数据搞得你很懵。本质就是利用结构体来记录每一个人的信息,然后对数据进行处理,更新每个人的信息,然后在进行排序。注意:这个的排序标准要自己写!!在cmp函数哪里定义标准,调用快排。#include<iostream>#include<stdio.h>#include<algorithm>usi...原创 2020-02-21 16:42:36 · 295 阅读 · 0 评论 -
PTAL1-020 帅到没朋友 (20分)
思路:一开始看到题目,我以为是并查集,然而并不是,就是简单的记录再输出。首先把不是一个人或者没有朋友圈的人排除掉,记录有朋友的人。然后进行枚举,找出在之前没有记录过的人,并输出。具体看代码~~#include<iostream>#include<stdio.h>#include<string.h>using namespace std;i...原创 2020-02-20 23:13:33 · 236 阅读 · 0 评论 -
PTAL1-019 谁先倒 (15分)
思路:按照我们正常的思考逻辑,一轮一轮的判断,酒量先到底的人输掉。#include<iostream>#include<algorithm>using namespace std;int main(){ int A, B;//甲乙的酒量 cin >> A >> B; int a = A; int b = B;//...原创 2020-02-20 22:32:54 · 202 阅读 · 0 评论 -
PTAL1-018 大笨钟 (10分)
思路:比较简单,就是根据题意得到钟声的次数。 不过有点坑就是关于输入格式和输出格式 还有就是ceil函数里面的数要是double型的,纯整数会自动截取小数的#include<iostream>#include<math.h>#include<stdio.h>using namespace std;int main(){ int hh,...原创 2020-02-20 22:08:32 · 385 阅读 · 0 评论 -
PTAL1-016 查验身份证 (15分)
思路:利用字符串变量存取身份证信息,然后对前17位数字进行加权求和并求余,进行映射。判断是否符合题目给出来的信息。#include<iostream>#include<algorithm>#include<string.h>#include<string>using namespace std;int main(){...原创 2020-02-20 17:16:01 · 278 阅读 · 0 评论 -
【并查集】详解之L2-007 家庭房产 (25分)附:printf()详细介绍
思路:利用并查集的思想,把每一位成员进行分类,同一个家庭的分在一起,并以每行第一个人为领导; 再进行暴力枚举,对每个家庭的信息进行处理。 其中关键是并查集的思想、sort函数快速排序的使用和printf函数控制输出详细得在代码有解释~~#include<iostream>#include<algorithm>#include<ioman...原创 2020-02-20 17:07:15 · 593 阅读 · 0 评论 -
PTAL1-017 到底有多二 (15分)
思路:就是按照题目的意思,进行分析。先判断是不是负数,是不是偶数,有多少个2,依次处理倍数。 有值得注意的地方是,N是不超过50位的,所以正常的整数以及long long 型也是不满足的,所以要用字符数组或者字符串来处理,与整型差不多~具体看代码~~#include<iostream>#include<iomanip>#include<stri...原创 2020-02-19 23:41:33 · 291 阅读 · 0 评论 -
PTAL2-006. 树的遍历(后序、中序确定一棵二叉树)
思路:后序遍历是左节点->右节点->父节点,所以最后一个元素是二叉树的根再到中序遍历中找到这个元素,然后中序遍历这个元素左边的数属于左子树的,右边的数属于右子树的。用一个数组来存取二叉树,最后遍历输出,可以用for循环也可以用bfs输出,两种下面都有看代码~~#include<iostream>#include<string.h&...原创 2020-02-19 23:14:03 · 301 阅读 · 0 评论 -
PTAL2-005 集合相似度 (25分)和set的用法
思路:利用set数组分别存取每一个集合,set的特性是自动从小到大排序且没有重复元素。两个集合之间比较,如果第二个集合中的元素在第一个集合中找到,则相同元素+1;详情代码有注释~~#include<iostream>#include<stdio.h>#include<iomanip>#include<set>using na...原创 2020-02-18 20:04:27 · 320 阅读 · 0 评论 -
PTAL1-011 A-B (20分)
思路:就是标记b中出现过的字符,让a输出时不输出标记过的!#include<iostream>#include<algorithm>#include<string>#include<string.h>using namespace std;int main(){ string a, b; int flag[256];...原创 2020-02-17 16:29:44 · 310 阅读 · 0 评论 -
PTAL1-010 比较大小 (10分)
思路:利用数组来存取数字,再利用头文件algorithm中提供的sort函数进行排序输出,这是个快速排序。#include<iostream>#include<algorithm>using namespace std;int main(){ int a[3]; for (int i = 0; i < 3; i++) { cin &g...原创 2020-02-17 15:56:04 · 423 阅读 · 0 评论 -
PTAL1-009 N个数求和 (20分)
思路:首先要求最大公因数和最小公倍数。先两个两个数目进行求和,两个数先通分再求和。最后按照要求对最后的答案进行处理。~~#include<iostream>#include<algorithm>using namespace std;long long gcd(long long a, long long b)//求最大公因数,辗转相除法{ i...原创 2020-02-17 15:41:12 · 494 阅读 · 1 评论 -
PTAL1-002 打印沙漏 (20分)
思路:有点丢脸,没想到入门时的题目,到了现在竞卡了许久哈哈哈。主要就是用等差数列求和的方式得到完成图案的所需的最大符号数量。再用两个两层for循环控制输出,一层控制行数,另一层控制空格和字符。#include<iostream>#include<algorithm>using namespace std;int main(){ int num;//...原创 2020-02-17 14:59:52 · 195 阅读 · 0 评论