oj注意事项
1.对于大部分OJ,没有必要全部读取完,存完,然后再计算。可以直接在读取的时候直接进行计算,这样可以简省运算空间。
2.使用 ios::sync_with_stdio(false);加速数据的读取,测试时该速度比scanf和printf要快。
3.注意:
C++中,cin和cout要与stdio同步,中间会有一个缓冲,所以导致cin,cout语句输入输出缓慢,这时就可以用这个语句,取消cin,cout与stdio的同步,效率基本与scanf和printf一致。然后就可放心的使用cin,cout了。(不过实际上使用了using namespace std;之后就可以直接打ios::sync_with_stdio(false);了)。
4.cin.tie(NULL);cout.tie(NULL);
在默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。
代码如下:
5.注意int的范围为-2147483648 ~ 2147483647,大于约为2*10的9次幂左右,注意好边界。
6.尽量使用++i代替i++
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL);
cout.tie(NUll); int n,a,b; cin>>n>>a>>b; long long int sum=0; int num1,num2; unordered_map<int,int>A; for(int i=0;i<a;i++) { cin>>num1>>num2; A[num1] =num2; } for(int i=0;i<b;i++) { cin>>num1>>num2; sum += num2 *A[num1]; } cout<<sum; return 0; }