P8799 [蓝桥杯 2022 国 B] 齿轮

P8799 蓝桥杯 2022 国 B 齿轮

分析

最右边的齿轮的转速是最左边齿轮的q倍 == 最右边的齿轮的半径是最左边齿轮的q倍

题意即为:查询数组中是否存在两个数,其中一个是另一个的q倍

题目范围:查询次数q:2*10^5,数组范围2*10^5,所以不能边输入边查询

预处理倍数数组ans\[\],查询时直接得出答案

注意:

1.遍历数组,看其 j 倍数是否存在

2.倍数为1,单独处理(在输入数组时,若存在bx>=2,即至少存在两个相同的数,说明查询倍数为1时能找到答案)

代码

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 200010;
int a[N],b[N],n,q;
bool ans[N],flag;

int main()
{
	scanf("%d %d",&n,&q);
	for(int i = 0;i < n;i ++)
	{
		int x;
		scanf("%d",&x);
		a[i] = x;
		b[x] ++;
		if(b[x] > 1) flag = true;  //单独处理倍数为1时的情况
	}
	if(flag) ans[1] = 1;
	for(int i = 1;i < N;i ++)
	{
		if(b[i])
		{
			for(int j = i * 2;j < N;j += i)
			{
				if(b[j]) ans[j / i] = 1;
			}
		}
	}
	while(q --)
	{
		int x;
		scanf("%d",&x);
		
		if(ans[x]) printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}
相关推荐
珠海西格电力3 分钟前
零碳园区的竞争力体现在哪些方面?
大数据·人工智能·算法·架构·能源
孬甭_21 分钟前
从基础到优化:深入理解插入排序与希尔排序
数据结构·算法·排序算法
好家伙VCC23 分钟前
Rust+Bioinfo:80ms极速SNP注释引擎
java·开发语言·算法·rust
啦哈拉哈24 分钟前
【Python】知识点零碎学习7
python·学习·算法
宝贝儿好26 分钟前
【NLP】第八章:项目实操案例:文本情感分析
人工智能·python·深度学习·算法·自然语言处理
如竟没有火炬38 分钟前
整数拆分——动态规划
开发语言·数据结构·python·算法·leetcode·动态规划
叫我:松哥39 分钟前
基于数据挖掘的旅游景点个性化推荐系统设计与实现,Apriori和FP-Growth算法挖掘景点之间的关联规则
人工智能·python·算法·数据挖掘·数据分析·beautifulsoup
KaMeidebaby42 分钟前
卡梅德生物技术快报|噬菌体筛选:技术实操:宽谱大肠杆菌噬菌体筛选全流程与性能验证方案
前端·人工智能·算法·数据挖掘·数据分析
Hillain1 小时前
软件设计师设计模式
java·开发语言·经验分享·笔记·算法·设计模式·软考
战族狼魂1 小时前
AI 量化交易完整学习路线(从零到实战)
人工智能·算法·chatgpt·大语言模型·ai提示词·ai工程化