PAT2020年春季3月份备考_按照套卷刷真题(1-3)

博主分享了在PAT编程竞赛中遇到的问题,尽管代码在本地和debug环境下正确,但在正式提交时出现错误。文章强调了编程技能的积累和心态调整的重要性,提到了Visual Studio的语法检查功能对提高效率的帮助。同时,给出了两段不同的满分代码示例,分别用C++实现,用于解决图的着色问题。博客还提醒初学者PAT的难度,并鼓励逐步学习和实践。
摘要由CSDN通过智能技术生成

题干:1154 Vertex Coloring (25 分)

题解:

  1. 我的代码在本地和pat平台上面的debug运行案例数据是完全正确的,不知道为什么提交的时候竟然全错,我真的很奇怪到底是为什么,虽然我的代码是零分,但我相信我的代码仍然有很多值得学习的东西。。。
  2. 整个编写的过程符合考试要求,控制在了40分钟左右,可以说是体验了一波快出师的喜悦,而且搞了这么久的PAT,这是头一次一次编码就完全正确,没有语法bug,代码的逻辑竟然也没有出错,完全符合预期的结果,这个真的非常的出人意料,但是似乎也在情理之中吧,毕竟练过了不少道题的,但是过去做题往往都做不到这样,不是连基本的逻辑都理不清,或者一些语法搞不清楚,就效率非常低,但是感觉总体也是一个质变到量变的过程吧。这个对我以后复习其他的考研课程,在时间的安排上面有比较深刻的借鉴意义,这几道写成博客的题目,做的质量都是相当的高
  3. 能够做的这么快,和visual studio的强大静态语法检查功能应该脱不了关系XD。
  4. 代码的阅读过程可能会有点费劲,尤其是对刚刚开始学习PAT的同学,争取的话一次掌握一点代码里面的设计思想吧,也有可能在做别的一道题的时候掌握了这道题的思想,一时间无法全盘把握不要心急。。。还有在考前“冲刺”的话,要注意分类题型的训练,这些题目你可以很长时间自己都写不出来代码,但是你要努力去看题解里面的做法,注意总结。。。早晚你会学会的,还有“冲刺”的阶段,心态的调整非常非常的重要,千万不要心急,永远记住,适合自己的学习&生活节奏才是最重要,就是你自己感觉舒服的节奏才是最最重要的!!!但是调整心态是挺困难的
  5. 如果你是刚学编程的话(完全陌生,毫无概念)。。。从我个人的认识来看,我非常不建议你现在去学PAT,PAT虽然有分级,但是同样按照陈越这位出题老师的说法,PAT哪怕是乙级对于初学者都已经是相当大的挑战!!!这里我不是吓唬你,或者劝退,我只想告诉你,技能的学习和提升是一个循序渐进的漫长过程,要耐得住寂寞。。。。可能对我这样的人很容易,我个人以后是真心希望投入科研工作,我在这个专业上投入了非常多的时间,过去花了数年的时间,做了相当多的编程和项目实践来把握这些知识,然后才慢慢走上PAT的道路。。。。。大部分考PAT的人根据我的观察,他们的经历也不仅仅局限于这张证书,他们对这个专业都有比较深的热情和兴趣,虽然这样的考试有一定的应试成分,是可以并且也是需要考前突击的,但是总体的大学的学习氛围和个人因素,决定了考取这样的证书是一个需要相当强烈的个人兴趣或者说志向去驱动的一个行为。
  6. // 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;
    }

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Exodus&Focus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值