
PAT 甲级
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 · 408 阅读 · 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 · 323 阅读 · 0 评论 -
PAT A1003 Emergency(25)
题意给定图(城市,路),给定边权(路程),点权(救援队数目),求两点间最短路条数(边权和最小),并求其中点权和的最大值。注意fill函数初始化二维数组的写法和陷阱。Dijkstra算法的扩展 在&amp;lt;和==处理上,注意最短路数目在==情况下可直接加。为每个点设两个数组,分别用于保存起点到该点的最短路数目和点权和。边权和最小值与点权和最大值在路径上可传递,满足最优性原理。证明:设r为s到t原创 2017-02-11 01:16:30 · 323 阅读 · 0 评论 -
PAT A1004 Counting Leaves(30)
题意给定家族树(结点总数、非叶节点总数和上下层对应关系),求每层的叶节点数。注意输入数据后从根节点递归得到每个节点的层次。(因为某些测试用例不是严格按照树层次输入的,不这样搞会挂掉一些测试点)单词pedigree 血统,家谱hierarchy 层次fix 固定原创 2017-02-11 01:05:49 · 304 阅读 · 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 · 215 阅读 · 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 · 341 阅读 · 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 · 315 阅读 · 0 评论 -
PAT A1009 Product of Polynomials(25)
题意模拟多项式相乘。注意不会有零项开一个2*MAX-1的数组存放结果memset过检测需要加头文件cstringscanf读取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 · 297 阅读 · 0 评论 -
PAT A1072 Gas Station(30)
题意这个题读起来有点烦,是这样的,首先有N个居民房和M个加油站,每个加油站都对应着一个最小距离和平均距离,加油站的最小距离是指从他到其他所有居民房的最短路径的最小值(从N条最短路径里面选),现在让你选择一个加油站,首先他到所有居民房的最短路径均不能大于服务范围(每个加油站一样),其次他的最小距离在所有加油站的最小距离中最大(从M个加油站中选),若不唯一,选择平均距离最小的,若再不唯一,选择编号最小的原创 2017-02-10 19:49:57 · 447 阅读 · 0 评论 -
PAT A1087 All Roads Lead to Rome(30)
题意N个城市,给定起点终点,除起点外每个城市有一个点权,第一标尺,边权和最小(最短路径),第二标尺,点权和最大,第三标尺,平均点权和最大(不算起点)。同时还要输出第一标尺对应的路径数量和最后唯一的路径。注意第三标尺可以转化为结点数量最小。dijkstra更新路径里面要把这些逻辑都写上。城市名是个字符串,用map<string,int>就可以处理。#include <iostream>#in原创 2017-02-10 20:20:34 · 461 阅读 · 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 · 703 阅读 · 0 评论