专栏文章

CSP-J 2025【蒻】

生活·游记参与者 8已保存评论 11

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
8 条
当前快照
1 份
快照标识符
@mhz4tl5u
此快照首次捕获于
2025/11/15 01:28
3 个月前
此快照最后确认于
2025/12/02 00:16
3 个月前
查看原文
讲在前面
坐标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](https://www.luogu.com.cn/problem/P14358),发现freopen忘记怎么写,试了10+min试出来了

T1 number

思路: 很简单的一道题毕竟是签到题,只要用一个数组存储每一个数字出现的次数就可以了
简简单单10min搞定(但是被fropen搞到了20min)
Code:
CPP
#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才做完,调了好久
迷惑行为:
CPP
#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依旧迷惑
CPP
#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(诡异)
CPP
#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的大佬们。

评论

11 条评论,欢迎与作者交流。

正在加载评论...