PAT甲级
Erick_Lv
菜鸡互啄
展开
-
PAT甲级1013
PAT甲级1013 求图的连通分量本题实际上是把检查点去掉后,求解图中连通分量的个数,结果用连通分量的个数减一。连通分量的求解使用并查集,把每一个连通分量的点,在自己所在的分量中找一个结点当做根,最后统计根的个数就行了。#include using namespace std;const int MAXN = 1005;const int MAXM = 10000000;int原创 2018-01-30 17:59:01 · 319 阅读 · 0 评论 -
PAT甲级1011
水题。。。。#include using namespace std;int main() { float num[3][3]; for(int i = 0; i 3; ++i) { for(int j = 0; j 3; ++j) { cin >> num[i][j]; } } float su原创 2018-01-29 17:15:17 · 243 阅读 · 0 评论 -
PAT甲级1010
PAT1010 进制匹配问题题目简介:给出两个数字N1和N2,并给出其中一个数字的进制,找到一个合适的进制,使得另一个数字用该进制的情况下,使的两个数字的值相等。如果找不到这个进制,则输出Impossible。 注:为了方便描述,我们始终让N1存储已知进制的数字,让N2存储未知进制的数字,即如果tag==2,仅需要交换N1和N2即可。题目分析:该问题有几个关键点需要处理。首先原创 2018-01-29 16:51:15 · 496 阅读 · 0 评论 -
PAT甲级1009
多项式乘法就是一个简单的模拟乘法的过程。注意去掉系数为0的,注意下程序的注释,有一个地方要清空!#include using namespace std;struct Node { int exp; float cof;};// node乘以多项式poly,结果存到res中void mul(const Node& node, const vector& pol原创 2018-01-28 19:58:39 · 351 阅读 · 0 评论 -
PAT甲级1008
水一波。。。。。#include using namespace std;int main() { long sum = 0; int N, m, n; cin >> N; sum += N * 5; cin >> m; sum += m * 6; for(int i = 1; i < N; ++i) { cin原创 2018-01-28 12:41:58 · 179 阅读 · 0 评论 -
PAT甲级1007
最大子序列之和最直接的是暴力法,复杂度O(n^2),直接忽略这种方法吧。。还有就是分治策略,可以直接参考算法导论,目测复杂度是O(n\log_2n),但是稍微有点复杂,用到了递归。。在这里只使用最直接的线性时间求解,用到了DP思想,DP暂时是弱项,还需要加强练习。求解最大子序列之和:子序列开始的首元素必须是非负数。使用一个动态的tmp_sum来检测后面的子序列,只要tmp_sum>su原创 2018-01-28 12:41:17 · 340 阅读 · 0 评论 -
PAT甲级1006
也是个水题,但是值得注意的是,学会灵活使用一些C语言的比较函数。看来又得写个总结C字符处理的blog了。。。。。#include using namespace std;int main() { // 如果是全局的,会有一些问题23333333 char sign_in[10] = "23:59:59"; // 注意赋值方式 char sign_out[10原创 2018-01-28 12:25:58 · 179 阅读 · 0 评论 -
PAT甲级1005
类似甲级1001的水题,注意输入的数字应该用string存储。之后就是套路了。。23333333#include using namespace std;int main() { string num; getline(cin, num); int t = num.length(), sum = 0; for(int i = 0; i < t; ++i原创 2018-01-28 12:24:01 · 349 阅读 · 0 评论 -
PAT甲级1016
PAT甲级1016简介:单纯的模拟题,统计账单。注意事项:美分和美元的单位转换去除无效的数据对于无效数据,在输入时间的时候就按照从小到大的顺序来即可。那么,只要找到on-line和off-line这种匹配的,就算做有效,否则无效。 使用std::set来作为人名的集合,使用list来存储时间。因此熟练使用STL可以有较大的优势。下面的代码在1和2测试点过不去,,,暂...原创 2018-02-08 19:21:12 · 672 阅读 · 0 评论 -
PAT 甲级 1004
家谱统计题目思路:本题其实不用建立树的结构,可以把这个题目看成一个使用std::vector的DFS练习。在输入的时候,把每一层的编号看成以该层的根的编号,该层vector存储以该层为根,孩子的编号。那么,使用DFS就可以计算每一层的编号,需要用一个全局的数组ans进行存储。注意变量mm的使用,这是为了记录最大的结点编号,这种方式以后要留意下。代码:#include using原创 2018-01-27 19:22:52 · 343 阅读 · 0 评论 -
PAT 甲级 1003
PAT 1003题目介绍:给出城市的连接状况和每个城市的救援队伍的数量。给定起点和终点,求出起点到终点最短路径的个数,以及找出一条可以包含救援队最多的最短路径,输出最多可以累计的救援队的数目。题目思路:本题目很明显是一个Dijkstra的最短路算法,但是题目的真正考察点在于求解最短路的个数和在多条最短路径上求解出累计救援队伍数目最多的个数。路的条数和救援队伍的数目都采用累计原创 2018-01-27 19:10:20 · 234 阅读 · 0 评论 -
PAT 甲级 1002
多项式加法两处需要注意的:相加后的多项式的系数如果是0,就不能输出注意C++输出的格式#include using namespace std;struct Node { // 自定义存储结构 int exp; float cof;};int main() { vectorA, B, C; Node tmp; int n;原创 2018-01-27 18:44:37 · 217 阅读 · 0 评论 -
PAT 甲级 1001
#include #include using namespace std;int main() { int a, b; cin >> a >> b; bool flag = false; int sum = a + b; if(sum 0) { sum = -sum; flag = true; } s原创 2018-01-27 18:42:28 · 147 阅读 · 0 评论 -
PAT甲级1015
逆序D进制判断是否是素数有一点需要注意:0和1都不是素数!!!!!!!!!!!!! 还有,如果输入的十进制N不是素数,需要输出No,,,第一次这边被坑了。。。。#include using namespace std;bool is_primer(int N) { if(N 2) { // 首先排除0 1 return false; }原创 2018-01-31 09:07:02 · 281 阅读 · 0 评论 -
PAT甲级1014
PAT甲级1014 队列模拟题解题思路:很明显这是一个模拟题,个人觉得很经典。首先,利用nowTime的递增来模拟时间的增长,真正的难点在于寻找一个合适模拟方式,使得题目要求入队方式完美实现,并且还可以精准的计算时间。在这里,用N个队列模拟服务区,用一个wait模拟等待区,只要服务区一有空闲,等待区的人立刻补充上。因为服务区是从1~N进行循环检查的,所以完全可以满足题目中要求从低的开始原创 2018-01-30 22:24:03 · 1095 阅读 · 3 评论 -
PAT甲级1012
1012 考试成绩排名整体难度不大,主要有两个考点:std::set的使用快速确定排名1主要是套模板。2利用了一个数组进行处理,把某个分数之前的都加1。注意最终排名输出的时候,注意技巧就行。#include using namespace std;int C[101], M[101], E[101], A[101];struct Node { string i原创 2018-01-29 18:44:46 · 404 阅读 · 0 评论