CCF CSP 2020年 2题稀疏向量

题意:

不难理解,简单来说就是两个向量的内积。

解析:

我甚至感觉用里面的算法inner_porduct都能来做!!(但是我没有等下试试) 反正 这道题特别坑特别坑特别坑!!!

C++ 代码:

#include 
#include 

using namespace std;

int main()
{
     
/*下面这行的这个东西特别坑没想到啊!!!
不过谁让自己死欠死欠的要用cin cout 值类的
scanf,printf 不香香吗?抽自己脑壳子!!!
*/
	ios::sync_with_stdio(false);
	int n, a, b;//还有这个n!!这个n绝对有问题
	int x, y;
	long long int out = 0;//还有输出这个long long int
	map<int, int> A;
	cin >> n >> a >> b;

	for (int i = 0; i < a; i++)
	{
     
		
		cin >> x >> y;
		A[x] = y;
	}

	for (int i = 0; i < b; i++)
	{
     
		cin >> x >> y;
		if (A[x]!= 0)
		{
     
			out += (A[x] * y);
		}
	}

	cout << out << endl;
	return 0;
}

看这心路历程,我敢说考试的时候一定就只有60分
你会不会好奇那30分的垃圾代码呢?给你看看吧哈哈哈哈他不超时谁超时的代码!(其实我写了超级多的版本哎)
CCF CSP 2020年 2题稀疏向量_第1张图片

错误的垃圾代码:

#include 
#include 
using namespace std;

int main()
{
     
	
	int n, a, b, out = 0;
	cin >> n >> a >> b;
	vector<pair<int,int> > A;
	vector<pair<int,int> > B;

	for (int i = 0; i < a; i++)
	{
     
		int x, y;
		cin >> x >> y;
		A.push_back(pair<int,int>(x,y));
	}
	for (int i = 0; i < b; i++)
	{
     
		int x, y;
		cin >> x >> y;
		B.push_back(pair<int, int>(x, y));
	}



	for (vector<pair<int, int> >::iterator itA = A.begin(); itA != A.end(); itA++)
	{
     
		for (vector<pair<int, int> >::iterator itB = B.begin(); itB != B.end(); itB++)
		{
     
			if ((*itA).first == (*itB).first)
			{
     
				out += (*itA).second * (*itB).second;
				break;
			}
		}
	}
	cout << out << endl;
	return 0}

欢迎大家交流!QQ:1364388975

你可能感兴趣的:(ccf,c++,算法)