下面是针对解决超时问题的一些方法:

1.使cin,cout所花时间较少

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

2.快速输入函数 -- inline int read()(输入大数据必备)

近日比赛看到题解用这个函数来进行输入数据,据说是比scanf还要快

inline int read() {
     char c = getchar(); int x = 0, f = 1;
      while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
     while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
      return x * f;
  }
  int main() {
  int n=read();//这就是输入一个int类型的数
   }

注意一个点,直接输入0的话会直接跳出循环,但0还是会被读进去。

3.有时候最有效的减时操作是换一种方法(dbq...)减少循环或者是减枝等等操作

处理超时问题的一些方法 随笔 第1张
#include<iostream>
#include<algorithm>
using namespace std;
int a[300005];
#define gc getchar()
inline int read(){
    int x=0,f=0;
    char c=gc;
    for(;c<48||c>57;c=gc)
        if(c=='-')f=1;
    for(;c>47&&c<58;c=gc)
        x=x*10+c-48;
    return f?-x:x;
}
#define io read()
int main()
{
    int n;
    n=io;
    for(int i=0;i<n;i++)
    a[i]=io;
    int ans=0;
    for (int i = 0; i < n; i++) {
        if (a[0] != a[i]) {
            ans = max(ans, i);
        }
        if (a[n - 1] != a[i]) {
            ans = max(ans, n - 1 - i);
        }
    }
    printf("%d\n",ans);
}
View Code

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄