CSP-J/S 2025 游记
hengxiaopi · · 生活·游记
蒟蒻人生第一次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举一反三异或和=————前缀异或和!我真是甜菜!!!!
但是我第一次推出来的式子长这样:
然后暴力一遍找所有满足条件的区间
接下来最痛苦的来了:最长上升子序列,但是pair版
我使出毕生所学写了一遍dp发现不对,又打了一遍dfs发现大样例直接歇菜……于是果断把dfs注释掉死磕转移方程
当时最后想出来
但是测样例发现不对,开始觉得肯定是dp推错了,后面看不出来错哪就看了一下前面的前缀和——我终于发现那个减号咋看咋不对了,然后写了个拍子验了一遍找到的所有区间,发现并不是所有区间的异或和都是
xor1.in对了!
xor2.in对了!
xor3.in对了!
xor4.in对了!
难道说—————————
xor5.in挂了
我****
(然后调到结束也没调出来,气死我了)
T4
古人云T1T2全A坚决不看T4,但是我偏不信邪地滑了一下滚轮——一眼看到了一坨密密麻麻的
于是——没错依然使出看家本领dfs,小样例过了,结束战斗
CSP-S
考完上午累得半死下午还要罚坐四个钟头
但是下午老师一句话直接打通了我的任督二脉——可以直接把下发文件夹里的东西copy到考生文件夹里啊!!那我上午复制样例的傻样算什么?我真服了我这个脑子,终究是吃了没经验的亏,它甚至贴心地把样例输出的后缀名改成了.ans怕重名……CCF你真的我哭死,原来改一下freopen就能测样例啊……(收回前面的那一段)
T1
要不说S组还得是S组呢,这第一题画风一下就不一样了(调了我一个多小时)
第一眼求所有方案中的极值,这不dfs吗(这孩子真没救了),打完非常顺利地TLE了……
后来我稍加思索,可以先让每个入都去他们最想去的club,然后再微调。建立3个vector模拟三个社团,用了个struct又写了两个cmp,让他们以满意度差值排序,把最不care社团分配的那个揪出来放到第二喜欢的,然后重复操作使得3个vector的size()都不超过
样例全过,但是最后一个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;
}
结束啦!!!
考完撒花🌸🌸🌸