CSP-J 2025【蒻】

· · 生活·游记

讲在前面

坐标GD-FS,是一名SS的初一牲,本人很菜,把这篇游祭当作娱乐的就好叻

初赛

以为自己死了,真的很崩溃,J64,S59.5...哭了三次没事的最后的结局是好的就行了,过了就行了

复赛

10.31

其实忙了一天也不知道在干什么,可能在摸鱼吧,又看了一下图,线段树那些东西,其实一点规划没有,梦到啥复习啥

晚上:善良的GP9:00就给我们放走了,直接住在学校,一个人住在宿舍挺舒服的,足足睡了8h

11.1

5:50被室友的闹钟吵醒,不理解,后来有浅睡了一会,6:30起床

跟家长打电话后去吃早餐,教室食堂的东西好油,不好吃

一大早就见到了dalao们, 早上水了一下讨论区,膜拜了一下banglee,mohay,mwx等大佬

CSP-J

估分:100+100+40+25=265

实际:100+100+20+40=260

讲个笑话

8:42打完T1,发现freopen忘记怎么写,试了10+min试出来了

T1 number

思路: 很简单的一道题毕竟是签到题,只要用一个数组存储每一个数字出现的次数就可以了

简简单单10min搞定(但是被fropen搞到了20min)

Code:

#include<bits/stdc++.h>
using namespace std;
string x;
int s[10];
int main(){
    freopen("number.in","r",stdin);
    freopen("number.out","w",stdout);
    cin>>x;
    for(int i=0;i<x.size();i++)
        if('0'<=x[i]&&x[i]<='9')
            s[x[i]-'0']++;//累加
    for(int i=9;i>=0;i--)//输出
        for(int j=1;j<=s[i];j++)
            cout<<i;
    cout<<"\n";
    return 0;
}

T2 seat

思路:

读入n,m及所有成绩,成绩降序排序,找到b排名。

模拟,用一个变量记录是向上还是向下,在用两个变量i,j记录行和列

大概率是瞎了,30min才做完,调了好久

迷惑行为:

#include<bits/stdc++.h>
using namespace std;
int n,m,b,k,a[105];
int x,i,j=1;
char q='x';
bool cmp(int a,int b){
    return a>b;
}
int main(){
    freopen("seat.in","r",stdin);
    freopen("seat.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n*m;i++)
        scanf("%d",&a[i]);
    b=a[1];
    sort(a+1,a+n*m+1,cmp);
    for(int i=1;i<=n*m;i++)
        if(a[i]==b)
            k=i;
    while(x<k){
        if(q=='x'){
            if(i==n)
                j++,q='s';
            else
                i++;
        }else{
            if(i==1)
                j++,q='x';
            else
                i--;
        }
        x++;
    }
    cout<<j<<" "<<i;
    return 0;
}
//呜呜呜我好菜 
//你谷ID:1363135 
//stO CCF Orz

T3

T3我直接暴力出奇迹,最后得了20分

我真就是太菜了,明知道实则不然有异或函数都要自己手打

T3依旧迷惑

#include<bits/stdc++.h>
using namespace std;
int yihuo(int x,int y){
//手打异或(不知道异或的函数www)
    ...
    return ans;
}
...
int main(){
    freopen("xor.in","r",stdin);
    freopen("xor.out","w",stdout);
    ...
    cout<<ans;
    return 0;
}
/*不会了只能骗分
www就过了前四个样例 
求CCF给点分啊,40也好! 
*/ 

T4

斯...前面我不知道哪里用了这么多时间,开这题的时候仅剩30min左右我就直接打了个dfs就不想管他了反正我也不会做本来看数据就只有20分左右,但是最后40(诡异)

#include<bits/stdc++.h>
using namespace std;
int n,a[5005],ans,k[5005];
void dfs(int m,int sum,int xx){
    if(m>n+1)return;
    if(m>=3){
        int x[5005],kk=0,ff=1;
        memset(x,0,sizeof(x));
        for(int i=1;i<=n;i++)
            if(k[i])
                x[++kk]=a[i];
        for(int i=1;i<=kk;i++)
            if(x[i]>=sum-x[i]){
                ff=0;break;
            }
        ans+=ff;
    }
    for(int i=xx+1;i<=n;i++){
        if(!k[i]){
            k[i]=1;
            dfs(m+1,sum+a[i],i);
            k[i]=0;
        }
    }
    return ;
}
int main(){
    freopen("polygon.in","r",stdin);
    freopen("polygon.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    dfs(1,0,0);
    cout<<ans;
    return 0;
}//暴力估分24 

浅浅说一下CSP-S

一直在进行一个暴力暴力,骗分骗分。无果。

估分:25+0+0+20=45

实际:25+0+5+4=34

T1 这题好像之前碰到过类似的,但是当时是学DP的,这个数据范围很明显就过不了,我dp也忘了好多,最后深搜了。

T2不会啊啊啊,不会呜

T3不知道写了什么tang比代码骗了5分

T4暴力看数据范围不应该是20分吗(?)怎么才4分

死。

后记

没有戏剧性的超常发挥,静静的等待着,像秋叶般安静地等待春风

明年再战,并默哀AFO的大佬们。