2019 HDOJマルチ大学研修コンテストステージ3

今日では、究極++ポット自閉症......続けます

トピックリンクします。http://acm.hdu.edu.cn/contests/contest_show.php CID = 850?


+凸包セクションDP。

B:

図トピック。

C:

点線ルール。ブログを参照します。https://www.cnblogs.com/uid001/p/11266021.html

D:

どうやら半分、最大最小を作ること題さ。

回答セットがXであるたびに、分割k個の部品が要件を満たしているかどうかを確認する方法xは?DPを考えてみましょう。

注文DP [i]は、作品に私はフロントを表す数字まであります。

DP [I] = MAX(DP [J])+ 1(和[I] -sum [J] <= X)

直接DPはO(N ^ 2)複雑さ、容認できません。あなたはバランスの取れたツリーまたはO(nlogn)まで離散重みツリーラインのメンテナンスの複雑さを維持することを検討してください。

E:

それが質問をスクリーニング簡単な式ではありません。

F:

素数の密度分布することで、暴力が直接P Qよりも小さい最大の素数を見つけることができることは明らかです。違いは非常に遠くではありません。

どのように多く、それの階乗を見つけるには?ウィルソンの定理を使用することができます。

1  / * 基本ヘッダ* / 
2の#include <ビット/ STDC ++。H>
 3  / * 定義* / 
4  の#defineっ長い長い
 5  の#define DOUダブル
 6  の#defineのPb emplace_back
 7  の#define融点make_pair
 8  の#define SOTを(A 、B)、ソート(A + 1、A + 1 + B)
 9  の#define REP1(iは、B)(iは= int型のために、私は= Bを<; ++ i)は、
 10  の#define REP0(I、Aを、B)(iは= int型のために、私は、Bを<; ++ i)は、
 11件 の#define EPS 1E-8
 12  の#define 0x3f3f3f3f int_inf
 13  の#definell_inf 0x7f7f7f7f7f7f7f7f
 14  の#define LSON(curpos << 1)
 15  の#define rson(curpos << 1 | 1)
 16  / * 名前空間* / 
17  用いて 名前空間STDを、
18  / * ヘッダの終わり* / 
19  
20  のLL MULMOD(LLのX、LLのY、LL MOD){
 21      のLL RET = 0X%= MOD。Yの%= MOD。
22      一方、(Y){
 23          であれば(Y&1)RET =(RET + X)%MOD。
24          X =(X << 1)%MOD。
25         Y >> = 1 26      }
 27      リターンRET。
28  }
 29  
30  LL qmul(LLのX、Y LL、LL P){
 31      であれば(Y!)リターン 1 32      LLのTMP = X、RET = 1 33      一方、(Y){
 34          であれば(Y&1)RET = MULMOD(RET、TMP、P)。
35          TMP = MULMOD(TMP、TMP、P)。
36          、Y = Y >> 1 37      }
 38      リターンRET。
39 }
 40  
41  INT MillerRobin(LL x)から{
 42      であれば(X <= 1 ||(X&!1))戻り 0 ;
43      であれば(x == 2リターン 1 44      REP1(I、18 ){
 45          のLL RND =ランド()%(X - 2)+ 2、K = X - 1 46          しばらく((K&!1 K >> =))1 47          LL TMP = qmul(RND、K、X)。
48         ながら(K = X! - 1つの && TMP = X! - 1つの && TMP =!1 ){
 49              TMP = MULMOD(TMP、TMP、X)。
50              K << = 1 51          }
 52          であれば((TMPの== 1 &&(K&!1))||(TMPが== X - 1 && K == X - 1)||(TMP = X - !1!&& TMP = 1) )の戻り 0 ;
53      }
 54      リターン 1 55  }
 56  
57 LLのQP(-1,11,11-のB、LL MOD){
 58      のLL RET = 1基地 = 59      一方、(B){
 60          であれば(B&1)RET = MULMOD(RET、塩基、MOD)。
61          塩基 = MULMOD(ベースベース、MOD)。
62          B >> = 1 63      }
 64      リターンRET。
65  }
 66  
67  INT メイン(){
 68      のint T。scanf関数(" %d個"、&T);
69      一方(t-- ){
 70          のLL N、currPrime。scanf関数(" %のLLD "、&N)
71          のために(LL I = N - 1 ; I> = 1 ; i-- ){
 72              であれば(MillerRobin(I)){
 73                  currPrime = I。破ります;
74              }
 75          }
 76          LL ANS = N - 1 77          のために(LL I = currPrime + 1 ; iがn <; iは++)ANS = MULMOD(ANS、QP(I、N - 2 、n)は、N)
78          のprintf(" %LLDする\ n " 、ANS)。
79      }
 80 }
コードの表示

G:

i番目の位置のために、どのように我々は、最小限の数の条件でデジタル数字を選択するための選択をすることができますか?可能な最大数を見つけることが明らかに貪欲。しかし、暴力はTLEするかどうか。

最大桁数の前にI-1から選択されたタイトル番号に変換され、[I]、セグメントツリーとの和<= mは、行うには明らかであろうようにすることができます。

別個の配列を指定し、次に、離散化アレイにセグメントツリーを構築し、線分とノードは、区間木の桁数を記録します。

O(nlogn)の時間複雑。

H:

接頭部シーケンスとXORを探しています。修正動作はポイントの同じ数に対応するXORプレフィックスクエリ問い合わせ間隔に単一の点と変更に対応しています。

エベロリムス3人のチーム。

私:

ネットワークの流れ。

J:

+ +ツリー差動鎖セグメントツリー分割。

K:

図トピック。

 

おすすめ

転載: www.cnblogs.com/JHSeng/p/11267421.html