![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
PAT练习进展记录
悠唯
养成整理的习惯。
展开
-
入门篇3——数学问题(5.1 简单数学)
而二进制是无法准确表示一个浮点数的,只能在有限的精度内逼近这个值。使用long long int,将double小数点后移后保存起来,整数不会存在精度问题。本题的写法值得借鉴。将输入的数转换为数组,升序排列得到最小值,降序排列得到最大值,循环作差直到0或6174。只有形如PAT、PAAT、APAATAA等这样的组合才满足题目要求,且P之前的A、PT之间的A、T之后的A的数量成一定比例关系。在大量或高精度计算中要避免使用 double 类型,原因就在于计算机内部的加减乘除运算是通过加法器二进制运算来完成的,.原创 2022-08-11 17:16:48 · 164 阅读 · 1 评论 -
入门篇2——算法初步(4.6 two pointers)
i、j都指向第一个元素的位置,然后j不断右移,直到a[j]>a[i]*p,记录长度,然后i右移,重复以上操作,最终得到最大长度。two pointers是一种高效的编程技巧,可以同向、反向扫描。用于ai+aj==m、序列合并、归并排序、快速排序。模拟插入、归并排序。先判断是否为插入排序,是就输出下一趟排序的序列,不是就为归并排序。函数调用的写法非常值得借鉴。...原创 2022-08-07 21:48:59 · 129 阅读 · 0 评论 -
入门篇2——算法初步(4.5二分)
由样例可知,选择的数不一定连续。那么可以考虑升序排列,最长的连续子串就是所求。枚举左端点,ai就是数列中的最小值,查找第一个大于ai*p的数的位置,减一就是右端点,右-左+1即为题目所求。枚举左端点,查找满足sum[j]-sum[i-1]==s的右端点;如果没有,找到第一个和值超过s的右端点,记录最小的和。本题的代码写法非常值得借鉴,充分使用函数之间的调用,即要有面向对象的编程思想。枚举ai,查找m-ai,注意两个数的下标不能一样。...原创 2022-07-25 22:14:32 · 109 阅读 · 0 评论 -
入门篇2——算法初步(4.4贪心)
贪心:考虑在当前状态下局部最优的策略,从而达到全局最优(不一定)。区间贪心:先选择左端点最大或右端点最小的区间题目情况:3道简单题,3道难题b1023:略b1020/a1070:略a1033:1)优先前往更低油价的加油站。在满油状态下,如果第一次出现更便宜的加油站,就加恰好能够到达这个加油站的油量。2)如果没有,判断能否到达终点。如果不能,优先前往满油状态下最远的加油站。3)如果没有2)所需的加油站,则不能到达终点。a1037:略a1067:1)当0在本位上时,将0和最小的还没有回到本原创 2022-07-13 22:17:39 · 217 阅读 · 0 评论 -
1.前序知识
无原创 2022-07-03 17:00:42 · 324 阅读 · 0 评论 -
入门篇2——算法初步(4.3递归)
简单A、吃糖果两种状态:拿一块糖果数≥2时,拿两块#include<bits/stdc++.h>using namespace std;int res;void dfs(int n) { if (!n) { res++; return; } if (n >= 2) dfs(n - 2); dfs(n - 1);}int main() { int n; while (~scanf("%d", &原创 2022-05-10 16:23:22 · 143 阅读 · 0 评论 -
入门篇2——算法初步(4.2散列)
简单。b1029/a1084:略b1033:当大写字母对应的小写存在以及上档键没有损坏,才能输出;输入字符串用getline(有个测试点可能带空格?);上档键只有‘+’#include<bits/stdc++.h>using namespace std;char a[100010], b[100010];int main() { map<char, int>mp; cin.getline(a, 100010); cin.getline(b, 100原创 2022-05-04 21:22:33 · 164 阅读 · 0 评论 -
入门篇2——算法初步(4.1排序)
4.1 排序这一小节题目的代码量是真的大啊b1015/a1062先分类,再排序#include<bits/stdc++.h>using namespace std;struct student{ char id[20]; int de, cai, flag;}arr[100010];bool cmp(student a, student b){ if (a.flag != b.flag) return a.flag < b.flag; e原创 2022-04-05 22:15:21 · 363 阅读 · 0 评论 -
入门篇1——入门模拟
3.1 简单模拟b1001:略b1032:最好将学校编号初值设为1,分数最大值初值设为-1,防止出错b1011:略b1016:略b1026:略b1046:略b1008:略b1012:略b1018:略a1042:将每张牌当作数字处理,1–13对应S1–S13,14-26对应H1–H13…然后在输出的时候判断下花色和牌号即可。#include<bits/stdc++.h>using namespace std;char sign[5] = {'S', 'H', 'C', '原创 2022-01-04 22:17:19 · 335 阅读 · 0 评论