トピックの背景
追加した最後の自動は非常に怒ってYYY、YYY以上の学生にとって難しい。良いものをredbagた後、彼はredbagに戻って問題を戦ったが、彼は驚いた。この問題は、実際に自分自身を見つけることができませんし、私はあなたを見つけなければなりませんでした
タイトル説明
[H1] udp2:第一言語の本質ので質問、メモリ転送ゲームの終了後にすべてのC / C ++ 2.2メガバイト後に再テストするためのプログラム。【/ H1]
彼はredbagモードを見つけてみましょう
彼はまた、具体的回数は国民が半数以上登場していることと
全Nの数だけでなく、そこにあることを確認します
N <= 2000000
そして、それぞれの番号<2 ^ 31-1
入力形式
最初の行の整数n
二行目nは整数
出力フォーマット
行、公共の数
サンプル入力と出力
52 3 3 3 3
3
説明/ヒント
制限時間の1秒
スペースの制約の3.5M(間違った3.5Mじゃありません)
誰かが水を望んでいるが、私は、これは十分なスペースではありませんあなたを教えて
//は密かに言うkkksc03:あなただけの出力デジタルバー、1/2チャンスを持っています。しかし、これはより多くの音楽ゲームよりも、それはあなたが合うようにそれを価値は価値がないです。だから、正の解を考えるのがベストです。
考え
ボイヤー - ムーア多数決アルゴリズム(モル投票アルゴリズム)は、シーケンス番号(発生の一般的な数以上)のすべての要素を見つけるために、線形時定数とアルゴリズムの複雑さのレベルのスペースです。
アルゴリズムの基本的な考え方:
基本的な考え方は、配列から要素の異なるペアを見つける配列からそれを削除するには、各ラウンドの投票プロセスでは、非常に単純なモル投票方法です。このような連続もはや投票まで削除、配列が空の場合、配列の半分以上の長さを表示される任意の要素の数です。一つだけの要素がある場合、その要素は、要素をターゲットにする可能性があります。(からの抜粋https://www.jianshu.com/p/c19bb428f57a)
一方の特定の最大回数の総数の半分以上の任意の配列で
そうでない場合はゼロ、場合すべてのx及び仮定の数は、現在の要素NUMに等しいか否かを判断し、カウンタが0である場合、xは現在の要素numのモードと仮定され、アレイから選択され、カウンタの設定各要素等しい、カウンタ+ 1、そうでなければ-1カウンター。
最後のカウンタがゼロであれば、モードは存在しません。
モードは、そのタイトルを確保するために存在しなければならないので、我々は、すなわち、配列のモードを変更するには、xが最後であることを前提としていた値が専用モードにとどまる出力する必要がある最後のカウンタの値を判断するために必要とされます
同様に、あなたは数が数の3分の1以上を発生見つけるためにアレイを拡張することができます
コード
1つの#include <ビット/ STDC ++ H> 2 の#defineっ長い長い 3つ の#define ULLのunsigned long長い 4つ の#define MS(B)のmemset(A、B、はsizeof(a))は 5 CONST INT INF = 0x3f3f3f3f 。 6 CONST LL INF = 0x3f3f3f3f3f3f3f3f 。 7 のconst int型 MAXN = 2E7 + 10 。 8 のconst int型 MOD = 1E9 + 7 。 9 のconst int型 MAXM = 1E3 + 10 。 10 使って 名前空間はstdを、 11 INTメイン(int型 ARGC、チャー CONST * ARGV []) 12 { 13 IOS :: sync_with_stdio(偽)。 14 cin.tie(0 )。 15 INT N。 16 CIN >> N。 17 LLのX。 18の INTは RES = 0 。 19の LLのANS; 20は int型のI; 21 のために(i = 0 ; iがn <I ++は) 22 { 23 CIN >> X。 24 もし(!RES) 25 年=のX; 26 もし(X == 年) 27の RES ++ ; 28 もし(X =!年) 29 res-- 。 30 } 31 COUT <<年齢<< ENDL。 32 リターン 0 。 33 }