2020年の地方選挙のシミュレーションラウンド#8溶液(20/02/07)

[リンク]ゲームhttp://59.61.75.5:8018/contest/218

そしてA.

[タイトル]イタリア

ツリーの$ $ A n点は、それぞれ、$ N-1 $縁を有し、$(U_1、V_1)、(U_2、V_2)、\ cdots、(U_ {N-1}、V_ {N-1} )$まず、各点のU $ $は、$ S_U = \ {U \} $が設定されています。

そこ$ M $操作、$ I $ $所与$ P_I、$ S_ {U_ {P_I}} $と$ S_ {V_ {P_I}}の動作それらに割り当て$と。

すべての操作が完了した後、すべての$ I \にあるため、[1、n]は$、$ I $の要求は、セットの数が含まれています。

データ範囲[] $ N、M \ル5 \回10 ^ 5 $。

[説明]

それがカウントされる際に各ポイントを考えてみましょう。明らかに、各ブロックは、その通信動作に影響を与え備えます。逆順処理における操作、統計]をクリックします。

効率$ O(M + N)$。期待はスコア:100。

[コード]

1の#include <ビット/ STDC ++ H>
 2  整数 N、M、U [ 500010 ]、V [ 500010 ]、[S 500010 ]、ヴァル[ 500010 ]、Q [ 500010を]。
3  )(主符号付き
 4  {
 5      のscanfを(" %D%D "、&​​N、&M)。
6      INT iは= 1 ; iは<N; I ++)scanf関数は(" %D%D "、およびU [i]は、&V [I])。
7      のためのINT iが= 1 ; iが<= N; iが++)S [I] = 1 8     以下のためにINT iが= 1 ; I <= M; I ++)のscanf(" %dの"、&Q [I])。
9      INT X = Q [i]は、S [U [X] = S [V [X] = S [U [X] + S [V; I i-- I = M、X) [X]] -ヴァル[X]、ヴァル[X] = S [U [X]]。
10      のためにINT iは= 1 ; iが<= N; I ++)のprintf(" %D%C "、S [i]は、" \ n " [I == N])。
11      リターン 0 ;
12 }
DTOJ4710

C.管理

[タイトル]イタリア

物品の$ $ N行目は、最初の記事は、正確$ K $の空でない部分にそれを破る、Iを$ a_iをの$ $正しい値を$、および同じセグメント内a_iを$ $ $同じタプル(Iそう、j)はできるだけわずか$。すなわち、それは価値$ $ $ I $ J物品の右セグメントに想定されるが$ C(i、j)は$番目を有し、最小限ください$ \和\ limits_ ^ K \和\ limits_ {{iが= 1} J} \ binom {C(i、j)は} {2} $。

数据范围】【$ 2 \ N \ 10 ^ 5 \ 1 \とK \と\分\ {N、20 \}、\ 1 \及びa_iを\ N $。

[説明]

$ DP $を考えてみましょう。提供$ fは、[I] [J] $ $ I $が正面を表すセグメント$ K $の最小数に分割されます。あり:[I] [J] = \分\ limits_ {0 \当量のK <I}(F [k]は[J-1] + W(K + 1、i))を$ F $は。

$ K $、小さいので、$ K $のために、それはすなわち、$ J $の各層の転送、スライスには明らかであろう。

プレイテーブルには、意思決定の単調を有することが判明しました。私たちは、分割統治の単調さと意思決定プロセスを検討し、ポインタまたは単調キューで特定の状況を維持することはできません。

(L、R)$ W $を計算する方法を考えてみましょう。$(L-1、R)$位置等W $にプッシュ(L、R)W $から明らかになるであろう。そのため、同様のMOのチームアプローチを維持します。

効率O(NK \ログn)を$ $。期待はスコア:100。

1の#include <ビット/ STDC ++ H>
 2  CONST  長い  INF = 1LL << 60 3  INT N、K、CNT [ 100010 ]、[ 100010 ]、PL、PR。
4  長い 長い F [ 100010 ] [ 22 ]、RES。
5インラインボイドイン(int型のx、int型 V){RES- = 1LL * CNT [X] *(CNT [X] - 1)/ 2 ; CNT [X] + = V; RES + = 1LL * CNT [X] * (CNT [X] - 1)/ 2 }
 6インラインボイド(解決int型 L、INTの R、INT L、INT R、int型K)
 7  {
 8      INT半ば=(L + R)>> 1 9      一方(PL> L + 1)イン([ - PL]、1 )。
10      一方(PR <MID)イン([++ PR]、1 )。
11      一方(PL <L + 1)イン([PL ++] - 1 )。
12      一方(PR> MID)イン([PR - ]、 - 1 )。
13      INT P = L。長い 長い ANS = [L] F [K- 1 ] + RES。
14      一方(PL <=ミッドおよびPL <= R + 1 15      {
 16          であれば(F [PL- 1 ] [K- 1 ] + RES <= ANS)ANS = F [PL- 1 ] [K- 1 ] + RES、P = PL- 1 17          イン([PL ++] - 1 )。
18      }
 19      F [中間] [K] = ANS。
20      であれば(L <=半ば1(L、ミッド解決)1 、L、P、K)。
21      であれば(MID + 1 <= r)と(MID +解決1 、R、P、R、k)を、
22  }
 23 署名されたmain()の
 24  {
 25      のscanf(" %D%D "、&​​N&K)。
26      のためにINT iは= 1 ; iが<= N; I ++)のscanf(" %dの"、および[I])。
27      のためにINT iは= 0 ; iが<= N; I ++)のためのINT J = 0 ; J <= K; J ++)Fを[I] [J] = INF。
28      F [ 0 ] [ 0 ] = 0 ;
29      のためのint型 J = 1; J <= K; J ++ 30      {
 31の          RES = 0 ; PL = 1 ; PR = N。
32          のためにINT iは= 1 ; iが<= N; I ++)CNT [I] = 0 ;
33          のためにINT iは= 1 ; I <= N; I ++)イン([I]、1 );
図34は、          (解決1、nは、0、N- 1 、j)を、
35      }
 36      リターンのprintf(!" %のLLD \ n " 、F [N] [K])。
37 }
DTOJ4718

おすすめ

転載: www.cnblogs.com/RenSheYu/p/12272749.html