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; }

 

posted @ 2020-08-27 17:31  zmachine  阅读(254)  评论(0编辑  收藏  举报