202006-2 稀疏向量(90分求助)

刚开始用map,60分,运行超时
用了vector,成了80分,还是运行超时
用了自定义结构体+数组,60分,不过现在是运行错误
我觉得突破口还是第三种,数组,但我找不到哪里错了
我想请大家帮我看看,第三个尤其是

文章目录

  • 60分历史
  • 80分vector
  • 60分结构体+数组
  • 90分vector

60分历史

运行超时,我还觉着挺快啊
难道是map.find()函数?

#include
#include
using namespace std;

int main(){
	int n, a, b;
	cin>>n>>a>>b;
	long long ans=0;
	map<int ,int> m;
	int x,y;
	for(int i=0;i<a;i++){
		cin>>x>>y;
		m[x]=y;
	}
	for(int i=0;i<b;i++){
		cin>>x>>y;
		if(m.find(x)==m.end()){
			continue;
		}else{
			ans+=m[x]*y;
		}
	}
	cout<<ans<<endl;
	
	return 0;
}

在这里插入图片描述

80分vector

还是超时问题
使用vector不用map
在这里插入图片描述

#include
#include
#include
using namespace std;
struct pairs{
	int index;
	int value;
	pairs(int x,int y){
		index=x;
		value=y;
	}
};
int main(){
	int n, a, b;
	cin>>n>>a>>b;
	long long ans=0;
	vector va;
	vector vb;
	int x,y;
	for(int i=0;i>x>>y;
		va.push_back(pairs(x,y));
//		cout<>x>>y;
		vb.push_back(pairs(x,y));
//		cout<a||pb>b)
			break;
		else{
			if(va[pa].index>vb[pb].index)
				pb++;
			else{
				if(va[pa].index在这里插入图片描述

另一个版本,使用数组

#include
#include
#include
using namespace std;
struct pairs{
	int index;
	int value;
	pairs(int x,int y){
		index=x;
		value=y;
	}
	pairs(){
		index=0;
		value=0;
	}
};
int main(){
	int n, a, b;
	cin>>n>>a>>b;
	long long ans=0;
	pairs lista[a+3];
	pairs listb[b+3];
	int x,y;
	for(int i=0;i>x>>y;
		lista[i]=pairs(x,y);
//		cout<>x>>y;
		listb[i]=pairs(x,y);
//		cout<listb[pb].index)
				pb++;
			else{
				if(lista[pa].index#include
#include
using namespace std;
struct pairs{
	int index;
	int value;
	pairs(int x,int y){
		index=x;
		value=y;
	}
};
int main(){
	int n, a, b;
	cin>>n>>a>>b;
	long long ans=0;
	vector va;
	vector vb;
	int x,y;
	for(int i=0;i>x>>y;
		va.push_back(pairs(x,y));
//		cout<>x>>y;
		vb.push_back(pairs(x,y));
//		cout<vb[pb].index)
				pb++;
			else{
				if(va[pa].index202006-2 稀疏向量(90分求助)_第1张图片
爷笑了

你可能感兴趣的:(c/c++)