PAT
文章平均质量分 55
sheepyWYY
这个作者很懒,什么都没留下…
展开
-
1001. A+B Format解析
正好,现在在刷PAT,遇到的一些问题记录下来和大家分享讨论下。这个题的坑点在于,给出数的范围在-1000000到1000000之间,在最开始做的时候被样例带着跑了。只考虑了6位数的情况,其实答案是有7位数的情况的。例如 -1000000+-10 = -1,000,010的。注意到这个应该就不会有大问题了。附上AC代码。#include int main() {原创 2017-01-03 15:45:16 · 1457 阅读 · 0 评论 -
1002. A+B for Polynomials 解析
这个题坑点在于一、第一个是在于输出题目要求的输出是精确到一位小数。所以在输出的时候要控制输出的格式。而且最后一个结果的输出后面是不能带有空格的。最后一个输出需要单独判定。二、在于两个多项式两个多项式系数相加是会有0的情况出现的!!而题目要求输出是不能有0项的。注意到这两个应该可以敲出代码了。附上AC代码。#include #include usin原创 2017-01-03 15:53:33 · 950 阅读 · 0 评论 -
1003. Emergency 解析
这道题的坑点在于:一、图为无向图,在用邻接表存储图的时候,我把图默认当成有向图了。导致有两个不能AC。改了就OK了~二、Dijstra算法的进一步应用。这个我理解的还不透彻,瞎说下。首先是进行一个大的循环,以顶点数为次数,保证循环完整个图。然后是对dist数组进行筛选选出最小的顶点号u然后遍历与u相邻的结点记为v 计算以u为中间点到v的距离会不会缩短。边计算边累加边数和权重原创 2017-01-04 21:49:35 · 823 阅读 · 0 评论 -
1004. Counting Leaves 解析
找每层的没有孩子结点的个数在分层的时候注意如何确定在哪一层。我的做法是用个队列。当每行第一个元素再出队的时候就是一行完了。这里注意加入下一行的第一个元素的时候要小心处理。不然会出错。附上AC代码:#include #include #include using namespace std;int level[101] = { 0 };int le = 0;int原创 2017-01-13 22:25:14 · 842 阅读 · 0 评论 -
1005. Spell It Right 解析
感觉没什么好说的。我是偷懒用String读入,然后转换计算。代码看上去比较麻烦。附上AC代码:#include #include #include using namespace std;void change(string s ,int & sum) { for (int i = 0; i < s.size(); i++) {// cout << s[i] << en原创 2017-01-13 22:28:20 · 960 阅读 · 0 评论 -
1006. Sign In and Sign Out 解析
这个和1005差不多。处理好时间的格式应该没有问题。我把时间全部转换成了秒为单位进行比较。#include #include using namespace std;struct Node{ string ID; string Login; string Loout;};int Str2Int(char s) { int temp = 0; switch (s)原创 2017-01-13 22:30:23 · 1199 阅读 · 0 评论 -
1020. Tree Traversals 解析
我是直接由后序 和中序建树 然后 层序遍历。#include #include #include using namespace std;vector post;vector in;int N, Count = 0;struct Node { int data; Node * L; Node * R;};typedef Node * Tree;Tre原创 2017-02-07 14:03:12 · 318 阅读 · 0 评论 -
1021. Deepest Root 解析
DFS的改版 需要依次对每个顶点分别进行DFS然后求深度做大的几个顶点。理清思路应该可以出来。#include #include #define Max 10010using namespace std;vector g[Max];vector isVisit;vector depth;vector Root;int N;int ThisDept原创 2017-02-07 14:05:31 · 509 阅读 · 0 评论 -
1022. Digital Library 解析
注意一行句子的输入方法。_(:з)∠)_这个题我想复杂了。大家注意关键字行的key是一个个词,不要理解成一句话了。我理解成一话用KMP和字符串匹配来做一直超时。还弄的很麻烦。题目给的查找的 能找到的一定是能匹配的。本来挺容易的一道的被我弄复杂了。#include #include #include #include #define MAX 10010#defi原创 2017-02-07 14:07:05 · 363 阅读 · 0 评论 -
1023. Have Fun with Numbers 解析
_(:з)∠)_ 感觉和数有关的了 long long 必然爆啊..偷懒被自己坑了。自己写个加法函数就好了,多大都不爆的那种!!!!啊哈哈哈哈 (已疯.......#include #include #include using namespace std;int char2int(char c) { return int(c - '0');}char int2原创 2017-02-07 14:09:43 · 425 阅读 · 0 评论 -
1024. Palindromic Number 解析
和1023 一样 long long照样爆,自己写加法函数吧~~~~#include #include #include #include using namespace std;string N;int K;int char2int(char c) { return int(c - '0');}char int2char(int n) { return原创 2017-02-07 14:11:51 · 350 阅读 · 0 评论 -
1025. PAT Ranking 解析
里面有测试成绩为0的情况。然后我的最小成绩设成0了,然后0的排序有问题。改成-1就好了。#include #include #include #include using namespace std;struct Node { string id; int grades; int local; int local_rank; int fina_ranl;};vec原创 2017-02-07 14:13:13 · 261 阅读 · 0 评论 -
1008. Elevator 解析
= = 感觉这个题没什么说的,没发现什么会坑的地方。#include #include using namespace std;int main() { vector E; int N; int temp; int sum = 0; cin >> N; for (int i = 0; i < N; i++) { cin >> temp; E.pus原创 2017-01-16 19:24:44 · 444 阅读 · 0 评论 -
1010. Radix 解析
大坑来辣!!!!!1、最小进制为数位上最大数+1 .比如23a最大的数位为a,最小进制为11. 测试点0 2、题目说的为36进制,但是求的基远远不止36. 甚至long long 都有可能爆掉。所以需要二分查找而且要考虑long long溢出的时候值为负。PS:19的测试数据为:17 321 1 10 别问我怎么知道的。都是泪。。。。#include #include原创 2017-01-16 19:28:28 · 619 阅读 · 2 评论 -
1027. Colors in Mars 解析
就是10进制转13进制 注意格式 00 0X 就好。#include #include #include using namespace std;int R ,G ,B;char int213(int num) { if(num <10) return char('0' + num); else { return char('A' + num - 10);原创 2017-02-07 22:41:36 · 304 阅读 · 0 评论 -
1028. List Sorting 解析
数据比较大 需要换用scanf 和 printf#include #include #include #include using namespace std;struct Node{ int id; string name; char n[10]; int grade;};vector list;int N, Rank;bool cmp1(Node n1原创 2017-02-07 22:43:30 · 253 阅读 · 0 评论 -
1029. Median 解析
并归就好~~估计数据大 直接用scanf了 怕cin超时#include #include #include using namespace std;vector l1;vector l2;int N1, N2;int main() { long long temp = 0; scanf("%d", &N1); for (int i = 0; i原创 2017-02-07 22:45:33 · 380 阅读 · 0 评论 -
1030. Travel Plan 解析
直接Dijstra感觉简单点,这个第二标尺比较容易想明白。Dijstra+DFS感觉反而麻烦了一点 两个都写了下练练手。#include #include #include #include #include #include #define MAX 510using namespace std;struct Node { int v; int dis;原创 2017-02-07 22:46:55 · 407 阅读 · 0 评论 -
1031. Hello World for U 解析
注意端点值,不然有的示例不能过。#include #include using namespace std;int main() { string s; cin >> s; int N = s.size(); int n1 = 1, n2 = 2; int maxn1 = -1, maxn2 = -1; for (n2 = 3; n2 <= N; n2++)原创 2017-02-07 22:48:33 · 281 阅读 · 0 评论 -
1032. Sharing 解析
有几个特殊情况:1、开头就相同2、不是以-1结尾考虑到这两个就应该oK了。。#include #include #include #define MAX 100010using namespace std;struct Node { char c; int next;};Node str[MAX];int main() { int p1, p2, N原创 2017-02-08 11:41:18 · 317 阅读 · 0 评论 -
1033. To Fill or Not to Fill 解析
这个题这位大神写的太好了。太详细了。http://www.cnblogs.com/XBWer/p/3866486.html原创 2017-02-08 15:43:03 · 653 阅读 · 0 评论 -
1034. Head of a Gang
考察并查集。发现并查集什么都不会呀。。。查看了大神的代码感觉自己太弱了 http://blog.csdn.net/sunbaigui/article/details/8657148代码照抄的 就是注释了下。留着当笔记吧。 学习了下map set 迭代器 的使用 还是有点不熟练,还要多练。。感觉这里开始PAT题的类型突然变了。。#include #include #include原创 2017-02-08 20:46:45 · 312 阅读 · 0 评论 -
1035. Password 解析
注意 is 和 are 注意 account 和accounts!!!注意 is 和 are 注意 account 和accounts!!!注意 is 和 are 注意 account 和accounts!!!#include #include #include #define MAX 1010using namespace std;bool Conve原创 2017-02-09 14:19:16 · 409 阅读 · 0 评论 -
1036. Boys vs Girls 解析
分组排序就好。没什么好多说的。#include #include #include #include using namespace std;int N;struct Stu { string name; string male; string id; int grade;};vector male;vector femal;bool cmp原创 2017-02-09 14:21:49 · 300 阅读 · 0 评论 -
1037. Magic Coupon 解析
分了四个组 然后排序 正的大的放前面 负的小的放前面 然后加起来。#include #include #include #include using namespace std;vector cp; //+vector cn; //-vector pp; //+vector pn; //-bool cmpP(long long l1, long long l2原创 2017-02-09 14:22:39 · 502 阅读 · 0 评论 -
1038. Recover the Smallest Number
思想的话看这里吧。http://blog.csdn.net/sinat_29278271/article/details/48047877比较巧妙。自己写了好长的判断也没通过。#include #include #include #include #include using namespace std;int N;vector list;bool cmp(原创 2017-02-09 14:24:08 · 343 阅读 · 0 评论 -
1011. World Cup Betting 解析
这个计算量不大,直接暴力解了。#include #include using namespace std;void PrintResult(int i) { switch (i) { case 0:cout << "W "; break; case 1:cout << "T "; break; case 2:cout << "L "; break; defaul原创 2017-01-18 23:52:24 · 374 阅读 · 0 评论 -
1015. Reversible Primes 解析
题目意思是将10进制数转成N进制,在N进制的情况下逆转,然后转换成10进制看是不是素数。_(:з)∠)_计算机对素数是真爱啊!!!!#include #include #include #include using namespace std;struct Node { int Num; int Radix;};char int2char(int i) {原创 2017-01-19 00:03:31 · 479 阅读 · 0 评论 -
1013. Battle Over Cities 解析
这个题目其实是DFS遍历图,然后看要几遍才能遍历完整个图。然后那个城市被占领就是那个点已经访问过。还要几次才能遍历完。#include #include using namespace std;void DFS(vector * Ad,bool * isVisit, int u) { isVisit[u] = true; for (int i = 0; i < Ad[原创 2017-01-18 23:56:21 · 670 阅读 · 0 评论 -
1007. Maximum Subsequence Sum 解析
这个题要理解最大子序列的一个很溜的算法。累加和为负的时候舍弃。当累加和大于之前最大的和的时候更新。具体我有点说不明白呢。。。#include #include using namespace std;vector Sub;int main() { int N; int temp; cin >> N; bool tag; int sum = 0; int h = 0原创 2017-01-13 22:31:55 · 369 阅读 · 0 评论 -
1039. Course List for Student 解析
直接用string会超时 名字一定是三位字母+一个数字 所以转成哈希表 来处理 会快很多。#include #include #include #define MAX 26*26*26*10using namespace std;int N, K;vector name[MAX];int c2i(char c) { //char2int if( c >='A'原创 2017-02-11 10:33:44 · 418 阅读 · 0 评论 -
1040. Longest Symmetric String
最长回文子串思想很独特。如果s[i] == s[j] && dp[i + 1][j - 1] == 1 就是说 如果两个元素相等,内层是一个回文串,那么这个也是个回文串,否则不是。初始化的时候 dp[i][i] =1 自己肯定是一个回文子串 感觉后面的题越来越喜欢考这些动态的东西了。#include #include #include #define MAX 1010原创 2017-02-11 10:35:50 · 232 阅读 · 0 评论 -
1041. Be Unique 解析
开两个数组标记就好了~~#include #include #define MAX 100010using namespace std;vector isVis;vector douVis;vector list;int N;int main() { cin >> N; isVis.resize(MAX, false); douVis.resize原创 2017-02-11 10:42:41 · 530 阅读 · 0 评论 -
1042. Shuffling Machine 解析
看了半天发现是在洗牌。。。。。看清楚题目,给出的位置是把当前位置的元素放到那个位置去。应该就没事了。#include #include #define SIZE 55using namespace std;string Orig[SIZE], Relt[SIZE];int shuf[SIZE];int n;string int2str(int n) { s原创 2017-02-11 10:43:38 · 356 阅读 · 0 评论 -
1043. Is It a Binary Search Tree 解析
按先序的顺序建搜索树,然后先序遍历和先序比对,如果不一样再按NRL的顺序遍历比对。#include #include #define MAX 1010using namespace std;int list[MAX];int N;struct Node { int data; Node * l; Node * r; Node() { data = -1; l = NU原创 2017-02-11 10:46:24 · 514 阅读 · 0 评论 -
1044. Shopping in Mars 解析
直接暴力弄会有两个case超时。需要优化一下。参考这个大神的思路的 http://blog.csdn.net/tiantangrenjian/article/details/19251273#include #include #include using namespace std;struct node { int i; int j; int sum;};ve原创 2017-02-11 10:49:09 · 365 阅读 · 0 评论 -
1069. The Black Hole of Numbers 解析
把int转string 排序后再转成int就好#include #include #include #include using namespace std;int n,ans;void convert(int num ,int & n1 ,int & n2) { vector ans; n1 = 0; n2 = 0; for (int i = 0; i < 4;原创 2017-03-01 14:15:16 · 665 阅读 · 1 评论 -
1070. Mooncake 解析
对单价排序 然后一个个算就好啦#include #include #include #define MAX 1010using namespace std;int n, ton;struct Node{ float ton; float prise; float avg;};Node MoonCake[MAX];bool cmp(Node n1, Node n2原创 2017-03-01 15:10:37 · 458 阅读 · 0 评论 -
1018. Public Bike Management 解析
单用Dijstra算法比较难维护。用Dijstra+DFS能简化不少。看到有小伙伴例7有问题,可以看下是不是Dijstra的算法在计算路径的时候出问题没。我的就是下标u和i弄混了。查了好久。。。。。#include #include #include #include #include using namespace std;struct Node { int l原创 2017-02-03 20:23:10 · 671 阅读 · 0 评论 -
1019. General Palindromic Number 解析
这个在进制的时候注意当进制大于10的时候回出现一位是多于两位的,像之前那样用字符串保存就会出问题。#include #include #include #include using namespace std;vector s;int main() { int num, b; cin >> num >> b; int temp = num; int digit原创 2017-02-03 21:54:14 · 299 阅读 · 0 评论