题目描述
相关思路
非常经典的双指针解法,在归并也有体现,利用两个独立的索引可以很好的降低时间复杂度。long long 不管三七二十一全部都开开。考试嘛,刷题一定要求简便,能全局变量都全局变量
问题
题目这里是默认了index是递增的,但如果不是递增的呢?留下这个悬念之后去想下
代码
//
// Created by admin on 2020/12/8.
//
#include "iostream"
#include "cstdio"
#include "cstring"
using namespace std;
typedef long long ll ;
const ll MAXNUM =1000000;
struct vct{
ll index;
ll value;
}u[MAXNUM],v[MAXNUM];
ll n,a,b;
ll static sum =0;
//4 7 10
//1 4 5 7
void solve(){
ll i=1;
ll j=1;
while(i<=a && j<=b){
if(u[i].index==v[j].index){
sum+=u[i].value*v[j].value;
i++;
j++;
continue;
}
else if (u[i].index>v[j].index){
j++;
continue;
}
else{
i++;
continue;
}
}
}
int main(){
cin>>n>>a>>b;
for (int j=1;j<=a;j++){
cin>>u[j].index>>u[j].value;
}
for(int i=1;i<=b;i++){
cin>>v[i].index>>v[i].value;
}
solve();
cout<<sum;
return 0;
}