题干:1154 Vertex Coloring (25 分)
题解:
- 我的代码在本地和pat平台上面的debug运行案例数据是完全正确的,不知道为什么提交的时候竟然全错,我真的很奇怪到底是为什么,虽然我的代码是零分,但我相信我的代码仍然有很多值得学习的东西。。。
- 整个编写的过程符合考试要求,控制在了40分钟左右,可以说是体验了一波快出师的喜悦,而且搞了这么久的PAT,这是头一次一次编码就完全正确,没有语法bug,代码的逻辑竟然也没有出错,完全符合预期的结果,这个真的非常的出人意料,但是似乎也在情理之中吧,毕竟练过了不少道题的,但是过去做题往往都做不到这样,不是连基本的逻辑都理不清,或者一些语法搞不清楚,就效率非常低,但是感觉总体也是一个质变到量变的过程吧。这个对我以后复习其他的考研课程,在时间的安排上面有比较深刻的借鉴意义,这几道写成博客的题目,做的质量都是相当的高
- 能够做的这么快,和visual studio的强大静态语法检查功能应该脱不了关系XD。
- 代码的阅读过程可能会有点费劲,尤其是对刚刚开始学习PAT的同学,争取的话一次掌握一点代码里面的设计思想吧,也有可能在做别的一道题的时候掌握了这道题的思想,一时间无法全盘把握不要心急。。。还有在考前“冲刺”的话,要注意分类题型的训练,这些题目你可以很长时间自己都写不出来代码,但是你要努力去看题解里面的做法,注意总结。。。早晚你会学会的,还有“冲刺”的阶段,心态的调整非常非常的重要,千万不要心急,永远记住,适合自己的学习&生活节奏才是最重要,就是你自己感觉舒服的节奏才是最最重要的!!!但是调整心态是挺困难的
- 如果你是刚学编程的话(完全陌生,毫无概念)。。。从我个人的认识来看,我非常不建议你现在去学PAT,PAT虽然有分级,但是同样按照陈越这位出题老师的说法,PAT哪怕是乙级对于初学者都已经是相当大的挑战!!!这里我不是吓唬你,或者劝退,我只想告诉你,技能的学习和提升是一个循序渐进的漫长过程,要耐得住寂寞。。。。可能对我这样的人很容易,我个人以后是真心希望投入科研工作,我在这个专业上投入了非常多的时间,过去花了数年的时间,做了相当多的编程和项目实践来把握这些知识,然后才慢慢走上PAT的道路。。。。。大部分考PAT的人根据我的观察,他们的经历也不仅仅局限于这张证书,他们对这个专业都有比较深的热情和兴趣,虽然这样的考试有一定的应试成分,是可以并且也是需要考前突击的,但是总体的大学的学习氛围和个人因素,决定了考取这样的证书是一个需要相当强烈的个人兴趣或者说志向去驱动的一个行为。
-
// A1154.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <bits/stdc++.h> using namespace std; #pragma warning(disable:4996) vector<vector<int>> g; map<int,bool> hn; vector<int> an; int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif // !ONLINE_JUDGE int n, m,i,t1,t2,k,j,t3,z; cin >> n >> m; g.resize(n); for (i = 0; i < m; i++) { cin >> t1 >> t2; g[t1].push_back(t2); g[t2].push_back(t1); } cin >> k; for (i = 0; i < k; i++) { an.resize(n); for (j = 0; j < n; j++) { cin >> t3; an[j] = t3; hn[t3] = true; } int cs,co; bool flag = true; for (j = 0; j < n; j++) { if (flag == false) { break; } cs = an[j]; for (z = 0; z < g[j].size(); z++) { co = an[g[j][z]]; if (cs == co) { flag = false; break; } } } if (flag) { cout << hn.size() << "-coloring" << endl; } else { cout << "No\n"; } } return 0; }
7.别人的满分代码
#include <iostream> #include <vector> #include <set> using namespace std; struct node {int t1, t2;}; int main() { int n, m, k; cin >> n >> m; vector<node> v(m); for (int i = 0; i < m; i++) scanf("%d %d", &v[i].t1, &v[i].t2); cin >> k; while (k--) { int a[10009] = {0}; bool flag = true; set<int> se; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); se.insert(a[i]); } for (int i = 0; i < m; i++) { if (a[v[i].t1] == a[v[i].t2]) { flag = false; break; } } if (flag) printf("%d-coloring\n", se.size()); else printf("No\n"); } return 0; }