牛客春招刷题训练营 - 2025.5.29 题解

活动地址:牛客春招刷题训练营 - 编程打卡活动

Easy 小红的对称串

简要题意

确定一个串镜面翻转后是否与原串相同。注意字母翻转后可能变成自身、其它字母或没有对应字母。

Solution

如果一个串中有翻转后没有对应字母的字母,翻转后一定与原串不同。

否则将翻转后变成其它字母的字母修改成翻转后对应字母,然后整体 reverse 跟原串比较即可。

Code

void R()
{
	string s,t,tab="ilmnouvwxpqbd";
	cin>>s;
	t=s;
	for (char &c:s)
	{
		if (count(tab.begin(),tab.end(),c)==0)
		{
			cout<<"No\n";
			return;
		}
		if (c=='p')
			c='q';
		else if (c=='q')
			c='p';
		else if (c=='b')
			c='d';
		else if (c=='d')
			c='b';
	}
	reverse(t.begin(),t.end());
	cout<<(s==t?"Yes\n":"No\n");
	return;
}

Medium Y型树

简要题意

个无标号球放入 个无标号盒里,使盒子均非空,求方案数。

Solution

题目要求的其实就是分拆数

考虑 ,可以得到

,令 取偶数则有:

所以 有一个步长为 的递推,形如 ,则模 同余位置的 ,是关于 的二次多项式。

所以我们算出前 ,根据 插出对应的多项式即可。

Code

void R()
{
	constexpr int P=1e9+7;
	vector<array<i64,4>> p(18);
	p[0][0]=1;
	for (int i=1;i<18;i++)
		for (int j=1;j<4;j++)
			p[i][j]=p[i-1][j-1]+p[max(i-j,0)][j];
	
	i64 n;
	cin>>n;
	n--;
	i64 r=n%6,f0=p[r][3],f1=p[r+6][3],f2=p[r+12][3];
	i64 d=n/6%P,A=(f0+f2)/2-f1,B=f1-f0-A,C=f0;
	cout<<((A*d+B)%P*d+C)%P<<'\n';
	return;
}

Hard 【模板】二分

简要题意

给一个非降数组,每次选一个区间询问第一个大于/小于/大于等于/小于等于某个数的数。

Solution

写到这里大家应该都会二分,这题放在这里有点意义不明。

考察 lower_bound 的指针是否在首末位置即可。

Code

void R()
{
	int n,q;
	cin>>n>>q;
	vector<int> a(n);
	for (int &x:a) cin>>x;
	while (q--)
	{
		int op,l,r,x;
		cin>>op>>l>>r>>x;
		if (op==1)
		{
			auto it=lower_bound(a.begin()+l,a.begin()+r,x);
			if (it==a.begin()+r) cout<<"-1\n";
			else cout<<*it<<'\n';
		}
		else if (op==2)
		{
			auto it=upper_bound(a.begin()+l,a.begin()+r,x);
			if (it==a.begin()+r) cout<<"-1\n";
			else cout<<*it<<'\n';
		}
		else if (op==3)
		{
			auto it=lower_bound(a.begin()+l,a.begin()+r,x);
			if (it==a.begin()+l) cout<<"-1\n";
			else cout<<*prev(it)<<'\n';
		}
		else
		{
			auto it=upper_bound(a.begin()+l,a.begin()+r,x);
			if (it==a.begin()+l) cout<<"-1\n";
			else cout<<*prev(it)<<'\n';
		}
	}
	return;
}
#牛客春招刷题训练营#
全部评论

相关推荐

05-30 08:42
复旦大学 C++
🌸&nbsp;先来聊聊赴日IT从业者的收入情况吧!🌟&nbsp;根据2024年的一项调查,日本有47%的国际软件工程师的年薪在400-790万日元之间(约20-40万RMB),此外,还有约8%的人年薪超过1400万日元(约70万RMB)。🌸&nbsp;25至29岁的程序员平均年薪约为400多万日元(约20多万RMB),而55-59岁的人平均年薪约为600万日元(约30万RMB)。🔍&nbsp;由此可见,在日本做IT,收入不一定是优势。但相比我们这里的就业环境,如果想要避免35岁中年危机,或者追求稳定、自由的生活,那确实可以考虑。🔔&nbsp;赴日IT的优势在于:1️⃣&nbsp;门槛低对于想去日本工作和生活的小伙伴来说,赴日IT的门槛相对较低。对于没有太多技能的人来说,这是一个短期内可以入门的工作。2️⃣&nbsp;没有996虽然完全不加班是不可能的,但加班程度相对较轻。大部分企业可以做到朝九晚六,周末双休,一月一次的三连休。偶尔加班也会有加班费和调休,生活和工作更平衡。3️⃣&nbsp;没有35岁危机由于日本老龄少子化严重,劳动力短缺,IT行业35岁在日本完全属于年轻人。4️⃣&nbsp;社会环境整个社会边界感很强,大家之间不会互相打扰,不喜欢麻烦别人,没有一些人情世故的烦恼。5️⃣&nbsp;医疗和住房在日本看病,个人承担30%,ZF承担70%。无论是当地人还是在日本读书、工作的人都可以享受医疗保障,外国工作者的子女也可以享受。🏠&nbsp;在日本买房首付只需20%,贷款利息在1%以内。日本的房子没有公摊面积,而且日本的房子是永久产权,属于私人财产。6️⃣&nbsp;教育日本的教师实行轮换制,所以教育资源分配上会更均衡。小学到高中的学费都是免费的。🌈🌈🌈ZF推出应往届生赴日IT项目报名条件:25周岁及以下本科及以上学历(应届生或往届生均可)计算机类/日语专业(有日语/IT基础不限专业)详情见主页其他笔记📙,感兴趣评论+小窗口&nbsp;日本&nbsp;&nbsp;日本工作签&nbsp;日语专业&nbsp;&nbsp;赴日工作&nbsp;&nbsp;&nbsp;本科&nbsp;&nbsp;求职&nbsp;&nbsp;工签&nbsp;&nbsp;#&nbsp;待业&nbsp;&nbsp;毕业生出路&nbsp;&nbsp;&nbsp;应届生求职&nbsp;&nbsp;毕业生就业&nbsp;&nbsp;出国工作&nbsp;待业&nbsp;高度人才永驻&nbsp;就业&nbsp;求职招聘&nbsp;&nbsp;日本就职&nbsp;出国打工&nbsp;大学生求职&nbsp;永驻&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
这个问题确实是也是一个好问题,如果我们是即将毕业的学生,并且没有工作的话,要不要走社招这个的话也是需要因岗位而考虑的。校招是想把你培养成一个公司的支柱和未来的核心。中流砥柱的那样的感觉,所以说可能会花一些时间去培养你,让你成长,而不是一上来就给你上强度。如果一上来给你上很高的强度,你直接懵逼了。那么就不太有利于长期的发展。也会让你对以后的工作充满畏难心理。而社招的话是想让你一上来就干活儿,基本上就能够承担各项的工作内容。所以说对于基础的拷问相对来说没有那么多,而是对你以往经验和能力的一个判断。并且不会着重培养你,你只是一个工具人。辨析了相关的区别以后就可以发现找工作的话还是可以以校招为主,社招为辅。校招的难度以及工作的难度以及培养的用心程度都会相对来说会高一点儿,如果是在一个规模体量相对来说比较大的公司。而社招的话,对工作经验要求高的那些岗位很有可能就不会给你机会,还有的可能虽然经验不限。但是工作强度会一上来就给你拉的很高,你去上班也是有一定的困难的。但是也要把握可能会有的机会,说不定也会遇到比较好的公司,比较好的老板知道你应届的能力和水平,然后会给你一些培养的时间。在这样一个时代,只能坚持坚持,再坚持了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务