CSP-J/S 2025 游记

· · 生活·游记

蒟蒻人生第一次CSP(看我什么钩子都没有就知道是什么含金量了)

CSP-J

进考场看见是“保持安静”蚌埠住了(原来CCF也用极域且本人曾自己编过极域killer)

T1

字符串?太好了是签到题直接提取+sort+逆序输出秒了

(CCF甚至贴心到“s 仅包含小写英文字母及数字,且包含至少一个 1∼9 中的数字”)

太感动了既不用getline又不用特判全0

#include<bits/stdc++.h>
using namespace std;
string s;
int a[1000005],n;
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(isdigit(s[i])) a[++n]=s[i]-'0';
    }
    sort(a+1,a+n+1);
    for(int i=n;i>=1;i--) cout<<a[i];
    return 0;
}

T2

一看题目一堆LateX撸起袖子准备开始发力,结果看完题,发现依然签到题🤣

sort完稍微找了一下规律,然后样例一测……嘶怎么不对?再检查一遍,忘写逆序cmp了

AC!

对了真的要提一嘴,这个CCF是不是脑子***为什么样例前面非要写行号啊,我ctrl+v一下直接人傻了,pdf也不好好设计一下选中顺序,样例文件还是unix换行符不能复制,给我浪费了一大堆时间真服了(先别急着喷S有反转)

T3

见xor知难度,本人位运算和dp巨差

先把输入写了,想了半天这个异或和要怎么优化,突然想起来区间和=前缀和,so举一反三异或和=————前缀异或和!我真是甜菜!!!!

但是我第一次推出来的式子长这样:|S_r-S_{l-1}|==k即可(我当时脑子是不是接错线了为什么会想到用减法)

然后暴力一遍找所有满足条件的区间

接下来最痛苦的来了:最长上升子序列,但是pair版

我使出毕生所学写了一遍dp发现不对,又打了一遍dfs发现大样例直接歇菜……于是果断把dfs注释掉死磕转移方程

当时最后想出来f_i=max(\begin{cases} f_j+1(1≤j<i) & max(f_j)(序列中最后一个区间的结尾)<a_i \\ f_j(1≤j<i) & max(f_j)(序列中最后一个区间的结尾)≥a_i \end{cases})(至今不知道对不对)

但是测样例发现不对,开始觉得肯定是dp推错了,后面看不出来错哪就看了一下前面的前缀和——我终于发现那个减号咋看咋不对了,然后写了个拍子验了一遍找到的所有区间,发现并不是所有区间的异或和都是k,就把-改成了^

xor1.in对了!

xor2.in对了!

xor3.in对了!

xor4.in对了!

难道说—————————

xor5.in挂了

****

(然后调到结束也没调出来,气死我了)

T4

古人云T1T2全A坚决不看T4,但是我偏不信邪地滑了一下滚轮——一眼看到了一坨密密麻麻的\sum_{i=1}^{m} l_i > 2 \times \max_{i=1}^{m} l_i感觉做不出来,但是上面还有中文就看了一遍,发现题意超简单

于是——没错依然使出看家本领dfs,小样例过了,结束战斗

CSP-S

考完上午累得半死下午还要罚坐四个钟头

但是下午老师一句话直接打通了我的任督二脉——可以直接把下发文件夹里的东西copy到考生文件夹里啊!!那我上午复制样例的傻样算什么?我真服了我这个脑子,终究是吃了没经验的亏,它甚至贴心地把样例输出的后缀名改成了.ans怕重名……CCF你真的我哭死,原来改一下freopen就能测样例啊……(收回前面的那一段)

T1

要不说S组还得是S组呢,这第一题画风一下就不一样了(调了我一个多小时)

第一眼求所有方案中的极值,这不dfs吗(这孩子真没救了),打完非常顺利地TLE了……

后来我稍加思索,可以先让每个入都去他们最想去的club,然后再微调。建立3个vector模拟三个社团,用了个struct又写了两个cmp,让他们以满意度差值排序,把最不care社团分配的那个揪出来放到第二喜欢的,然后重复操作使得3个vector的size()都不超过\frac{n}{2}

样例全过,但是最后一个1.0701s,我真是无语了

后来把输入输出全换成scanf和printf发现没效果就不管了

T2

第一眼:无向连通图求最小生成树,太好啦没学过!但是倔强地死磕……具体过程省略了,因为实在太煎熬了

T3

丸辣怎么全是公式latex,难道我要连题目都看不懂吗……还好本人经常见这种简单题意非要形式化用latex不说人话的题目,一次就看懂他在说什么了:

其实就是给一个dictionary然后让你替换而已

字符串匹配吗有点意思,但是只学过暴力和string.find😒,然后用substr,erase,insert打了一遍暴力,结束

T4

看题?想太多,直接看样例:什么?输出居然只有一个数!甚至还有取模!那我就不客气了😍

#include<bits/stdc++.h>
using namespace std;

int main(){
    srand(time(0));
    cout<<rand()%998244353;
    return 0;
}

结束啦!!!

考完撒花🌸🌸🌸