CCF 202006-2 稀疏向量【map的使用】
一、題目
二、解析
主要用到map的構造和find方法。其中,map的構造如下:
#include <iostream>
#include <map>
using namespace std;
int n, a, b;
map<int, int> u;
map<int, int> v;
int main()
{
cin >> n >> a >> b;
for (int i = 0; i < a; i++) {
int ind, val;
cin >> ind >> val;
u[ind] = val;
}
for (int i = 0; i < b; i++) {
int ind, val;
cin >> ind >> val;
v[ind] = val;
}
cout << "Vector u:" << endl;
for (map<int, int>::iterator it = u.begin(); it != u.end(); it++)
cout << (*it).first << " " << (*it).second << endl;
cout << "Vector v:" << endl;
for (map<int, int>::iterator it = v.begin(); it != v.end(); it++)
cout << (*it).first << " " << (*it).second << endl;
return 0;
}
輸入:
10 3 4
4 5
7 -3
10 1
1 10
4 20
5 30
7 40
輸出:
Vector u:
4 5
7 -3
10 1
Vector v:
1 10
4 20
5 30
7 40
三、程式碼
#include <iostream>
#include <map>
using namespace std;
int n, a, b;
map<int, int> u;
map<int, int> v;
long long product = 0;
int main()
{
cin >> n >> a >> b;
for (int i = 0; i < a; i++) {
int ind, val;
cin >> ind >> val;
u[ind] = val;
}
for (int i = 0; i < b; i++) {
int ind, val;
cin >> ind >> val;
v[ind] = val;
}
// cout<<"Vector u:"<<endl;
// for(map<int, int>::iterator it=u.begin(); it!=u.end(); it++)
// cout<<(*it).first<<" "<<(*it).second<<endl;
//
// cout<<"Vector v:"<<endl;
// for(map<int, int>::iterator it=v.begin(); it!=v.end(); it++)
// cout<<(*it).first<<" "<<(*it).second<<endl;
for (map<int, int>::iterator itU = u.begin(); itU != u.end(); itU++) {
int ind = (*itU).first;
map<int, int>::iterator itV = v.find(ind);
if (itV != v.end())
product += (*itU).second * (*itV).second;
}
cout << product << endl;
return 0;
}
輸入:
10 3 4
4 5
7 -3
10 1
1 10
4 20
5 30
7 40
輸出:
-20
四、感想
-
第一次使用vector,但只獲得30分,後面的超時了。因為vector的查詢的時間複雜度為O(n),所以程式的時間複雜度為O(a*b)。
-
第二次使用map,但只獲得60分,後面的錯誤了;第三次將累加用的變數product由int型別換為long long型別,就通過了。因為map的查詢的時間複雜度為O(log n),所以程式的時間複雜度為O(a*log b);且|ui|、|vi|<=106,故product的型別應該為long long。
相關文章
- 202006-2 稀疏向量
- CCF CSP202006-2 稀疏向量
- 向量圖SVG的使用SVG
- Map的使用場景
- c++ 一維向量,和二維向量的基本使用C++
- vue中使用echart的mapVue
- STL的map使用和分析
- 24_map的基本使用.goGo
- jquery 中 $.map 的使用方法jQuery
- STL使用篇__map
- Vue Baidu Map使用VueAI
- CCF ISBN
- 使用BERT生成句向量
- 稀疏陣列陣列
- 稀疏矩陣矩陣
- 稀疏感知&稀疏預定義資料排程器
- ccf碰撞的小球(100分)
- 深入 Go 的 Map 使用和實現原理Go
- bing Map 在vue專案中的使用Vue
- 稀疏表示學習
- 使用Map.merge()替代ConcurrentHashMapHashMap
- Web 前端向量小圖示的使用方法Web前端
- JavaScript中的new map()和new set()使用詳細(new map()和new set()的區別)JavaScript
- 稀疏映象在OpenHarmony上的應用
- 如何使用 resnet 生成圖片向量?
- Chroma向量資料庫使用案例資料庫
- CCF NLP比賽
- 使用Map將資料變成自己想要的
- C++中map的使用詳解說明C++
- 20_稀疏陣列陣列
- 稀疏陣列、佇列陣列佇列
- 使用map:單詞計數程式
- Go語言入門系列(四)之map的使用Go
- 【譯】Object與Map的異同及使用場景Object
- AutoGPT放棄使用向量資料庫GPT資料庫
- 【scipy 基礎】--稀疏矩陣矩陣
- golang實現稀疏陣列Golang陣列
- 演算法金 | 推導式、生成器、向量化、map、filter、reduce、itertools,再見 for 迴圈演算法Filter