2023河南萌新联赛第(三)场:B,D,E,H,J,K,L

文章介绍了几道编程竞赛中的题目,包括计算最小未出现整数(mex)、满足特定AND条件的整数对、检查完全平方数以及找出数组中的最大奇数。每道题目的解决方案都涉及到数组处理和简单的数学逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

B:入门mex

B-入门mex_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

 

整个数组如果没有0,那么mex就为0,选出来的mex需要满足小于mex的数都存在,那么我们排好序之后找到第一个不连续的值res,如果k<=res,就输出k,例如选3个数,必须要有0,所以012,那么mex为3,选两个数01,mex就为2,如果k>res,那么mex只能为res+1,这样才满足小于mex的数都存在,如果整个数组都可以为连续的一段,那么mex就是最大值加1。 

代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	sort(a+1,a+n+1);
	if(a[1]!=0) cout<<"0"<<endl;
	else
	{
		int ans,res=a[n];
		for(int i=2;i<=n;i++)
		{
			if(a[i]-a[i-1]>1)
			{
				res=a[i-1];
                break;
			}
		}
		if(k<=res)
		cout<<k<<endl;
		else
		{
			cout<<res+1<<endl;//整个数组整体都是连续的数字
		}
	}
	return 0;	
} 

D:AND and SUM

D-AND and SUM_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

输入n,m,满足x+y=m,我们可以想到n+(m-n)=m,所以我们令x=n,y=m-n,那么我们还需要满足x&y=n这个条件;注意当满足n+(m-n)=m时,最大就是2n=m,所以如果2n>m,那么肯定不可以。

代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
#define int long long
using namespace std;
const int N=1e5+9;
int n,m;
void solve()
{
	if(2*n>m)
	cout<<"No"<<endl;
	else
	{
		if((n&(m-n))==n)
		cout<<"Yes"<<endl;
		else
		cout<<"No"<<endl; 
	}
}
signed main()
{
	int t;
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		solve();
	}
	
	return 0; 
}

E:完全平方数

E-完全平方数_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

代码: 
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
	int n;
	cin>>n;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	    int x=sqrt(a[i]);
	    if(x*x==a[i])
	    {
	    	ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

H:x(简单版本)

H-x(简单版本)_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

sum从1开始,加上每一项的值,如果该项的值大于sum,就输出,否则一直加,最后输出sum。

 代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
#define int long long
using namespace std;
const int N=1e5+9;
int a[N],n,b[N];
void solve()
{
	int sum=1;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>sum)
		{
			cout<<sum<<endl;
			return ;
		}
		else
		sum+=a[i];
	}
	cout<<sum<<endl;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	sort(a+1,a+n+1);
	solve();
	return 0; 
}

J:找最大值

J-找最大值_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

 代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
	int n;
	cin>>n;
	int max=0;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]%2!=0)
		{
			if(a[i]>max)
			{
				max=a[i];
			}
		}
	}
	cout<<max<<endl;
	return 0;
}

K:替换大师

K-替换大师_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

  

分别记录在左括号后面出现的逗号,当遇到右括号时, 将括号内的逗号变为句号。

代码: 
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int vis[100009];
int main()
{
	string s;
	int n;
	cin>>n;
	cin>>s;
	int l,r,k,j=1;
	for(int i=0;i<n;i++)
	{
		if(s[i]=='(')
		l=i;
		else if(s[i]==','&&i>l)
		{
			a[j]=i;
			j++;
		}
		else if(s[i]==')')
		{
			r=i;
			while(j!=0)
			{
				if(a[j]>l&&a[j]<r)
				s[a[j]]='.';
				j--;
			}
			j=1;
		}
		
	}
	cout<<s<<endl;
	return 0;
}

L:泰拉瑞亚

L-泰拉瑞亚_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)

分两种情况:先看只能使用一次的飞镖并且伤害值大于等于最大的多次使用的伤害值,判断能不能每次飞镖只使用一次就可以击败,不可以的话就在看使用多次的。

使用多次的肯定选择伤害值最大的,看剩下的生命值还有多少来判断需要使用几次。 

 代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
using namespace std;
struct s
{
	int x,y;
}a[1000009];
bool cmp(s a,s b)
{
	return a.x>b.x;
}
int main()
{
	int n,h;
	cin>>n>>h;
	for(int i=0;i<n;i++)
	cin>>a[i].x>>a[i].y;
	sort(a,a+n,cmp);
	int max=a[0].x;
	long long sum=0,cnt=0;
	for(int i=0;i<n;i++)
	{
		if(a[i].y>=max)
		{
			sum+=a[i].y;
			cnt++;
			if(sum-h>=0)
			{
				cout<<cnt<<endl;
				return 0;
			}
		}	
	} 
	long long b=h-sum,ans;
	ans=cnt;
	if(b%max) ans+=b/max+1;
	else ans+=b/max;
	cout<<ans<<endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值