2021CSP比赛小结


开赛

乘着车,打着盹,一路颠簸来到南京了。可惜不是来旅游的啊。毕竟这是第一次参加信息竞赛,可能也是最后一次。


题目

1.廊桥分配

说实话,我不看好我自己。鼓励什么都还是假的,我明白自己什么实力,自己应该在哪。这次没报普及大概是我一个错吧。人生总是有很多错误要经历的,也有很多后悔与失败,结果有时候总是充满戏剧性。
跳转题目
我在考场想到的是用并查集。因为我也想不到其他算法了
估分?不用了

#include<bits/stdc++.h>
using namespace std;
int n,m1,m2;
int un[100005][2];
int h[100005][2];
int sum1[100005],ans=0,sum=0;
int cnt[2]={1,1};
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	if(!isdigit(ch)){
		f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*f;
}
void add(int x,int y,int z){
	for(int j=1;j<=cnt[z];j++){
		if(un[j][z]<x){
			h[j][z]++;
			un[j][z]=y;
			return;
		}
	}
	cnt[z]++;
	un[cnt[z]][z]=y;
	h[cnt[z]][z]++;
}
int main (){
	//freopen("airport.in","r",stdin);
	//freopen("airport.out","w",stdout);
	n=read();
	m1=read();
	m2=read();
	for(int i=0;i<=100000;i++){
		h[i][0]=h[i][1]=0;
		un[i][0]=un[i][1]=0;
	}
	for(int i=1;i<=m1;i++){
		int  a,b;
		a=read();
		b=read();
		add(a,b,0);
	}
	for(int i=1;i<=m2;i++){
		int  a,b;
		a=read();
		b=read();
		add(a,b,1);
	}
	sum1[0]=0;
	for(int i=1;i<=n;i++)
		sum1[i]=sum1[i-1]+h[i][0];
	for(int i=0;i<=n;i++){
		int j=n-i;
		sum+=h[i][1];
		ans=max(ans,sum+sum1[j]);
	}
	printf("%d",ans);
	return 0;
}

样例过得去,但送到洛谷上爆零了。
后面不也baoling


2.括号序列

生活也许会充满惊喜,但更多会带来打击,当少数人站在光芒底下,又会有多少人在黑暗黯然神伤,又会有多少人为他们的成功负荆前行。没有人会甘于失败,只有放弃,释然,懊悔,与最后的逃离。
跳转题目
这道题应该是动规,但我不行啊。
只能用暴力过。

#include<bits/stdc++.h>
using namespace std;
char ch[505];
int n,k,s=0,x=0,ans=0;
void bl(int h){
	h++;
	//if(x>k)	return;
	if(ch[h]=='('){
		s++;
		x=0;
		if(h==n&&s==0)	ans++;
		else bl(h);
	}
	if(ch[h]==')'){
		s--;
		x=0;
		if(h==n&&s==0)	ans++;
		if(h<n) bl(h);
	}
	if(ch[h]=='*'){
		x++;
		if(h==n&&s==0)	ans++;
		if(h<n) bl(h);
	}
	if(ch[h]=='?'){
		if(h==n&&s==0){
			ans++;
		}
		if(h<n){
			int _x=x+1;
			s++;
			x=0;
			bl(h);
			s-=2;
			bl(h);
			x=_x;
			bl(h);
		}
	}
}
int main(){
	freopen("bracket.in","r",stdin);
	freopen("bracket.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=0;i<=n;i++)
		ch[i]=getchar();
	bl(0);
	printf("%d",ans);
	return 0;
}

暴力写的有问题,我是知道的。
爆零的话,意料之中吧。


3.回文

人生的道路总是漫长的,我们会跌倒,会哭泣,会害怕,会后悔,会畏惧前路。前路是什么,是光明?是黑暗?康庄大道?深不见底?不知道。我们并没有去经历,或者说,我们太注重前方的终点,忘记了两旁是什么光景。道路是漫长的,风景是无尽的,看看周围,放下自己的心,无论是何种结果,你都会在这条路上摘到一些美丽的花,陪着你走完一段又一段路。
跳转题目
打算使用O(n)的方式前后直接各取一遍,暴力查一遍流程。

#include<bits/stdc++.h>
using namespace std;
int a1[50001],a2[50001],b[100001];
bool vis[100001],v[100001];
int t,n;
bool dp(){
	int x=b[1],k1=1,k2=2*n,y2=a2[x];
	v[1]=1;
	v[y2]=1;
	int k3=y2-1,k4=y2+1;
	for(int i=2;i<=n;i++){
		if(b[k1]==b[k3]&&(!v[k1])&&(!v[k3])&&k1<k3){
			vis[k3]=1;
			vis[k1]=1;
			v[k1]=v[k3]=1;
			k3--;
			k1++;
		}
		else if(b[k2]==b[k3]&&(!v[k2])&&(!v[k3])&&k1<k3){
			vis[k3]=1;
			vis[k2]=0;
			v[k2]=v[k3]=1;
			k3--;
			k2--;
		}
		else if(b[k1]==b[k4]&&(!v[k1])&&(!v[k4])&&k2>k4){
			vis[k4]=0;
			vis[k1]=1;
			v[k1]=v[k4]=1;
			k4++;
			k1++;
		}
		else if(b[k2]==b[k4]&&(!v[k2])&&(!v[k4])&&k2>k4){
			vis[k4]=0;
			vis[k2]=0;
			v[k4]=v[k2]=1;
			k4++;
			k2--;
		}
		else return false;
	}
	return true;
}
int main(){
	freopen("palin.in","r",stdin);
	freopen("palin.out","w",stdout);
	scanf("%d",&t);
	for(int i=0;i<t;i++){
		memset(a1,0,sizeof(a1));
		memset(a2,0,sizeof(a2));
		memset(b,0,sizeof(b));
		memset(vis,0,sizeof(vis));
		memset(v,0,sizeof(v));
		scanf("%d",&n);
		for(int i=1;i<=2*n;i++){
			int a;
			scanf("%d",&a);
			if(a1[a]==0) a1[a]=i;
			else a2[a]=i;
			b[i]=a;
		}
		bool flag=dp();
		if(flag){
			for(int i=1;i<=2*n;i++){
				if(vis[i])	printf("L");
				else printf("R");
			}
			printf("\n");
		}
		else	printf("-1\n");
	}
	return 0;
}

出岔了。。。


4.交通规划

“我希望我的后辈们能够记住,在你踏上职业道路的这一刻开始,你的目标就只有——冠军”——RNG小虎。
跳转题目
没有做出来。


这一年经历了很多,有的人中途离开了(孙YQ),有的人初赛失败了(王DL,裔DW),2020届真正走下来的没几个,我应该没多久也要退出了,去专门上文化课。当然,这个账号我还会打开,会写些杂文(大概)。希望YZOI未来能招进更多大佬。本蒟蒻在此祝愿YZOI越办越好!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值