专栏文章
U368054题解
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mioigpsr
- 此快照首次捕获于
- 2025/12/02 19:44 3 个月前
- 此快照最后确认于
- 2025/12/02 19:44 3 个月前
题意概述:有一个 个数和一个 个数的序列 ,,询问存不存在 ,。
针对 的数据:。
暴力():
一看到 和 ,想到 的暴力算法,枚举每个 和 ,判断 是否等于 。
正解():
看到 和 ,想到 的算法。枚举对象太多超时了怎么办?减少枚举对象。只枚举 ,询问 是否存在在 序列中。这个可以用 set 处理,时间复杂度是 的。
当然,你也可以使用 map,时间复杂度也是 。
目前暂时没数据,预计 8/10 就有了。
Code(不要抄代码):
CPP#include<bits/stdc++.h>
using namespace std;
const int N=500009;
set<int> s;
int a[N],b[N];
int main() {
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
cin>>b[i],s.insert(b[i]);
for(int i=1;i<=n;i++) {
if(k%a[i]!=0) continue;
int x=k/a[i];
if(s.find(x)!=s.end()) {
cout<<i<<" "<<*s.find(x);
return 0;
}
}
cout<<-1<<endl;
return 0;
}
时间复杂度 ,足够通过本题。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...