- 题目来源
- 思路
- 代码
- 注意点
http://118.190.20.162/view.page?gpid=T104
思路本题难点主要在于如何找到下标相同的值。通过读题可以知道题目给的数据就是下标从小到大按递增顺序。 所以我们只需要设置两个下标分别从0开始, 直到u、v的大小-1,遍历u、v数据的下标。 遇到下标相同的便相乘与记录。
代码#include#include #include using namespace std; struct Node { int index; int value; }; int main() { //ifstream cin("in.txt"); int N, A, B; cin>>N>>A>>B; Node u[A], v[B]; for (int i = 0; i < A; ++i) { int index, value; cin>>index>>value; u[i] = {index, value}; } for (int i = 0; i < B; ++i) { int index, value; cin>>index>>value; v[i] = {index, value}; } long long ans = 0; int iu = 0, iv = 0; while (iu < A && iv < B) { if (u[iu].index == v[iv].index) { ans += u[iu].value * v[iv].value; ++iu; ++iv; } else if (u[iu].index < v[iv].index ) { ++iu; } else { ++iv; } } cout< 注意点 自己测试代码时用ifstream, 但提交的时候一定要记得注释掉这句话。 不然直接就是错误、0分、又难找出原因。



