对本题数据的疑惑
查看原帖
对本题数据的疑惑
396994
Winston12321_楼主2022/1/29 20:14

我考场代码是 修改O(1) 查询O(n),只有76分 某份题解以 修改O(n)(准确来说O(3n)) 查询O(1),拿到了AC
那么1、2操作数量难道失衡的那么严重?

本人代码:

#include <iostream>
using namespace std;
int n,q,a[8010],k,x,v,ans;
int read()
{
    int s = 0;
    char ch = getchar();
    while(!isdigit(ch)) ch = getchar();
    while(isdigit(ch)) {
        s = s * 10 + ch - '0';
        ch = getchar();
    }
    return s;
}
void write(int x)
{
    if(x > 9) write(x/10);
    putchar(x % 10 + '0');
    return;
}
int main()
{
    n=read();
    q=read();
    for(int i=1;i<=n;i++) a[i]=read();
    for(int i=1;i<=q;i++)
    {
        k=read();
        if(k==2)
        {
            x=read();
            ans=1;
            for(int i=1;i<x;i++)
            	if(a[i]<=a[x])
            		ans++;
            for(int i=x+1;i<=n;i++)
            	if(a[i]<a[x])
            		ans++;
            write(ans);
            putchar('\n');
        }
        else
        {
            x=read();
            v=read();
            a[x]=v;
        }
    }
    return 0;
}
2022/1/29 20:14
加载中...