CSP-J复赛“游记”

yszysh

2024-11-09 21:46:52

Life & Travel

CSP-J2024复赛游记:西安铁一中滨河高级中学之旅

准备篇

自从得知自己有幸参加CSP-J2024复赛的消息后,我的心情既激动又紧张。作为一名对计算机科学充满热情的学生,能够在全国性的竞赛中展示自己的能力,无疑是一个难得的机会。为了准备这次比赛,我提前数周开始了系统的复习与训练。每天除了完成学校的课程任务外,我还会花大量的时间在算法学习和编程练习上。我特别关注了历年的真题,通过不断地模拟测试来提高解题速度和准确率。

随着比赛日期的临近,我开始更加注重心理状态的调整。我知道,良好的心态对于发挥出最佳水平至关重要。因此,我尝试通过听音乐、散步等方式来放松自己,确保以最佳的状态迎接挑战。此外,我还仔细查阅了考试的相关规定和注意事项,确保自己在考试当天不会因为一些细节上的疏忽而影响表现。

考试前一天

11月7日,也就是考试前一天,我和父母一起前往西安铁一中滨河高级中学进行考场踩点。我们选择乘坐公交车前往,一路欣赏着城市的风景,心情逐渐平静下来。到达目的地后,我们首先在学校周围转了一圈,熟悉环境。校园非常美丽,绿树成荫,教学楼现代化且设施齐全。我们还特意去了考场所在的教学楼,查看了教室的位置,以便第二天能够快速找到考场。

踩点结束后,我们返回家中。晚上,我简单地复习了一下知识点,回顾了一些重要的算法和数据结构。随后,我早早地上床休息,希望能够保证充足的睡眠,为第二天的比赛养精蓄锐。

考试当天

11月8日清晨,阳光透过窗帘洒进房间,新的一天开始了。我早早起床,洗漱完毕后吃了丰盛的早餐,包括牛奶、面包和水果等,确保自己有足够的能量应对接下来的挑战。临出门前,我再次检查了准考证、身份证以及必要的文具是否带齐,一切准备就绪后,我们便出发前往考场。

由于前一天已经熟悉了路线,我们很快就到达了西安铁一中滨河高级中学。学校门口已经有不少考生陆续进场,大家的表情各异,有的神情紧张,有的则显得轻松自在。我在入口处排队等待工作人员核对信息,整个过程井然有序。进入校园后,我按照前一天的记忆找到了考场所在的教学楼,并顺利找到了自己的座位。

考试正式开始前,监考老师详细讲解了考试规则和注意事项,强调了诚信考试的重要性。随着一声铃响,考试正式开始。打开试卷后,我迅速浏览了一遍题目,整体难度适中,但每一道题都需要仔细思考才能找到最优解法。我深呼吸一口气,开始逐题解答。

第一道题是一道基础的数据结构题目,考察了数组的操作。我迅速理清思路,用C++语言编写出了正确的代码。接着是第二题,这是一道动态规划的问题,需要考虑多个变量之间的关系。我花了些时间分析题目,最终找到了一个高效的解决方案。第三题则是图论方面的知识,要求求解最短路径。我使用了Dijkstra算法,经过多次调试后成功解决了问题。

随着时间的推移,考试进入了尾声。最后一道题是最难的一题,涉及到了复杂的算法设计。我反复思考了很久,终于找到了一个可行的方法。虽然代码有些复杂,但我还是尽力优化了每一步操作,争取获得更高的分数。最后十分钟,我认真检查了所有答案,确保没有遗漏或错误的地方。

考试结束的铃声响起,我交卷后走出考场,心情既轻松又有些忐忑。和其他考生交流后,我发现大家的答题情况各不相同,有人自信满满,也有人略显沮丧。不过,无论结果如何,我们都尽力了,这就是最重要的。

结语 离开西安铁一中滨河高级中学,我和父母一起坐车回家,一路上讨论着考试中的题目和解法,心情逐渐放松下来。这次CSP-J2024复赛的经历不仅让我学到了很多知识,更锻炼了我的心理素质和应变能力。无论最终的成绩如何,我都将这段经历视为宝贵的财富,它将成为我未来学习道路上的重要里程碑。

感谢家人和老师的陪伴和支持,让我有勇气面对挑战;感谢这次比赛给我提供的平台,让我有机会与全国各地的优秀选手同台竞技。未来的路还很长,我会继续努力,追求更高的目标。希望在不久的将来,我能够在更大的舞台上展现自己的风采。

最后附上一二题代码:

#include<bits/stdc++.h>
using namespace std;
string a="DAD2D3D4D5D6D7D8D9DTDJDQDKCAC2C3C4C5C6C7C8C9CTCJCQCKHAH2H3H4H5H6H7H8H9HTHJHQHKSAS2S3S4S5S6S7S8S9STSJSQSK",s;
long long n,b,cnt;
int main(){
  ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
  freopen("poker.in","r",stdin);
  freopen("poker.out","w",stdout);
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s;
        b=a.find(s);
        if(b!=-1){
            cnt++;
            a.erase(b,2);
        }
    }
    cout<<52-cnt;
    return 0;
}
#include<bits/stdc++.h>
char a[1005][1005];
bool b[1005][1005];
long long t, n, m, k, x, y, d, cnt = 1;
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    freopen("explore.in","r",stdin);
    freopen("explore.out","w",stdout);
    cin >> t;
    for (int i = 0; i < t; i++) {
        memset(b,false,sizeof(b));
        cin >> n >> m >> k >> x >> y >> d;
        for (int j = 1; j <= n; j++) {
            for (int l = 1; l <= m; l++) {
                cin >> a[j][l];
            }
        }
        b[x][y] = true;
        for (int j = 0; j < k; j++) {
            if (d == 0) {
                if (y + 1 <= m && a[x][y + 1] == '.') {
                    y += 1;
                    if (b[x][y]==false) {
                        b[x][y] = true;
                        cnt++;
                    }
                } else {
                    d = (d + 1) % 4;
                }
            } else if (d == 1) {
                if (x + 1 <= n && a[x + 1][y] == '.') {
                    x += 1;
                    if (b[x][y]==false) {
                        b[x][y] = true;
                        cnt++;
                    }
                } else {
                    d = (d + 1) % 4;
                }
            } else if (d == 2) {
                if (y - 1 >= 1 && a[x][y - 1] == '.') {
                    y -= 1;
                    if (b[x][y]==false) {
                        b[x][y] = true;
                        cnt++;
                    }
                } else {
                    d = (d + 1) % 4;
                }
            } else if (d == 3) {
                if (x - 1 >= 1 && a[x - 1][y] == '.') {
                    x -= 1;
                    if (b[x][y]==false) {
                        b[x][y] = true;
                        cnt++;
                    }
                } else {
                    d = (d + 1) % 4;
                }
            }
        }
        cout << cnt << '\n';
        cnt = 1;
    }
}