CSP-J1&S1&J2 2024游记

HuangBarry

2024-10-27 14:11:40

Life & Travel

坐标SC,我的第一篇游记。
为什么不谈 S2?---S 组初赛没过555。//刚学 1 year

初赛Day 0:

晚上九点:

上完语文补习回来,睡。

初赛Day 1:

早上八点:

起床,去 MDL 买了个性价比套餐,前去考场的路上记了格雷码(下拉异或……)。

早上九点:

进入学校,全部人站在操场上,所有人被老师带去教室。见到了一个学校里不太熟的,进度比我后,但不知道我实力,还在那嘲讽我。还见到两个在外面学的同学。

早上九点半:

开考,选择基本全会,除了那个图,没想到真考了格雷码。阅读怎么这么水,dp 数据也这么小,完善也一样水,汉诺塔 DFS 秒出答案。

上午十一点半:

出考场,第一步洛谷上找答案,一对,93.5(答案记准考证上带出来的),汉诺塔全对,稳啦!!!

下午 S 没上 30 呜呜呜,丸辣。//其实主要还是心态有问题,自己觉得自己没这个水平,除了前十五道选择其他全蒙的,以至于完善答案 AAAAAAABAABBBBBBBABB

查分:

当天中午在学校午睡时把副校吵醒被请家长了,我爸非常冰冷的告诉我了成绩(和估分一模一样)。

国庆期间:

疯狂补知识点,只留了一天来写文化课作业,集训最后一天在外学的机构举办了一个活动,拿了个团队赛第一。

复赛Day 0:

晚上九点:

还是补完语文回来,玩了半小时沙威玛,开始临时抱佛脚,一点押题经验没有,觉得会考高精,因为好几年没考了,硬是把模版全背了,还把 STL 和 dp 全重学了一下。

复赛Day 1:

早上六点:

闹钟响了。(当时醒了一下的)

早上七点半:

丸辣,起晚了!!!(赶去考场),在路上和其他学信竞在微信上聊天,发现他们大部分都在成外高中部。

早上八点:

幸亏家离考场不远,进入考场,遇到好几个认识的,感觉巨紧张。

早上八点半:

开考。

T1:

一开始理解错题意了,第十分钟才写出来,这一眼用 map 来记录是否需要借,为了减时间复杂度,还写了个 unordered_map

T2:

模拟+DFS,难度还行(但还是调了半小时),至少考场上所有大样例全都过了。

T3:

第一眼:DFS,直接验证想法,半个小时写出来了,这运行速度20分都拿不到,开始找数学,又花半小时写出来了,去上了个厕所压压惊。

T4:

没看懂题目,写了个逆天代码,具体看下文。

剩余时间:

玩画图+研究 Linux(之前没用过任何 Linux 的系统)。

下午二点:

去我外面的信竞班上课了,老师说让我们放松了一下,但我还是把洛谷 CSP-J 自测写了。

T1:

100分。

T2:

80分,丸辣!!!开始为 T3 而紧张。

T3:

100分,稳啦!!!写了个T3 题解,已过。

查分:

诶?(100+100+100+0=)300???

感想://凑字数

以后无论怎样都得拼一下。(但凡拼一下我就大概率能考s2了呜呜呜)

J2 考场代码:

T1 poker:

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int n,ans=52;
unordered_map<string,bool>m;
string pai;
int main(){
    freopen("poker.in","r",stdin);
    freopen("poker.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n;
    while(n--){
        cin>>pai;
        if(!m[pai]){
            ans--;
            m[pai]=1;
        }
    }
    cout<<ans<<endl;
    return 0;
}

T2 explore:

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N=1e3+13;
int t,n,m,k,x,y,d,ans;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
char Map[N][N];
bool vis[N][N];
void dfs(int xx,int yy,int dd){
    if(!k)
        return;
    for(int i=0;i<4;i++){
        if(!k) return; 
        if(i!=0) k--;
        int nx=xx+dx[(dd+i)%4];
        int ny=yy+dy[(dd+i)%4];
        if(nx<1||ny<1||nx>n||ny>m||Map[nx][ny]=='x')
            continue;
        else{
            if(!k) return; 
            k--;
            if(!vis[nx][ny])
                ans++;
            vis[nx][ny]=1;
            dfs(nx,ny,dd+i);
            break;
        }
    }
}
int main(){
    freopen("explore.in","r",stdin);
    freopen("explore.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--){
        ans=1;
        cin>>n>>m>>k;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                vis[i][j]=0;
        cin>>x>>y>>d;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>Map[i][j];
        vis[x][y]=1;
        dfs(x,y,d);
        cout<<ans<<endl;
    }
    return 0;
}

T3 sticks:

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int t,n;
string ans="";
int main(){
    freopen("sticks.in","r",stdin);
    freopen("sticks.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--){
        ans="";
        cin>>n;
        if(n==1){
            cout<<-1<<endl;
            continue;
        }else if(n==10){
            cout<<22<<endl;
            continue;
        }
        if(n>=11&&(n-11)%7==0){
            n-=11;
            cout<<20;
        }else if(n>=17&&(n-17)%7==0){
            n-=17;
            cout<<200;
        }else
            switch(n%7){
                case 1:
                    ans+="10";
                    n-=8;
                    break;
                case 2:
                    ans+="1";
                    n-=2;
                    break;
                case 3:
                    ans+="7";
                    n-=3;
                    break;
                case 4:
                    ans+="4";
                    n-=4;
                    break;
                case 5:
                    ans+="2";
                    n-=5;
                    break;
                case 6:
                    ans+="6";
                    n-=6;
                    break;
            }
        while(n){
            n-=7;
            ans+="8";
        }
        cout<<ans<<endl;
    }
    return 0;
}

T4 chain:

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int t,n,k,q,l,x,y;
int main(){
    freopen("chain.in","r",stdin);
    freopen("chain.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--){
        cin>>n>>k>>q;
        for(int i=1;i<=n;i++){
            cin>>l;
            for(int j=1;j<=l;j++)
                cin>>k;
        }
        while(q--){
            cin>>x>>y;
            cout<<(x+y>=x*y)<<endl;
        }
    }
    return 0;
}