专栏文章

题解:AT_abc431_c [ABC431C] Robot Factory

AT_abc431_c题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min7rxgy
此快照首次捕获于
2025/12/01 21:57
3 个月前
此快照最后确认于
2025/12/01 21:57
3 个月前
查看原文
题意概述: 每个机器人由一个头部零件和一个身体零件组成,如果头部的重量大于身体的重量,则机器人会摔倒。现有 NN 个头部零件和 MM 个身体零件,并给定长度为 NN 的数组 HH 和长度为 MM 的数组 BB 表示其重量。求是否能组成 KK 个不摔倒的机器人。

Solution

贪心思想,读入后对两个数组进行排序,始终用最轻的头对最轻的身体。用 ansans 变量记录配对成功的机器人数量,匹配结束后与 KK 进行比较,输出答案。
具体解释见代码。
CPP
#include<bits/stdc++.h>
using namespace std;

const int maxn=200005;
int h[maxn],b[maxn];

int main(){
	int n,m,k;
	cin>>n>>m>>k;
	
	for(int i=1;i<=n;i++) cin>>h[i];
	for(int i=1;i<=m;i++) cin>>b[i];//读入
	
	sort(h+1,h+n+1);
	sort(b+1,b+m+1);//排序
	
	int op=1,ans=0;//op表示身体零件使用到的位置
	
	for(int i=1;i<=n;i++){//头部用完则结束匹配
		while(h[i]>b[op] && op<=m) op++;
		if(op==m+1) break;//身体用完则结束匹配
		else op++,ans++;
	}
	
	if(ans>=k) cout<<"Yes";
	else cout<<"No";//判断并输出
	
	return 0;
}

//Terabyte's code.

评论

0 条评论,欢迎与作者交流。

正在加载评论...