CSP-J/S2019 游记
本 篇 博 客 已 停 止 更 新
先占个坑,防鸽
万一过不了初赛怎么办(欢迎山前刘明)
流水账太多 凑合看吧
Day -91
https://www.cnblogs.com/dong-ji-yuan/p/11365585.html
https://www.cnblogs.com/dong-ji-yuan/p/11365682.html
“***害怕了,***吓傻了,***传疯了”
暑期集训的最后一天
正当我疯狂赶暑假作业prepare to do something excited时,CCF突然搞了个大新闻:
“由于某种原因,由CCF主办的全国青少年信息学奥林匹克联赛NOIP(普及组及提高组)从2019起暂停。”http://www.noi.cn/newsview.html?id=932&hash=72F731
我*,要退役了。
Day -84
“非专业级软件能力认证”横空出世 http://www.noi.cn/newsview.html?id=938&hash=1A1F26
“不建议以功利的心态参加CSP认证”,你懂的。
啥也别说了,准备报名
Day -42
开始集训,准备CSP-J1/S1
听说BJ要全面机试,题型全为单选题,excited!
Day -30
BJ第一轮认证的考点安排出炉 上下午考点竟然相距十几km(按考号排序,本来能安排在一个地方的,结果前面有几个人乱入。。。)然而我还不是最惨的
Day -28
复习了一晚上模拟题,才发现过去一年啥都没学
Day -27
上午在八十中考S1
路上耽误了一点时间,跑到隔壁运动会了,匆匆忙忙跑进考场,已经09:26,马上就开始了
拿到密码条(监考老师水平极差,竟然给我发错了)
我*,网站登陆不上去啊(笔试大 法 好)这就是China Cheating Foundation?设想一下明年全国机试的盛况
Chrome、Firefox浏览器来回刷,09:37终于登陆进入网页,开始做题
题目难度还行,自我感觉能及格
机试延长了1个小时,最晚12:30交卷,12:00可以提前交卷离开;提交的时候又卡了好几分钟
下午在rdfz考J1,直接在图书馆阅览室里考
网不错,题很水,八九不离十
Day -22
BJ机试效率就是高,马上就出成绩了
入门组得了84分,提高组61.5分,分数不高,能过就行
算上B类名额,我们机房差不多都能过了
听说JX只要不缺考不爆零就能进第二轮?啊哈哈哈
Day -20
全机房被教练请去喝茶 还是那个永恒的主题:我太蔡了
上午颓了几分钟天文竞赛,继续回机房集训
Day -6
期中考后凉凉祭 好在CSP比NOIP晚一周 还有喘息的机会
今天体验了NOI Linux,又来了一套模拟题,*,这不应该了,KMP都不会了,CSP-S2爆零预警
Day -4
CJX、SZM、CZD、SAJ、ZGYM等若干同学今起享受停课备赛高规格待遇
Day -3
教练一番意味深长的训话。。。
Day 0
下午5时许,学校机房正式实施清场,CSP-J2/S2前最后一次训练到此结束,机房同学互相送别
我又大概看了几眼模板就准备上考场了
Day 1
上午S2 D1,早早来到考场
试题密码:Ren2Zhen0Si1Kao9?(认真思考2019)
T1,格雷码(code),大概是CCF塞分题,扫了一眼,根据直觉思维,是一道基本的找规律题目
看到数据范围,提高警惕,使用了long long,测过了“大样例”就直接过了,无奈道高一尺魔高一丈(蛤?2^64爆LL了?基本学习经验又不熟了)
#include<bits/stdc++.h>
using namespace std;
long long a[65];
int main()
{
//freopen("code.in","r",stdin);
//freopen("code.out","w",stdout);
int n;
long long k;
scanf("%d %lld",&n,&k);
long long x=2;
for(int i=1;i<=n;i++)
{
x<<=1;
if(k%x>=x/4 && k%x<x/4*3) a[i]=1;
}
for(int i=n;i>=1;i--) printf("%d",a[i]);
return 0;
}
“期望”得分:100
T2,括号树(brackets),树上的括号匹配,不会正解,只会玄学暴力
#include<bits/stdc++.h>
using namespace std;
char a[500005],b[500005];
int f[500005];
int x[500005],y[500005];
int main()
{
//freopen("brackets.in","r",stdin);
//freopen("brackets.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++) scanf("%d",&f[i]);
int res;
f[1]=0;
for(int i=1;i<=n;i++)
{
memset(b,0,sizeof(b));
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
int j=i,k=0,ans=0;
while(j)
{
b[++k]=a[j];
x[k]=x[k-1],y[k]=y[k-1];
if(a[j]==')') x[k]++;
if(a[j]=='(') y[k]++;
j=f[j];
}
for(int l=1;l<k;l++)
{
for(int r=l+1;r<=k;r++)
{
if(x[r]-x[l-1]!=y[r]-y[l-1]) continue;
bool xy=1;
for(int p=l;p<=r;p++)
{
if(x[p]-x[l-1]<y[p]-y[l-1])
{
xy=0;
break;
}
}
if(xy) ans++;
}
}
if(i==1) res=ans;
else res=res^(ans*i);
}
printf("%d",res);
return 0;
}
“期望”得分:玄学
T3,树上的数(tree),本题难度达到了NOIp/CSP史上的新高度,旷古烁今,史上首次出现黑题,干脆没写,0分滚粗
于是D1“期望”得分:100+玄学+0
下午就是S2了,目标AK
试题密码:=zhu1YI1JIAN1cha9(注意检查1119)
T1,数字游戏(number),CSP-J元年,塞分题竟然如此简单
#include<bits/stdc++.h>
using namespace std;
char a[8];
int main()
{
//freopen("number.in","r",stdin);
//freopen("number.out","w",stdout);
cin>>a;
int s=0;
for(int i=0;i<=7;i++)
{
if(a[i]=='1') s++;
}
printf("%d",s);
return 0;
}
“期望”得分:100
T2,公交换乘(transfer),不假思索地进行大模拟
#include<bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];
bool f[100005];
int main()
{
//freopen("transfer.in","r",stdin);
//freopen("transfer.out","w",stdout);
int n;
scanf("%d",&n);
int ans=0;
for(int i=1;i<=n;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]),ans+=b[i];
int t=1;
for(int i=1;i<=n;i++)
{
if(a[i]==1)
{
int x=-1;
for(int j=i-1;j>=t;j--)
{
if(c[i]-c[j]>45)
{
t=j;break;
}
if(a[j]==0&&b[i]<=b[j]&&!f[j]) x=j;
}
if(x!=-1) f[x]=1,ans-=b[i];
}
}
printf("%d",ans);
return 0;
}
“期望”得分:100
T3,纪念品(souvenir),据说是个背包。我基本经验又不熟了。我不应该了。
#include<bits/stdc++.h>
#define INF 214748364
using namespace std;
int a[105][105];
int main()
{
//freopen("souvenir.in","r",stdin);
//freopen("souvenir.out","w",stdout);
int t,n,m;
scanf("%d%d%d",&t,&n,&m);
a[0][1]=INF;
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
}
if(t==1)
{
printf("%d",m);
return 0;
}
int k;
for(int i=1;i<=t;i++)
{
if(a[i][1]<=a[i-1][1]&&a[i][1]<a[i+1][1])
{
k=m/a[i][1];m%=a[i][1];
}
if(a[i][1]>a[i-1][1]&&a[i][1]>=a[i+1][1])
{
m+=k*a[i][1];k=0;
}
}
printf("%d",m);
return 0;
}
“期望”得分:25
T4,加工零件(work),我没了,暴力出不了奇迹,今年题这么水,想必会有成百上千的OIer AK CSP-J2,我1=估计没戏了(退役预警
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int a[1005][1005];
int b[1005],c[1005];
bool f[1005][1005];
int maxn=0;
void dfs(int x,int y)
{
if(y>maxn) return;
f[x][y]=1;
for(int i=1;i<=n;i++)
{
if(a[x][i]) dfs(i,y+1);
}
}
int main()
{
//freopen("work.in","r",stdin);
//freopen("work.out","w",stdout);
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
a[x][y]=a[y][x]=1;
}
for(int i=1;i<=q;i++)
{
scanf("%d%d",&b[i],&c[i]);
maxn=max(maxn,c[i]);
}
dfs(1,0);
for(int i=1;i<=q;i++)
{
if(f[b[i]][c[i]]) printf("Yes\n");
else printf("No\n");
}
return 0;
}
“期望”得分:40
CSP-J2“期望”得分:100+100+25+40=265
Day 2
赛前的小插曲,由于身份证找不到了,差点因此退役
今天竟然有同学没来?彪悍啊
试题密码:@zhuajin1SHIJIAN7(抓紧时间17)
T1,Emiya 家今天的饭(meal),原本按照三维dp去做,走上了光明大道,结果。。。没推出来,“期望”能获得4分的好 成 绩
#include<bits/stdc++.h>
using namespace std;
int a[105][2005];
int main()
{
//freopen("meal.in","r",stdin);
//freopen("meal.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) scanf("%d",&a[i][j]);
}
int ans=0;
if(n==2&&m==2)
{
if(a[1][2]&&a[2][1]) ans++;
if(a[1][1]&&a[2][2]) ans++;
printf("%d",ans);
}
else printf("3");
return 0;
}
T2,划分(partition),基本算是轻松搞出了O(n^2)的dp,再进一步很难
#include<bits/stdc++.h>
using namespace std;
long long a[500005],s[500005],f[500005];
int l[500005];
int main()
{
//freopen("partition.in","r",stdin);
//freopen("partition.out","w",stdout);
memset(f,127,sizeof(f));
f[0]=0;
int n,t;
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),s[i]=s[i-1]+a[i];
f[1]=a[1]*a[1];
for(int i=1;i<=n;i++)
{
for(int j=0;j<i;j++)
{
if(f[j]+(s[i]-s[j])*(s[i]-s[j])<f[i]&&s[i]-s[j]>=s[j]-s[l[j]])
{
f[i]=f[j]+(s[i]-s[j])*(s[i]-s[j]);
l[i]=j;
}
}
}
printf("%lld",f[n]);
return 0;
}
“期望”得分:64
T3,树的重心(centroid),不会
“期望”得分:0
D2的期望得分:4+64+0=68
考完回去赶紧肝作业了,暂时忘掉即将退役的痛苦
Day 4
BJ公示程序了,于是放到luogu上,用民间数据自测一下
先说结果:
CSP-S2
D1 T1 75?
D1 T2 30
D1 T3 0
D2 T1 4
D2 T2 64
D2 T3 0
总分:75+30+0+4+64+0=173(我太蔡了qwq要被开除社籍了
CSP-J2
T1 100
T2 100
T3 25
T4 40
总分:100+100+25+40=265(一分不差 是不是有点蔡了
非 标 准 结 局
D1T1竟然获得了75分的好成绩?问题是,n>=63是就会RE。。。
(未完待续)

浙公网安备 33010602011771号