PAT 甲级
文章平均质量分 75
Crossing over
这个作者很懒,什么都没留下…
展开
-
PAT A1030 Travel Plan(30)
题意:还是dijkstra最短路径题,路的边权分两个,dist和cost,第一标尺是dist最小,第二标尺是cost最小,此时唯一。注意: 这道题还要输出路径,所以为每个点记录前驱,最后来一个递归输出。 #include <iostream> #include <algorithm> #include <climits> using namespace std;const int Nmax = 50原创 2017-02-10 19:01:40 · 377 阅读 · 0 评论 -
PAT A1002 A+B for Polynomials(25)
题意 模拟多项式相加。 注意 只输出非零项。 printf函数,控制输出小数位数%.1f 单词 polynomials 多项式 coefficient 系数 代码#include<iostream> #include<algorithm> using namespace std;void add(int k1, int k2, int n1[], int n2[], double a1[],原创 2017-02-11 01:22:18 · 296 阅读 · 0 评论 -
PAT A1003 Emergency(25)
题意 给定图(城市,路),给定边权(路程),点权(救援队数目),求两点间最短路条数(边权和最小),并求其中点权和的最大值。 注意 fill函数初始化二维数组的写法和陷阱。 Dijkstra算法的扩展 在&amp;lt;和==处理上,注意最短路数目在==情况下可直接加。 为每个点设两个数组,分别用于保存起点到该点的最短路数目和点权和。 边权和最小值与点权和最大值在路径上可传递,满足最优性原理。 证明:设r为s到t原创 2017-02-11 01:16:30 · 296 阅读 · 0 评论 -
PAT A1004 Counting Leaves(30)
题意 给定家族树(结点总数、非叶节点总数和上下层对应关系),求每层的叶节点数。 注意 输入数据后从根节点递归得到每个节点的层次。(因为某些测试用例不是严格按照树层次输入的,不这样搞会挂掉一些测试点) 单词 pedigree 血统,家谱 hierarchy 层次 fix 固定原创 2017-02-11 01:05:49 · 272 阅读 · 0 评论 -
PAT A1005 Spell It Right(20)
题意 给定一个超大数,输出其各位数字总和的各位数字(英文单词)。 注意 使用字符串存储数。 单词 consecutive 连续的 代码#include <iostream> #include <string> using namespace std;const int MAX = 101; char big[MAX]; const string digit[10] = { "zero",&原创 2017-02-11 00:58:18 · 187 阅读 · 0 评论 -
PAT A1007 Maximum Subsequence Sum(25)
题意 给定K个数的序列,求其最大子串和(连续),并输出最大子串的首尾元素(不是下标)。 注意 以下标i为尾的最大子串的选择只有两种 本身(元素a[i]本身) 下标i-1为尾的最大子串(若存在)加上本身。 如何证明?其实就是最优性原理。首先子串必然是连续的,设以下标i-1为尾的最大子串为s0,以下标i为尾的最大子串为s,s为何不能选择s0的一部分或是s0加上更前面的? s若是选择s0的一部分,那么原创 2017-02-11 00:54:34 · 311 阅读 · 0 评论 -
PAT A1018 Public Bike Management(30)
题意N个车站和一个管理中心,给定终点,选取管理中心到终点的最短路径,若有多条最短路径,要根据一些奇怪的标准从中选取一条唯一的最短路径(首先最小take其次最小return)。注意 这道题肯定先要用dijkstra,然后问题来了,take和return值不满足传递性!这就是说,给定终点 x 和到该点的最优路径 0~x(最短路径里按照标准选取的唯一),其子问题 (终点为 0~x 中间某点 y) 的最优路原创 2017-02-10 22:03:14 · 277 阅读 · 0 评论 -
PAT A1009 Product of Polynomials(25)
题意模拟多项式相乘。注意 不会有零项 开一个2*MAX-1的数组存放结果 memset过检测需要加头文件cstring scanf读取double类型需要%lf 代码#include <iostream> #include <cstring> using namespace std;const int MAX = 1001; double n1[MAX]; double n2[MAX]; doubl原创 2017-02-11 00:27:30 · 259 阅读 · 0 评论 -
PAT A1072 Gas Station(30)
题意这个题读起来有点烦,是这样的,首先有N个居民房和M个加油站,每个加油站都对应着一个最小距离和平均距离,加油站的最小距离是指从他到其他所有居民房的最短路径的最小值(从N条最短路径里面选),现在让你选择一个加油站,首先他到所有居民房的最短路径均不能大于服务范围(每个加油站一样),其次他的最小距离在所有加油站的最小距离中最大(从M个加油站中选),若不唯一,选择平均距离最小的,若再不唯一,选择编号最小的原创 2017-02-10 19:49:57 · 400 阅读 · 0 评论 -
PAT A1087 All Roads Lead to Rome(30)
题意N个城市,给定起点终点,除起点外每个城市有一个点权,第一标尺,边权和最小(最短路径),第二标尺,点权和最大,第三标尺,平均点权和最大(不算起点)。同时还要输出第一标尺对应的路径数量和最后唯一的路径。注意 第三标尺可以转化为结点数量最小。 dijkstra更新路径里面要把这些逻辑都写上。 城市名是个字符串,用map<string,int>就可以处理。 #include <iostream> #in原创 2017-02-10 20:20:34 · 409 阅读 · 0 评论 -
PAT A1001 A+B Format(20)
题意 把两个数相加,三位一逗号格式(从最低位开始)。 注意 负号。 第一个逗号若在首位,则不输出。 溢出(测试用例无体现) 单词 commas 逗号 代码#include<iostream> #include<string> using namespace std; void cal(int a, int b) { int c = a + b; int k = 0; i原创 2017-02-11 01:26:29 · 673 阅读 · 0 评论