2022河南萌新联赛第(一)场

目录

E-聚会

F-买车

D-纪念品领取

E-聚会

E-聚会_2022河南萌新联赛第(一)场:河南工业大学 (nowcoder.com)

将数组元素排序之后分为三种情况:1:最小值不是1,那么未出现的最小正整数就是1;2:排序之后差值为1的,如1,2,3,4,5这样最后未出现的最小正整数就是所有数的和在加1。3:排序之后差值不为1,那么寻找第一个差值不为1中较小的数加1即为未出现的最小正整数,例如:1,3,4,5其中未出现的最小的正整数就是2。

代码:

F-买车

F-买车_2022河南萌新联赛第(一)场:河南工业大学 (nowcoder.com)

每次都到能跑的距离最长的地方买车,这样保证买的车是最少的。

代码:

#include<bits/stdc++.h>
using namespace std;
struct s
{
	int a,b,c;
}p[100009];
bool cmp(s x,s y)
{
	return x.a<y.a;
}
int main()
{
	int n,m,t;
	cin>>n>>m>>t;
	for(int i=1;i<=m;i++)
    {
    	cin>>p[i].a>>p[i].b;
    	p[i].c=p[i].a+p[i].b;//在该店买车行驶的距离
	}
	sort(p+1,p+m+1,cmp);
	int d=t,max=0,ans=0;
	for(int i=1;i<=m;i++)
	{
		if(p[i].a>d) //跑不到当前位置,那就在上一个位置买车 
		{
			d=max; 
			ans++;
		}
		if(p[i].c>max) //每次更新能跑的最远的距离 
		{
			max=p[i].c;//当前能跑的最远距离 
		}
	}
	if(d>=n) cout<<ans<<endl;
	else cout<<"-1"<<endl; 
	return 0;
}
D-纪念品领取

D-纪念品领取_2022河南萌新联赛第(一)场:河南工业大学 (nowcoder.com)

将1-n分别用进入队列中,将之后要移动的同学编号仍然插入队列后面,并且每移动一次就在其相应的数组位置加1,然后如果每个对应的数组的值为0,表示没有被抽到,那么用b数组存放,相反遇见1次就减1次,直到b数组中满足有5个元素即可,将b数组中的元素进行排序,最后输出。

 代码:

#include<bits/stdc++.h>
using namespace std;
int a[100009],b[10];
int main()
{
	int n,m;
	cin>>n>>m;
	queue<int>q;
	for(int i=1;i<=n;i++)
	{
		q.push(i);	
	} 
	for(int i=1;i<=m;i++)
	{
		int x;
		cin>>x;
		a[x]++;
		q.push(x);
	}
    int j=0;
	while(1)
	{
		
		int t=q.front();
		q.pop();
	//	cout<<t<<endl;
	    if(j>=5) 
		break; 
		
		if(!a[t])
		{
			b[j]=t;
			j++;
		//	cout<<b[j]<<' '<<j<<endl;
		}
		else
		a[t]--;
	}
	sort(b,b+5);
//	cout<<endl;
	for(int i=0;i<5;i++)
	cout<<b[i]<<" ";
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值