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。。。
(未完待续)