CSP2024 游记

xiaoke2021

2024-10-25 12:21:31

Life & Travel

前置笑话:笔者在 CSP-J2023 赛场上一眼认定 T2 为 DP,于是战略跳题,死磕 T3,最终喜提 100 + 0 + 10 + 5 = 115

(此处应有 joker,但笔者太懒不放了)

火大,今年要一雪前耻。

Day -?

不是 CCF 你让我去 BB 比赛?抽象了。

Day -4

体测跑 50 米时侧翻了。伤得挺严重,还好是皮外伤。

校医说周六(24.10.26)能好?但愿吧。

线段树还不会,感觉 S 要爆了。

Day 0

伤基本好了,但还是要带伤上考场了。

11:35

放学时遇到 rgw 了,聊了会儿天。他竟然坐车去 BB?恐怖如斯(需要 4h)。

16:57

提前出校门了。

18:21

上车了。

19:19

到 JSNJ 换乘了。

19:50

又上车了。

20:30

Arrived.

22:31

线段树 1 过了。没那么慌了。

我爸开始吃他的外卖了(

Day 1

-J

六点多就起来了。

进考场了。

T1 直接用 set。这也太水了,和 2023 的 T1 不能比。

#include<bits/stdc++.h>
using namespace std;
int n;
string s;
set<string> cnt;
int main(){
    freopen("poker.in","r",stdin);
    freopen("poker.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>s,cnt.insert(s);
    cout<<52-cnt.size();
    return 0;
}

预计得分 100+0+0+0=100

开 T2。这啥啊?你这是 CSPJ 啊?梦回语法时代。

直接秒了。顺便写了点游记。

#include<bits/stdc++.h>
using namespace std;
int T;
int n,m,k;
int x,y,d;
char mp[1000+5][1000+5];
int dx[10+5]={0,1,0,-1},dy[10+5]={1,0,-1,0};
set<pair<int,int> > cnt; 
bool check(int r,int c){
    return r>=1&&r<=n&&c>=1&&c<=m&&mp[r][c]=='.';
}
int main(){
    freopen("explore.in","r",stdin);
    freopen("explore.out","w",stdout);
    scanf("%d",&T);
    while(T--){
        cnt.clear();
        scanf("%d %d %d",&n,&m,&k);
        scanf("%d %d %d",&x,&y,&d);
        cnt.insert(make_pair(x,y));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>mp[i][j];
        for(int i=1;i<=k;i++){
            x+=dx[d],y+=dy[d];
            if(check(x,y)) cnt.insert(make_pair(x,y));
            else x-=dx[d],y-=dy[d],d=(d+1)%4;
        }cout<<cnt.size()<<endl;
    }
    return 0;
}
//好强啊,29min AC T1 T2。 
//今年这么喜欢出去重?
//T1 应该是这四年来(2021,2022,2023,2024)最水的题目了。
//T1 预计上位红/下位橙,T2 预计上位红(应该不会)/橙
//期望得分:100+100+0+0=200

//考虑到去年选手源代码中的汉字出现了问题,这里给出英文版本。 
//Considering the Chinese character had some problems last year,provide English version here.

/*
Oh my,29min AC problem A and B.
So many unique this year?
Maybe problem A is the easiest problem of the four years(2021,2022,2023,2024).
I think problem A is hard red problem/easy orange problem,problem B is hard red(Probably not at all)/orange.
Expected score:100+100+0+0=200
*/ 

预计得分 100+100+0+0=200

开 T3。小木棍?哦哦不是那个小木棍。

怎么还有负数?看着文件名笑了半天。赛后发现一大堆写成 stick 的。

考场心情和思路变化记不清了,但代码下面有考场游记:

#include<bits/stdc++.h>
using namespace std;
int T;
int n;
int num[10+5]={0,0,1,2,4,7,8},val[10+5]={0,6,2,5,4,3,7};
bool spj(){
    if(n==1){
        cout<<"-1"<<endl;
        return true;
    }if(n==2){
        cout<<"1"<<endl;
        return true;
    }if(n==3){
        cout<<"7"<<endl;
        return true;
    }if(n==4){
        cout<<"4"<<endl;
        return true;
    }if(n==5){
        cout<<"2"<<endl;
        return true;
    }if(n==6){
        cout<<"6"<<endl;
        return true;
    }if(n==7){
        cout<<"8"<<endl;
        return true;
    }return false;
}
int main(){
    freopen("sticks.in","r",stdin);
    freopen("sticks.out","w",stdout);
    cin>>T;
    while(T--){
        cin>>n;
        if(spj()) continue;
        int minlen=ceil((double)n/7);
        int x=n;
//      cerr<<" "<<minlen<<endl;
        for(int i=1;i<=minlen;i++){
            for(int j=1;j<=6;j++){
                if(i==1&&j==1) continue;
                if(ceil((double)(x-val[j])/7)==minlen-i){
                    x-=val[j];
                    cout<<num[j];
                    break;
                }
            }   
        }
        puts("");
    }
    return 0;
}
//6 2 5 5 4 5 6 3 7 6
//0 1 2 3 4 5 6 7 8 9
//7 6 5 4 3 2
//8 0 2 4 7 1
/*

*/

/* 
这题应该是个贪心?
《小木棍》一眼看到这个名字都吓死了(
《众所周知》,有一道和此题很像的题,就是贪心(只不过是求最大值)。
思路应该差不多。

思路大概是尽量用 8。如果还剩一些数,也就是 7 不能整除 n,那就将 (n mod 7)+7 分为两个数,然后输出 floor(n/7)-1 个 8。这步可以特判。如果能整除,那就输出 n/7 个 8。 
9:40
样例过了。但不太放心。
如果这代码能过,此题将成为最简单 T3。
9:52
手搓了一个小样例:
Input 
1
31 
Output
22888
感觉没问题。暂且认为通过。 
9:56
完了。数据造错了。算法假了。 
10:11
重构代码。这下对了。
10:21
上了个厕所,准备开 T4。预计得分 100+100+100+0=300。 
*/

/*
Maybe this problem is greedy?
Felt scared when I saw "sticks" (
There is a problem which is similar to this problem,and that problem is greedy(but that problem need to be given the largest answer).
9:40
Samples are accepted.But I'm worried about the correction of my code.
If this code can be accepted,it will be the easiet problem C.
9:52
I make a sample:
Input 
1
31 
Output
22888
I felt this code has no matter.
9:56
Oh no.My sample is incorrect.My algorithm is incorrect.
10:11
Had Written another code.Now the code is correct.
10:21
Went to the WC,and be ready to solve problem D.Expected score 100+100+100+0=300.
*/

预计得分 100+100+100+0=300

开 T4。看懂了。感觉不可写。摆了。

出考场。成功用自己的样例把同学们 hack 了。乐。ysz 有点破防。

回宾馆吃老乡鸡。睡觉。

-S

T1 水题?但是由于自己太菜/看错题目,用了 1h 才写出来。预计得分 100+0+0+0=100

T2 看懂了。第一问写得很快,但怎么写不出第二问。

到考试结束都没写完。难受。S 一轮游了。

同学们都骗了分。我没时间骗分。

不知道怎么表达当时的感受。

预计得分 100+?+0+0=100+?

晚上和 ysz、yxs、ymy 和老师一起吃饭。rgw 和 zzx 赶火车先走了。

回宾馆后我们四个去 yxs 房间打 abc实际是去打 generals

后来只有 ysz 在打 generals,我在原神启动,yxs 和 ymy 在打钢四。

欢乐的一晚。

Day2

测了 J T3 民间数据。怎么挂了?

完了,J 300 \rarr 260。哭死。

同学们都是 260?啊那没事了 /bx/bx

下午在车站和同学打亚诺。上车后继续一起打 generals。

然后就回家了。

Day ?

出分。

J 260,S 120。

就我这S T2 还能 20pts?强。不过蓝勾拜拜 /qq

两个只学了一年 OI 的同学 ljx 和 gly J 300。我太菜了。

(maybe) AFO 一年,高一再战 CSPS。