CSP-J&S-2019進行

中学校は昨年のOIはなく、多くの文化的なものを研究チェーンオフ、少しは十分に勇気づけ、最後の学期を指摘しておかなければと最初の毎月の試験の結果はかなり良いです。


\(日\) \(\ \ -35 \)


予選の重要性を認識して、2つのグループは、今年の予選を報告し、人々がより多くの信じられないほど、準決勝よりも、これは危険でさえ発見され、私は真剣十年にタイトルをブラッシング、予備知識を検討し始めました。

しかし、私はまだ非常に予備的な丸い皿の週は、常に心配しています。


\(日\) \(\ \ -30 \)


予選の日。

朝は、尋問室でS・グループ、添付非常に良い環境ですが、いくつかの理由で知られているサーバ・カードのために、先頭に\(20 \)分が上陸し、最終的に遅らせることができません\(20 \)分、シーンあまりにも混乱はありません。

グループJ午後、華東師範大学の診察室、退屈終了後の半分の時間では、Moの岳陽楼はスクラップ紙の上に、スクラップ紙は、有料、黙っていないと、完全な沈黙を見つけ、自分の答えをバックアップし始めました。

今年は予選の難しさは、それは非常に単純であるJとS答えを終えた後、それは瞬間を与えられたことから、Jは、出ている(100 \)\ポイントは、Sです\(94 \)いくつかの模擬試験よりもポイント(通常はS程度高くなるように\(88 \)ポイントアップおよびダウン)...浙江省でのこの結果は前と推定しました。

論文の分析は、主に、あまりにも簡単なプログラムを改善するために、と言います。

そこにあるグループJのタイトルを読んで、\(、B \)アレイを、より多くの洪水の問題があり、一般的な分割統治があることを、それぞれ他の手段が。グループJゲシュタルト最初のトラックタイトルの水問題は、再帰的な繰り返しが行われますされ、別のチャネルは、特にテンプレート基数ソートを退屈されます。

求めているSグループのタイトルを読む(\ s)は\を最長の部分文字列を削除したどのように多くが\(T \)サブシーケンス、およびDSUが、私は知らないが、とにかく、疑問が出て来たことを聞いた他のチャネルとして、この方法は、水問題であり、パスの数です。ゲシュタルトタイトルSグループは話題のビューを持って、トポロジカルソート+ PRIORITY_QUEUEに任意の割合で物事のクラスをこの位置に置くことを考えているだろう、プログラムの結果は、実際に暴力であり、もう一つはもっと面白いです、正午ブラシ羅バレーの人に聞いては予選言うときテストのような圧力DP、私はまだ、私たちがやることは試験紙ではありません検討している、とは異なる順序で唯一の2つの論文を発見し、それは次のように似た圧力+ DP =圧力DP、おかしいでしょうか?全体の水問題は、主に難易度を下げます。

全体的に、最大のゲイン既知のCINは、空の文字列を入力することはできません。

予選は問題ありませんが、その日はかなり忙しく、レースの夕方にABC遅れた\(40 \)のみだけで、最後の5つの質問ことを見つけるために、分。


\(日\) \(\ \ -15 \)


、私はコーチが年間でZhentiを行ってきたが、私はあまりにも料理だっ続いこの間AK 2014に加えて、基本的には疑問を持っていないことができ、2017と2018は規定していません。

NOIP2018は本当に数ゲームで埋め、その後、コードの比較テスト機能の軌道建設を少し難しく感じる妖精のテーマである、と今私は独立した結論を許可することはできません。幸いなことに、最後の2年間何の問題とSB SB図のトピックを検索します。最も厄介なは、華容と地主です。

私は数論や木の上に年より願っています。

(有毒な牛乳中のツリーで)


\(日\) \(\ \ -4 \)


中期には、文化的な研究が最初の脇に投げることができ、終了しました。

その後、我々はいくつかのことを行う必要があります。

  1. NOI Linuxシステム(ただし、問題はないなら、私はWindowsのを好む)をよく理解してください。

  2. 再びすべてのテンプレート(データ構造、グラフ理論、分割統治、動的プログラミング)、高精度ではなく、テストを除いて、地方の選挙を再生します。

  3. 以前のシミュレーションレース(遅すぎる推定)についての質問を補うために時間を持っている場合。

  4. 450以上の改善、AKの人気を準備し、長い時間のために休みます。

Linuxでの編集感覚は本当にあなたがZuifan括弧を補完する方法を見つけることができない、何の便利なWindowsのではありません。また、いくつかの谷に少なすぎる癌の試合(地方の選挙シミュレーションゲーム)、数年(大規模な検索を除く)タイトルの前と同じ年の一連の問題のビットを行うGYR州の妖精です。


\(日\) \(\ \ -2 \)


2日以内に、ボードの多く(STテーブル、フェンウィックツリー、ツリーライン、左翼木を再生します。木の会長、クラスカルツリーの再構築、負のリングSPFA、単調キュー、単調スタック、三分ののルール、ルーカス定理、デュティーチ画面、KMP、Manacher)は、唯一再び(Tarjanの3種類のそれを見るように二回、延長BSGS、さまざまなトライを)それを読んで最も無駄であるために時間を演奏が多いです。

通常遅すぎる書き込みにタイトル、およびいくつかのデータ構造を書き込むには、総合タイトル(ピークなど)の前に行っています。


\(日\) \(\ \ 0 \)


残りの試験最終日には、試験要件の詳細の一部を見ては、ロス・バレーとB駅を退廃しました。


\(日\) \(\ \ 1 \)


Tarjanボードと呼ばれる検査場の前に1日目は、まだ公表されたパスワードで繰り広げられています。

木を規定する最初のページ、WTFタイトル小麦粉を読んで慎重に最初のタイトルを取得するために他の人の経験によると?

洪水のタイトルを感じ、T1を見て、二つの質問を見て、書き込みに殺到しませんでしたが戻って行きます。T2は、データ構造のようなルックスを愛している、それは日常的な質問である必要があり、T3は、非日常的な質問ですが、私は来させるのに十分な時間があると考えてください。

次のT1を書く行く、物事とXORについて考え始めたが、結論を導き出すために、しかし正直な書き込み再帰的であることを誰もが存在しないされ、T2を見に通知LONGLONGませんでした。

T2は、最初に、私はサンプルの結果を見ていない、暴力を書き出すために数分を取り、そのアイデアの間違ったを発見しました。その後しばらくの間、トランスは、最初の質問を見て、目を楽しませてくれる\((1 << 64)\) そして簡単にULLをオープンしました。

同様のアイデアの彼の話題とT2は、そうすぐに、同様のアルゴリズムを実装するためのほんの少し面倒と思ったときに発見は、以前、それは配列を尋ねる倍増オフライン+数+を書くには少し時間がかかりました。最後に、すべてのサンプルが少し少ない1時間後より、時間、二つの質問基本的に安定し、渡され、T3を見て始めました。

T3はレンジ見られている\(2000 \)しばらく幸せ。欲は非常に簡単だと思うのは実際にある:小型から大型までできるだけ各番号の小さなポイントにアップし、テストが行にできるかどうか。しかし、たとえ\(Oは(N ^ 3) \) も口を胡のではなく、見ている(\当量10 \をn)が\である\(10 \)オフ書き込み、その後、正の解決策を考えるために、ポイント、私はデイジーのビューのいくつかのポイントを書くことを考えることはできません。そして、ほぼ同じ時間は、1日目はトランス状態に渡されていました。

(図の菊の結果は、後に間違いました)

100 + 100 + 35 = 235:S-1日目のスコアを所望しました


(削除しない場合はすることもできますいくつかの時間節約)を、私はdijのボードと呼ばれる前に、午後の検査PJは、最初にパスワードを取得し、後で手残基を欠失さ。

T1は、直接分を取り、半分カットオフした後、T2を見て見て、いくつかのアイデアは、の結果ではない:T2のPJそれほど難しいことができますか?そして、T3およびT4を見て、T3は何がわかっているように見えるが、それでもT2を見てください。

T2は突然見つめて2分はそれが問題sbに見て感じるために数分かかった、と彼は非常にSBああですので、あなたは、すべてのクーポンを列挙することができることを実現見ていました。

T3は、ほとんどすぐに、私は確かに右のそれを見つけ、思い付いた、と毎日が完全に独立したバックパックで行い、貪欲。

たった約後に行わT3 (\ 20)\分だけでなく、三時間は、問題を認識して2分後にパリティを見て、T4をしたいと思い、実際には、最短の奇数と偶数、次の長さを必要と非常に素晴らしいです。

シーンを奪わ脳、私は簡単な方法などの階層図/直接BFSを、期待していなかった、脳内にこれら二つのこと、後の「グラフ理論」と「パリティ」を考えるには黒のキャンパスツアー(HNOI2019にタイトルサーチと呼ばれていますタイトル)、漠然と覚えている質問は奇数側バンディングに基づいているので、この質問にも、この問題奇妙なファンタジーのリングです。

驚くべきことに、私は本当にについて押され、出て来てほしい(10 \)\奇数リングの多くが、しかし、長い長い木の非列挙側ほど最短奇数年輪の建設、その後、奇数のリングのように:結論発見の分以下の数。

それから彼は、非ツリーエッジのポイントを介してプッシュする方法を考えるようになった(1 \)\自身、その後、最短で、最初の反応は最短経路木DPは、ビットを書いて、大量のサンプルを発見し、ラインの間違ったがあるさハックは、ビット間違っがあることが判明-ソースが右にピットインスーパーに接続されているので、これは実際に奇妙なリングを求めた後に行われるように、ツリーは、必ずしも、側面を取らないとき通じ奇数リングは、最短すべてのエンドポイントの唯一のシングルソースが必要ですその上をDij(検査テストマシンプレイボードが削除書き換えていた前に)、その後、大きなサンプル後。

最後に\(1H \)あまりにもつまらないです。


問題は比較的簡単なので、途中で問題を解決するには、それについて行わ:

T1:ナンバー

私の解決策:

カウント機能のSTL-ビットセットを使用します

水問題、あなたはscanfの+%sのを読むことができます。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=12;
int n,ans;
char c[MAXN];
int main () {
    freopen("number.in","r",stdin);
    freopen("number.out","w",stdout);
    scanf("%s",c+1);
    int n=strlen(c+1);
    for (int i=1;i<=n;i++) {
        if (c[i]=='1') {ans++;}
    }
    printf("%d\n",ans);
    return 0;
}

T2:転送

私の解決策:

ツリーセット定数を用いて還元ツリー、時間の増加の複雑さ

それぞれについて\(1 \) 暴力列挙フロント\(45 \)の操作は、コストの要件を満たすために最も早く見つけるために。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=100010;
int n,f[MAXN],v[MAXN],t[MAXN],vis[MAXN],ans;
int main () {
    freopen("transfer.in","r",stdin);
    freopen("transfer.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++) {
        scanf("%d%d%d",&f[i],&v[i],&t[i]);
        if (f[i]==0) {ans+=v[i];}
        else {
            int flag=0;
            for (int j=max(1,i-46);j<=i-1;j++) {
                if (f[j]==0&&!vis[j]&&v[j]>=v[i]&&t[i]-t[j]<=45) {
                    vis[j]=1;
                    flag=1;
                    break;
                }
            }
            if (!flag) {ans+=v[i];}
        }
    }
    printf("%d\n",ans);
    return 0;
}

T3:リメンバランス

私の解決策:

彼らは来て、それから3番目の質問に売却され、同じ日に購入した後、三日目の最初の日を購入する売りに翌日売るのと同じです考えてみましょう。言い換えれば、最適な戦略があり、明日販売する今日、いくつかのものを買います。

毎日の独立だから、最初のために\(I \)の日に(\ J)は\項目、費用がかかる\(P_ {IJ} \)の価格メイク\(P _ {(I + 1)J} -p_ {IJ} \)の価格差、各製品は、無制限の数を購入することはできません、プラスコインの数はせいぜい常にある(10 ^ 4 \)\、完全にバックパック毎日。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=10010,MAXM=110;
int t,n,m,dp[MAXN],pri[MAXM][MAXM],wl[MAXM],vl[MAXM];
int main () {
    freopen("souvenir.in","r",stdin);
    freopen("souvenir.out","w",stdout);
    scanf("%d%d%d",&t,&n,&m);
    for (int i=1;i<=t;i++) {
        for (int j=1;j<=n;j++) {
            scanf("%d",&pri[i][j]);
        }
        if (i>=2) {
            memset(dp,0,sizeof(dp));
            for (int j=1;j<=n;j++) {
                wl[j]=pri[i-1][j],vl[j]=pri[i][j]-pri[i-1][j];
                for (int k=wl[j];k<=m;k++) {
                    dp[k]=max(dp[k],dp[k-wl[j]]+vl[j]);
                }
            }
            int tmp=0;
            for (int j=1;j<=m;j++) {tmp=max(tmp,dp[j]+m);}
            m=tmp;
        }
    }
    printf("%d\n",m);
    return 0;
}

T4:仕事

私の解決策:

何とは非常に異なっ他の人々オンラインソリューションと同様に...

実際には、被験者はそこから、必要とされる\(1 \)\(U \)パス、直後(L \)\縁。

考慮して存在する場合、各エッジの後に繰り返すことができる(A \)\、パスエッジ、\(A + 2K \ \( Nにおけるk \)\) パスが存在します。したがって、最初のかどうかを決定することができる(1 \)\(I \)\最短と称する\(DIS [I] \)は、もし\(DIS [U] \ GE L \) と\(DIS [Uを] \当量L \ MOD 2 \) そして、答えはイエスです。

次の検討\(DIS [U] \ NE L \ \ 2 MOD) である場合、(1 \)\パリティ状況を変更パス。すなわち、ある期間のパスで、異なるパリティにより、2つの方法がありますが、その後、2つの経路が最短奇数以外の環を介して結合し、これは実現可能であるのであれば、リング奇数一緒に入れてしまいます。

しかし奇妙なリング自体はそれほど異なる角度を考慮して、簡単な統計にではありません。まず、あなたが構築することができます\(1 \)は最短パスツリーのルートである、そしてもちろん何の木リングがない、リングは唯一の非奇数ツリー側で生成することが、私たちは次のような結論を持っています:

一つだけでは、必ずしも唯一の非年輪の奇数側によってできる、とだけ最短奇妙なリングによって変更にパリティに到達する必要があります。

持っている必要があります簡単に一つだけ奇数の環が二つの非ツリーエッジの結果である場合には、(診察室にはカードを見て気にしないだろう)矛盾によって証明するために結論は、2つの非ツリーエッジが木の反対側に形成されているリング奇妙なリング。

だから、限り、あなたは奇妙なリング、および奇数事実によってリングは、我々は任意のポイントから開始することができるように(必ずしもぐるぐるない)奇数非木のリングサイドで、最短辺を介して指定されなければならないということであるを列挙することができますよう道路。

もしアフリカ年輪の奇数側\((U、V)\) そう\(U \)最短のこの縁によって明らかに\(DIS [V] +1 \)ので、他の点からのIF \(Uは\) このエッジ、すなわち最短経路到達\(DISを(X、U) + DIS [V] +1 \) 、および多くのそのようなある\(U \) されていない最短ランので、非ツリーエッジのすべてのエンドポイントは、超右に接続されたソースの上にあるスーパーソースを構築する、\(DIS [V] +1 \ ) 側、その後することができる超ソース最短パスから走りました。

迷惑な方法...しかし、手順も書かれていたように、それは二回最短です。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=200010;
int n,m,qu,eg,eg2,x,y,hd2[MAXN],ver2[2*MAXN],nx2[2*MAXN],dis[MAXN],vis[MAXN];
int hd[MAXN],ver[4*MAXN],nx[4*MAXN],edge[4*MAXN],dis2[MAXN],vis2[MAXN];
priority_queue < pair<int,int> > q;
priority_queue < pair<int,int> > q2;
void add_edge (int x,int y,int z) {
    ver[++eg]=y;
    nx[eg]=hd[x],edge[eg]=z;
    hd[x]=eg;
    return;
}
void add_edge2 (int x,int y) {
    ver2[++eg2]=y;
    nx2[eg2]=hd2[x];
    hd2[x]=eg2;
    return;
}
int main () {
    freopen("work.in","r",stdin);
    freopen("work.out","w",stdout);
    memset(dis,0x3f,sizeof(dis));
    memset(dis2,0x3f,sizeof(dis2));
    scanf("%d%d%d",&n,&m,&qu);
    for (int i=1;i<=m;i++) {
        scanf("%d%d",&x,&y);
        add_edge2(x,y),add_edge2(y,x); 
    }
    q.push(make_pair(0,1));
    dis[1]=0;
    while (!q.empty()) {
        pair <int,int> a=q.top();
        q.pop();
        if (vis[a.second]) {continue;}
        vis[a.second]=1;
        for (int i=hd2[a.second];i;i=nx2[i]) {
            if (dis[ver2[i]]>dis[a.second]+1) {
                dis[ver2[i]]=dis[a.second]+1;
                q.push(make_pair(-dis[ver2[i]],ver2[i]));
            }
        }
    }
    for (int i=1;i<=n;i++) {
        for (int j=hd2[i];j;j=nx2[j]) {
            add_edge(i,ver2[j],1);
            if ((dis[i]&1)==(dis[ver2[j]]&1)) {
                add_edge(i,n+1,dis[ver2[j]]+1);
                add_edge(n+1,i,dis[ver2[j]]+1);
            }
        }
    }
    q2.push(make_pair(0,n+1));
    dis2[n+1]=0;
    while (!q2.empty()) {
        pair <int,int> a=q2.top();
        q2.pop();
        if (vis2[a.second]) {continue;}
        vis2[a.second]=1;
        for (int i=hd[a.second];i;i=nx[i]) {
            if (dis2[ver[i]]>dis2[a.second]+edge[i]) {
                dis2[ver[i]]=dis2[a.second]+edge[i];
                q2.push(make_pair(-dis2[ver[i]],ver[i]));
            }
        }
    }
    for (int i=1;i<=qu;i++) {
        scanf("%d%d",&x,&y);
        if (dis[x]%2==y%2) {
            if (dis[x]<=y) {printf("Yes\n");}
            else {printf("No\n");}
        } else {
            if (dis2[x]<=y) {printf("Yes\n");}
            else {printf("No\n");}
        }
    }
    return 0;
}

J望ましいスコア:100 + 100 + 100 + 100 = 400


\(日\) \(\ \ 2 \)


T1を見て抽出した後:うんT1は、この問題は、水またはヤズィードのタイトルではありませんどのように、それは確かにそれを作ることができません。

その後、T2を見て:午前中だけ1D / 1Dが設定されていないか、動的プログラミング参照するには?

T3を見て:ハッハッハ。

それから彼は、水の背中のいくつかの質問の最初の2分間に、T3を行うには半分の時間を過ごしました。T1はヤズィードを持っているので、また、正の解決策を考えました。

[はいどのような料理を知らないので、D2のカムバックを考えてはいけません。

64 + 64 + 100 = 228:S-2日目にスコアを望ま

プレーヤープログラムいくつかのウェブサイトのデータが出てきて、私はほとんど引退して​​います。

FIRE:

羅バレー:

J 400 / S 423

OI試験:

J 400 / S 363

牛オフ:

J 400 / S 378

残念ながら:T6はすべて(保険がなかった)でも、サブセクションを再生するためにわざわざ結果を考え抜か、T4は、洪水の問題のうちに行われていません。

これは今年の終わりです...まったく同じ3つのサイトのうち最初の5つの質問(338)、それは最悪のは、それが唯一のダース・ポイントを取ったということで、スコアはどこでも同じではありません、ショーの第六のタイトルです...私は本当に引退しました。

結果レアルS:\(= 363 100 + 100 + 10 + 64 + 64 + 25 \)

J真の成果:\(100 + 100 + 100 + 100 = 400 \)

OIジュニアのキャリアがそうおそらくそれは、2ヶ月後にWC、地方のチームの少しの希望を混在させることができるかもしれない(CSPは、以前始まる行で失われ、多くのポイントを失いました)。

次にやるべきこと:文化の教訓を学ぶためには、慎重に金型を用意慎重に移動するので準備を、に足を踏み入れた後、前の選挙でEFZ、OI、他の地方の扉。

おすすめ

転載: www.cnblogs.com/ix35/p/11967337.html