シミュレーションテスト20190810

そして、ああ揚げ。

国家試験は発見間違った態度の問題の崩壊は直接の後、T2までのオリジナルタイトルを、時間ではない、との1H +の後、ダブルチーズ李間違った質問肛門

、a'll良い感じ吐くためにトイレに行く、そして冷やすようになりましたT1は見に戻ってくる

、その後、貪欲であることが判明。それから私は、脳内の貪欲な暴力はクリアケースではありませんと呼ばれますか?なんてこった

その後、時間の複雑さは、全体の人の後に発見し、悪くない、肛門T2に進み、暴力のコードの最後の2分の投げる

  50 + 30 + 0 = 80ptsの最終的なスコアを、 rank33

なした後、私は最初から部屋へ、と言うべきかこのような低テストの点数を持っていた、また自身が冷たい水の権利を注いだと考えられている

が、とにかく、私はオルセーはまだ原因であるように、私はちょうどああ放棄するつもりはない

  ことを。

上記。

T1、ブルー

貪欲非常にシンプルで、それぞれのカエルはバックのように、できるだけ多くの跳ね上がっ

た後、我々は、STL ::石を維持するように設定を開き、O(nlogn)のスキップされ、合計複雑さを削除することができますが、あなたが得ることができますAC

しかし、このアプローチは、実際に思考の深さは反映されません。

私たちが観察し続け、上記の貪欲な戦略に応じて、各石の転送ポイントに見つけることができるが単調である

ので、我々は、直接私が好きな単調なキューを維持していませんか?私が好きな法務チームのヘッドがいるかどうかを判断するために、各石をスキャン

キュー番号の最後の滞在が答えです
設定
単一チーム

T2、雑草

オリジナルタイトルああ。テストには何の手がかりが酔って(私はあなたごめんなさいYZH先輩)がされてありません

直接答える維持間違いなく行われていない、我々は守るためにいくつかの点を考慮して(山海景を参照してください)

設定し、カット、持っている、キーはレイヤーを削除するには、それぞれ、層の残りの部分は、答えは

、合併またはその範囲、その数分のケースについて議論する方法を検討するために

1、彼の息子を削除する権利を終えることができる彼の息子が左

  継承する権利およびキーの直接の息子を持っています、=切り取り切り取り[LS] +切り取り[RS] -has [LS];

2、右の子、全く削除操作

  直接ように組み合わさ

3は、右の子、左の子を削除していないが、完全に削除されない

  直接合成二人の息子を持っています、直接の継承は、ここで紹介し、彼の息子、トラブルの主要統計ロットを、左カット機能CAL(x、y)は、それが残りの答えのy層Xツリーのサブツリーを削除することを意味し

  、我々はキー当然、その後、CALを維持することができたと仮定する=キー[RS] + CAL(LSは 、カット[RS])

  今、明らかに私たちの優先順位は、右のサブツリー、右は次のように完成したツリーを削除するかどうかの観点から考察、CALを維持する方法を検討

  O(Nlog2N)の合計複雑

コードの表示


T3、ドリンクは、

妖精ああファック。

直接の暴力は、単一のn ^ 2が確認されていません、変更、および単一のもののほとんどO(n)の修正で見つける必要が

私たちの関係は、境界にのみ、我々を検討境界のみを修正変更されることがわかっ

への動的リストを使用して、各当事者をGeqieも、両方の回転

が、境界上の単語間の関係、どうなる問題の中間点の方向を変更する場合にのみ、我々が見つかりましたが、彼は、n ^ 2の修正方向であれば

、我々はポイントの方向が隣接する点で表すことができます方向が一意に決まる、固定小数点元トレリス線図を追加することを検討し

、中間点の方向と固定小数点によって起動することができる

単語はOを行うことができるように、(N)だけわずかに大きい定数を変化させます

#include<bits/stdc++.h>
#define ll long long
#define cri const register int
#define db double
#define re register
#define rf(x) p[x].to[(1+di[x])&3]
#define ff(x) p[x].to[di[x]]
#define bf(x) p[x].to[(2+di[x])&3]
#define lf(x) p[x].to[(3+di[x])&3]
using namespace std;
const int mx[4]={-1,0,1,0},my[4]={0,1,0,-1};
int is[2002][2002];
int cnt,top;
int iss[4010010];
int fro[2002],rig[2002],lef[2002],en[2002];
int sh[2002],xi[2002],zu[2002],yo[2002];
short di[4010010];
int a[4010010];
struct node{
    int to[4];
}p[4010010];
inline short its(cri x,cri y)
{
    for(int i=0;i<4;i++)
        if(p[x].to[i]==y)
            return i;
}
inline void get_lf(cri x,cri y)
{
    di[y]=(3+its(y,x))&3;
}
inline void get_rf(cri x,cri y)
{
    di[y]=(1+its(y,x))&3;
}
inline void get_ff(cri x,cri y)
{
    di[y]=(2+its(y,x))&3;
}
inline void get_bf(cri x,cri y)
{
    di[y]=its(y,x);
}
int main()
{
    int n,m,q,x,y,c;
    scanf("%d%d%d",&n,&m,&q);
    for(int i=0;i<=m+1;i++) is[0][i]=++cnt;
    for(int i=1;i<=n;i++)
    {
        is[i][0]=++cnt;
        for(int j=1;j<=m;j++){
            x=getchar();
            while(x<'0'||x>'9') x=getchar();
            is[i][j]=++cnt,a[cnt]=x-'0';
        }
        is[i][m+1]=++cnt;
    }
    for(int i=0;i<=m+1;i++) is[n+1][i]=++cnt;
    for(int i=0;i<=n+1;i++)
    {
        for(int j=0;j<=m+1;j++)
        {
            for(int k=0;k<4;k++)
                if(i+mx[k]>=0&&j+my[k]>=0&&i+mx[k]<=n+1&&j+my[k]<=m+1)
                    p[is[i][j]].to[k]=is[i+mx[k]][j+my[k]];
        }
    }
    while(q--)
    {
        scanf("%d%d%d",&x,&y,&c);
        int fr=is[x][0];top=0;
        for(int i=1;i<=y;i++)
            get_rf(fr,rf(fr)),fr=rf(fr);
        get_ff(fr,ff(fr)),fro[1]=ff(fr);sh[1]=fr;iss[++top]=fr;
        for(int i=2;i<=c;i++)
        {
            get_rf(fr,rf(fr));
            fr=rf(fr);
            sh[i]=fr;
            get_ff(fr,ff(fr));
            fro[i]=ff(fr);
            iss[++top]=fr;
        }
        get_rf(fr,rf(fr)),rig[1]=rf(fr);yo[1]=fr;
        for(int i=2;i<=c;i++)
        {
            get_bf(fr,bf(fr));
            fr=bf(fr);
            yo[i]=fr;
            get_rf(fr,rf(fr));
            rig[i]=rf(fr);
            iss[++top]=fr;
        }
        get_bf(fr,bf(fr)),en[1]=bf(fr);xi[1]=fr;
        for(int i=2;i<=c;i++)
        {
            get_lf(fr,lf(fr));
            fr=lf(fr);
            xi[i]=fr;
            get_bf(fr,bf(fr));
            en[i]=bf(fr);
            iss[++top]=fr;
        }
        get_lf(fr,lf(fr)),lef[1]=lf(fr);zu[1]=fr;
        for(int i=2;i<=c;i++)
        {
            get_ff(fr,ff(fr));
            fr=ff(fr);
            zu[i]=fr;
            get_lf(fr,lf(fr));
            lef[i]=lf(fr);
            iss[++top]=fr;
        }
        for(int i=1;i<=top-1;i++) (di[iss[i]]+=3)&=3;
        for(int i=1;i<=c;i++)
        {
            lf(rig[i])=sh[i];rf(sh[i])=rig[i];
            ff(en[i])=yo[i];bf(yo[i])=en[i];
            rf(lef[i])=xi[i];lf(xi[i])=lef[i];
            bf(fro[i])=zu[i];ff(zu[i])=fro[i];
        }
    }
    for(int i=1;i<=n;i++)
    {
        int fr=is[i][0];
        get_rf(fr,rf(fr));fr=rf(fr);
        putchar(a[fr]+'0'),putchar(' ');
        for(int j=2;j<=m;j++)
            get_rf(fr,rf(fr)),fr=rf(fr),putchar(a[fr]+'0'),putchar(' ');
        puts("");
    }
}
View Code

 

おすすめ

転載: www.cnblogs.com/mikufun-hzoi-cpp/p/11333091.html