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

    (未完待续)

  • 相关阅读:
    JavaScript基础
    CSS基础
    HTML基础
    LeetCode OJ:Subsets II(子集II)
    LeetCode OJ:Combination Sum III(组合之和III)
    LeetCode OJ:Minimum Size Subarray Sum(最小子数组的和)
    LeetCode OJ:House Robber(住宅窃贼)
    LeetCode OJ:Minimum Path Sum(最小路径和)
    LeetCode OJ:Minimum Depth of Binary Tree(二叉树的最小深度)
    LeetCode OJ:Rotate Array(倒置数组)
  • 原文地址:https://www.cnblogs.com/dong-ji-yuan/p/11275782.html
Copyright © 2011-2022 走看看