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。。。

(未完待续)

posted @ 2019-07-31 13:41  轩辕东升  阅读(507)  评论(2编辑  收藏  举报