暴力100分?O(n^2+nq)的做法
查看原帖
暴力100分?O(n^2+nq)的做法
481851
Withers楼主2021/10/24 13:30
#include<bits/stdc++.h>
using namespace std;
int a[100010],b[100010];
int main()
{
    int n,q;
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        {
            if(a[i]==a[j]) b[i]++;
        }
    }
    while(q--)
    {
        int x,y,z;
        scanf("%d",&x);
        if(x==1)
        {
            scanf("%d%d",&y,&z);
            b[y]=0;
            for(int i=y+1;i<=n;i++)
            {
                if(a[i]==a[y]) b[i]--;
            }
            for(int i=y+1;i<=n;i++)
            {
                if(a[i]==z) b[i]++;
            }
            a[y]=z;
            for(int i=1;i<=y;i++)
            {
                if(a[i]==z) b[y]++;
            }
            //cout<<b[3]<<endl<<a[2]<<endl<<a[3]<<endl;
        }
        else
        {
            scanf("%d",&y);
            int sum=0;
            for(int i=1;i<=n;i++)
            {
                if(a[y]>a[i]) sum++;
            }
            printf("%d\n",sum+b[y]);
        }
    }
}

是不是应该加强一下了(doge

2021/10/24 13:30
加载中...