zoukankan      html  css  js  c++  java
  • 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
    ");
    		else printf("No
    ");
    	}
    	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。。。

    (未完待续)

  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/dong-ji-yuan/p/11275782.html
Copyright © 2011-2022 走看看