Codeforces Round 888 (Div. 3)补题

文章介绍了五道Codeforces编程题目的解题思路,包括自动扶梯上的交谈机会、奇偶性排序、路径规划、丢失前缀和的排列判断、药水价格计算和火星数字问题。展示了C++代码实现和问题分析的关键点。

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

Escalator Conversations(Problem - A - Codeforces

题目大意:有一个自动扶梯,共有m级台阶,每级台阶高为k,上面有n个人,我们规定如果两人站在不同的台阶上,高度恰好相同时可以进行交谈,小f身高为h,它想知道它可以和多少人进行交谈。

思路:这题没什么难度,就是小f与其他人的高度差要恰好是k的倍数,同时有两个限定条件,两人不能站在同一级台阶上,则不能与高度相同的人进行交谈,另外台阶总共m级,到第m级时就到终点了,所以倍数需要小于m。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m,k,h,c=0;
		scanf("%d%d%d%d",&n,&m,&k,&h);
		for(int i=1;i<=n;i++)
		{
			int x;
			scanf("%d",&x);
			int d=abs(h-x);
			if(d&&d%k==0&&d/k<m) c++;
		}
		printf("%d\n",c);
	}
}

Parity Sort(Problem - B - Codeforces

题目大意:给定一个数组a[],我们每次可以选择两个元素进行交换,需要满足两个元素的奇偶性相同,问最后能否得到一个非降序数组。

思路:这道题显然就是奇数和偶数内部进行排序,我们可以先将奇数元素分别进行排序,然后按照原数组中每个数的奇偶性往里面填,最后看看我们填好的数组是否有序即可。

#include<bits/stdc++.h>
using namespace std;
int a[200010],b[200010];
vector<int>j,o;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			if(a[i]&1) j.push_back(a[i]);
			else o.push_back(a[i]);
		}
		sort(j.begin(),j.end());
		reverse(j.begin(),j.end());
		sort(o.begin(),o.end());
		reverse(o.begin(),o.end());
		for(int i=1;i<=n;i++)
		{
			if(a[i]&1) b[i]=j.back(),j.pop_back();
			else b[i]=o.back(),o.pop_back();
		}
		int c=0,flag=0;
		for(int i=1;i<=n;i++)
		{
			if(c>b[i]) 
			{
				flag=1;
				break;
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值