08 2020 档案
摘要:题目大意: 有一个栈,大小为M,数字1~N依次入栈,给出K个出栈序列,判断该序列是否满足出栈要求 思路:基本上还是模拟栈的入栈和出栈过程,要注意对于栈容量k的判断 注意:这道题其实不难,但是要注意虽然是否满足出栈要求这一判断我们在读取一行数据的中间就可以完成但依然要继续读入数据,否则就会发生读取中止
阅读全文
摘要:题型分类:map 题目大意:输入一本书的各个数据,建立图书查询系统,最后对书目进行查询。 解题思路:使用map来映射书和书的各个数据,用set来存储书的编号,set可以自动去重并且按从小到大的顺序排列。 注意 1.由于id是一个七位数字,在用scanf("%d",&id)读入是0001111会变成1
阅读全文
摘要:思路: 统计单词个数,大小写字母+数字的组合是合法的单词,给出一个字符串,求出现的合法的单词的个数最多的那个单词,以及它出现的次数。如果有并列的,那么输出字典序里面的第一个(注意:由于map内部是由红黑树实现的,会自动按照从小往大的顺序自动排列键值,因子首先访问到的键值就是字典序最小的) 利用map
阅读全文
摘要:这是过半数数字问题,由于条件给出最多的数字超过半数,所以使用不同数字相消可以快速得到答案 当然如果想不到,使用map<int,int>作为数字出现次数的记录也可以,最大的map数组不过800*600/2 = 240000,可以接受但是需要遍历所有map,更新最大数 #include<cstdio>
阅读全文
摘要:这是一个字符串映射问题,由于字符串长度可能最大有10位作用 所以不能采用hash映射来解决,但是由于字符串总共才有169种,所以直接用map进行映射更加方便; 由于字符串长度不一样,每次要读入一行,我们采用getline(cin,string)来进行一行的读入 但是由于第一行读入了n,getline
阅读全文
摘要:这是PAT图论中很少见拓扑排序问题,基本上不考,思路也偏向与验证排序正确与否,验证思路为: 在输入边的时候,记录所有顶点的单向邻接点,并且记录所有点的入度。查询时,每输入一个点,就判断其入度是否为0,不为0,则不是拓扑排序,然后将此点指向的所有点的入度减一,查询至结束,输出即可 #include<c
阅读全文
摘要:图的实现方式主要有两种:1.邻接表 2.邻接矩阵 邻接矩阵在顶点数目大于1000的情况就基本不适用了,而邻接表的链表实现在考试中代码量偏大 所以采取变成数组构建邻接表可以简化程序书写 邻接表的表示为:vector G[N]; 当然本题还可以利用并查集的数据结构完成快速合并与查询,见代码2,但其实不建
阅读全文
摘要:并查集的优势在于合并与查询快速(路径压缩后) 在union操作中,如果不按照根结点合并的原则很容易漏点造成合并的集合只有部分进行合并而剩下一部分并当作另一个部分。 比如我一开始处理有相同爱好的人群,使用了: for(int j = 0; j < hobby[i].size()-1;j++){//从1
阅读全文
摘要:题意:回文字,对输入数值进行判断,若不是回文,则反转相加继续。 分析:数值1010,再迭代相加100次,大概达到1040级;long long型也不足以表示,需要使用字符型处理。使用字符串的转化为大数数组处理。 注意:大数运算是唯一long long也无法处理的数据大小,结果输出处需要迭代输出 #i
阅读全文
摘要:这一道大数乘法问题,要注意输入是按照字符串进行读入并且为了满足大小位关系采用逆序转换 要注意数组的意义以及循环结构和判断结构的边界 代码如下: #include<cstdio> #include<string.h> using namespace std; const int N = 30; str
阅读全文
摘要:思路分析:如果输入n为素数,那么因数只可能为自己,因为题目说了不包括1。故第一行输出1,第二行输出n。 如果一个数为合数,则该数的因数的最大上限为sqrt(n)。 使用一个二重循环,外层循环枚举i从2到sqrt(n)表示枚举第一个因数。内层循环枚举j从i到sqrt(n)表示所有连续的因数 temp为
阅读全文
摘要:这是一道哈希散列的二次方探查法的问题,其中也用到了素数的判定问题,要注意的是:1不是素数 哈希散列中的二次方探查法主要流程如下: 如果hashTable里面key % size的下标对应的hashTable为false,说明这个下标没有被使用过,直接输出。(这些size必须满足题目给的条件,即是一个
阅读全文
摘要:这是一道素数判断问题,虽然思路很明确,要注意的是文中的D代表的是素数的进制,但是素数的判断要在十进制的范围内来做。 一点经验:如果说一道题目已经拿到了大部分的分数,说明代码整体是正确的,只是一些输入的特殊情况没有考虑在内,此时应该重新读题,发现并考虑如何处理这些特殊输出 例如bool isprime
阅读全文
摘要:其实就是一个简单的分数四则运算的题目,但是出现了几点我自己难以预料的错误,要引以为戒 必须要用long long 型否则,进行乘法运算容易越界 //\ 我是打算简单的表示除法运算的但是如果后面紧跟一个函数,容易造成程序编译出错,这个排错用了很久 在输出部分,分数的假分数表示,要注意第二个分母必须取正
阅读全文
摘要:这是一道关于gcd的题目,还是需要仔细感受一下gcd中间代码的简洁与巧妙 要注意算法的优化,使得移动次数减少了gcd(n,m)倍 代码如下 #include<cstdio> //最大公约数 int gcd(int a,int b){ if(b==0) return a; else return gc
阅读全文
摘要:Question The task is simple: given any positive integer N, you are supposed to count the total number of 1’s in the decimal form of the integers from
阅读全文
摘要:这题最后两个测试总是跑不通,最后发现是加法和乘法运算中数值较大,double和int的精度都不够,得使用long double和long int才行。 #include<cstdio> using namespace std; const int N = 100010; long int dp[N]
阅读全文
浙公网安备 33010602011771号