[NEERC2015]Adjustment Office

题意

 [NEERC2015]Adjustment Office

题意需认真读

每次去 行/列 是动态要更新值的

.luogu标为橘题但是我还是思路有些乱

我们可以找到一个式子来求值

 $ ( n+1 ) * n/2 - l + ( n - sy ) $和 $ (1 + n ) * n/2 - r + f * ( n - sx )$

至此可以求出此列的值

所以要统计之前删去 行和列数 以及打标记

#include<bits/stdc++.h>

#define int long long
using namespace std;

int n,q;

int l;int r; 
bool x[1000005],y[1000005];
int sx,sy;
int s1,s2;

signed main()
{
    ios::sync_with_stdio(false);
    cin>>n>>q;

    for(int i=1;i<=q;i++)
    {
    char flag;
    int f;
    cin>>flag>>f;
    if(flag=='R')
    {
        if(x[f])//删过,值为0 
        cout<<0<<endl;
        else
        {
            cout<<(1+n)*n/2-l+f*(n-sy)<<endl;
            r+=f;
            x[f]=1;//删过 
            sx++;//删的行数++ 
        }
    }
    else//和上同理 
        {
            if(y[f])
                cout<<0<<endl;
            else
            {
                cout<<(1+n)*n/2-r+f*(n-sx)<<endl;
                l+=f;
                y[f]=1;
                sy++;
            }
        }    
    }
    return 0;
}

 

上一篇:Tram POJ - 1847 spfa


下一篇:HDU2899 Strange fuction(模拟退火)