80分求助!!!

P1440 求m区间内的最小值

little_QL @ 2023-07-27 19:58:32

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=2000005;
int n,m;
int a[N],q[N];
int w=1,v=0;
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) 
    {
        cin>>a[i];
    }
    cout<<"0"<<endl;
    for(int i=1;i<n;i++)
    {
        while((w<=v)&&((i-q[w])>=m)) 
        {
            w++;
        }
        while((w<=v)&&(a[q[v]]>=a[i])) 
        {
            v--;
        }
        v++;
        q[v]=i;
        cout<<a[q[w]]<<endl;
    }
    return 0;
}

by Anli_li_father @ 2023-07-27 20:15:04

主要是输入输出时长较长

优化方案:

1.加入以下代码

std::ios::sync_with_stdio(false);

此时要注意 cin 和 scanf ,cout 和 printf 不能混用

2.直接使用 scanf 和 printf 或者快读快输


by little_QL @ 2023-07-28 10:14:36

@Anli_li_father 谢谢


by little_QL @ 2023-07-28 10:16:35

@Anli_li_father 还是有两个点TLE


by gzxworld @ 2023-08-22 10:39:06

@ZLM12345

cout<<a[q[w]]<<endl

改为


cout<<a[q[w]]<<'\n'

by Code_on_Cloud @ 2024-01-01 12:05:17

@gzxworld 还真是,好神奇


|