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的大佬们。