1. 程式人生 > 其它 >202006-2 稀疏向量

202006-2 稀疏向量

技術標籤:考證

202006-2 稀疏向量

因為N太大了,所以得用map來存一下,同時可以記錄一下出現過哪些index,記錄一下,然後遍歷map,如果同一個位置,兩個向量在這裡都非0.那麼項乘加到結果上。

#include <stdio.h>
#include <iostream>
#include <queue>
#include <map>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
typedef
long long ll; void pt(){ cout<<'\n';} template<class H, class ... T> void pt(H h,T... t){ cout<<" "<<h; pt(t...);} int N,w1,w2; struct node{ ll a,b; }; const int maxn = 1e6+10; map<ll,node> mp; ll idx[maxn],tail; int main(){ cin>>N>>w1>>
w2; for(int i = 1;i<=w1;i++){ ll t,v;scanf("%lld %lld",&t,&v); mp[t].a = v; idx[++tail] = t; } for(int i = 1;i<=w2;i++){ ll t,v;scanf("%lld %lld",&t,&v); mp[t].b = v; idx[++tail] = t; } sort
(idx+1,idx+tail+1); tail = unique(idx+1,idx+tail+1) - idx-1; ll ans = 0; for(int i = 1;i<=tail;i++){ ans += mp[idx[i]].a * mp[idx[i]].b; } printf("%lld\n",ans); return 0; }