w1効率分析

T1 スワップ スワップ

        制限時間を超過したものがいくつかあり、マージソートを使いたかったのですが、うまくいきませんでした。

        おそらく、w 未満になるたびに加算して、満足できる限り最後の位置から最終的に減らすことを試みることができます。 i は最初の i 項目が確定していることを意味し、飛び出た場合は i までの項目もすべて確定します。

        Sum は実際には i+1 の合計なので、b 以下になるまで減算する必要があります。i は 0 から始まるため、最終的には i+1 になる必要があります。

        それでも失敗しました。これでも制限時間を超えています。選択の並べ替えが大きすぎると疑うのは当然です。

        やはり並べ替え方法を変更する必要があります。今回は「クイックソート」を選択します。

        クイック ソート | 初心者向けチュートリアル (runoob.com)これは非常に優れた説明です。穴を掘って数字を埋める様子は非常に鮮やかです。

        1 つの数値より小さい最大値を見つけたいので、それを左側にランク付けするための基準としてのみ使用します。しかし、それに基づくと、必ずしもそれを置くための穴があるとは限りません。ピットがない場合は、ピットを作成して最後に置きます。 1 回のパスの後、左側のものはすべてこのベンチマークよりも小さくなります。しかし、等しい場合はどうなるでしょうか? ? ?等しいものは左側と右側に分配される可能性があります...いいえ!等しいものは左側にも配置する必要があります

        これは 2 つの関数で実装されています: 1 つ目はベンチマークの位置を決定するために使用されます (ベンチマークと等しいデータは左側にのみ配置されます) (つまり、最初のクイック ソート)、2 つ目の関数はベンチマークの位置を決定するために使用されます。ベンチマークの位置 ソート(再帰を使用) (ソート後、購入可能な最も高価な価格も決定されます。

        最後に、ループを使用してタイムアウトなしで左のものを 1 つずつ追加します。

        WOC .. すべては WOC です ...

T5. 諸葛ウサギが数字を当てる

        最初の反応は、毎回中央値を取得することです。y が大きい場合は左側の値を取得し、y が小さい場合は右側の値を取得します。

        範囲範囲マニフェスト範囲マニフェストマニフェストが発生する範囲が発生します

        1. 二項対立をどう説明するか? ? ——永遠にループすることができ、出力後に終了します。

        2. x>=y のとき常に 1 になる問題を解決するのは難しい - y+1 のときに x が小さいかどうかの判断を追加できます。

        21 個の無効なメモリ参照には笑ってしまいました。

        ???なぜ exit(1) がループを終了できないのですか? while(0) はループを終了できません。ループ中です

        13か6のどちらかになる状況があり、そのサイクルが継続するためです。 6=13/2 13=(6+20)/2 なので

        間違いでした。中央値を探していたことが判明しました。前回の中値、上値、下値の上限と下限の記録を残す必要があります。上限と下限はその都度更新され、最終的には完成します。

        以下の出力については心配する必要はないと言いませんでしたか?本当にちょっとしたドラマ 

        woc 予想どおり、すべては私の問題です (コードに問題があります)。出力されない原因を 1 つずつ分析する必要があります。exit が後続のすべての exit の原因になるとは考えたこともありませんでした。 出力形式が間違っています 予期しないファイルの終わり — int32 が予想されますこれは、予期せず終了したことを意味しますか?

出力される数値が上限である場合を考えてみましょう。

        私はまだ小数を使用するほうが快適だと感じています。左または右に取った場合はどう対処すればよいですか?

        おそらく、左括弧内で毎回推測が呼び出されるでしょうか?それで、それを取り上げてください。 ——まだAが7つも取れない

        推測への呼びかけを削除しました-HahahahahahahahahahahaはついにWOCを手に入れました。最後の問題は、私が何度も推測しすぎたことです。

T6 大根トリプレット

        一つ一つ丁寧にやっていきたいと思います

        最小のものを見つけることに何の意味があるのでしょうか? ?それらを比較するにはどうすればよいでしょうか? なぜ xls を呼び出す必要があるのでしょうか? ?しかし、xls を呼び出して最小値を見つけると、これがこの山 (i、j、k 以降のすべて) の最小値であることがわかります。

        狠企業。しかし、D を縮小するために自分を変えることができますか?増やすこと自体が D を増やす場合は、もう 1 つを変更できます。それ自体は増加しますが、D が小さくなる場合は、最後まで増加するか、D が大きくなるまで増加し続けます。

        現在の結論: 1. 最小値が位置する配列 a を見つけます。他の 2 つを後ろに移動しても D が増加するだけなので、a を後ろに移動することしかできず、ラウンドごとに判断する必要があります。

                          2. 1 つ戻し、それがまだ最小である場合は、引き続き戻して、D の減少を表します。最小でない場合、D は増加または減少する可能性があります。 Dが増えるとどうなるでしょうか?今後の経過状況を考慮する必要がある

        要約すると: 1. 最小のものを探し続け、それが 3 つのうちの最小でなくなるまで戻り続け、その後、別の最小のものに変更してサイクルを開始します。各配列が変更される前に D を見つけます。前のものより小さいので記録します

                   2. ラウンド内のトラバースの 1 つが終了すると、それは終了します。D が 0 の場合は、そのまま終了します。

        処理: 毎回、最小値を持つ配列のみが四捨五入され、最小値が最後の桁に達すると終了します。

        質問: 3 つのうちの最小値でなくなるまで後戻りし続けます。これを達成するにはどうすればよいですか? ! ——今回が初めてではなく、今回の変更点は前回とは異なります。

        Dとxlsの呼び出しを減らすにはどうすればよいか...それはわかるのですが、最低限の方法を知る方法がありません。配列を変更するたびにDがカウントされると思っていましたが、前回も含めて毎回xlsを使用する必要があることを実感します。

        A: ということは、貪欲さを利用する必要があるのですね...

WOC B についての私の考察は確かにあまり正しくありませんでしたが、的を射たものでした。最小の配列の添字を移動しただけで、1 つだけを走査しただけで終了しました... 

なぜこのようなことが起こっているのでしょうか? 私は明らかにローカル コンパイラの使い方が得意です...

私の考えが複雑すぎますか? 毎回最後かどうか判断する必要はないのでしょうか? 論理的に言えば、これは最適化です...

あとは毎回 D を書き留めるだけです。

わかりました、結果は返されません...

以前は何も問題なかったのに! ! ! ! !ただ結果が返ってこないだけです。

            

T7 白ウサギがニンジンを作る

        目的: できるだけ比較を少なくして最大値と最小値を取得します。

        バブル ソートを使用できるかもしれませんが、明らかに 4n 回使用されるため、機能しません。クイックソートはどうですか? ?クイックソートとバブルソートを組み合わせますか?初めてベンチマークを選択するとき、2 回目に開始と終了を選択するときも 4n 回かかります。次のようになります。(19 メッセージ) 最大合計を見つける方法比較数が最小のシーケンスの最小値 value_iteye_16311 のブログ - CSDN ブログ

        C 形式に変更したい: 表示: C 言語コンパイル エラー エラー: ファイル スコープ で可変的に変更された ‘***’

        const int maxn = 200005 が使用されているため、C 言語では const は実際の定数ではなく、その意味は読み取り専用です。 const を使用して宣言されたオブジェクトは実行時オブジェクトであり、特定の数量、配列の長さ、ケースの値、またはシチュエーションで使用される型の初期値として使用することはできません。

        解決策
        読み取り専用型 const の代わりにマクロ定義 #define を使用する

        const によって変更された型はメモリ内の領域を占有しますが、#define は領域を占有しません。#define は、コンパイル前に、コンパイルされるソース ファイルの対応する部分を文字列に置き換えるだけです。たとえば、前のコードはコンパイル前に前処理されます。

        Wocccccccccccc この質問ではすべて A を獲得しました! ! ! !誰が理解するか誰が理解するか! !

T8 はボスを探しています

        前の質問は 2n 人についてでした。状況は 2 つだけです: 大と小です。今回は n 人です。私たちが全員よりも大きいことを確認する必要がありますが、同時に全員が彼よりも小さいことも確認する必要があります。

        質問は 1 つだけです! ! !

        要約すると: 1. すべて 0 の i 番目の列を見つけます (他の人が彼より優れていない場合、彼は他の人より優れているはずです。それなら、なぜ「私はあなたより優れており、あなたは私よりも優れている」という可能性について言及する必要があります。 ?)

                2. 対角線はすべて 0 です

        目的: i 番目の列がすべて 0、i 番目の行が対角線を除いてすべて 1 である i を検索します。

        推測: 前が常に 0 で後ろ (j 番目のものと仮定して) が 1 の場合、i が j より前のものより強いことを意味するため、次回は j 番目の列から直接開始されます。j と i を比較してどちらが正しいかj 番目の列では、i は最初のラウンド i+1 です。

                現在の考え:

         初回:ワが7個、アクが10個あります。 ——斜めを横切る必要はないので斜めケースを削除(改善なし)

         2 回目: では、なぜ「私はあなたより優れており、あなたは私よりも優れている」と言うのでしょうか。条件を満たした後の行が対角線を除いてすべて 1 であるかどうかを考えてください。

        どうやら一つ壊し忘れたようです。 。 。

                3 回目: i 番目の行をすべて走査し、対角線を除いてすべて 1 であることを確認しました。しかし、変更すればするほどイライラが募るのはなぜでしょうか。 ?

        正しい修正が少なくなるのはなぜですか... 修正後に違いはありません。境界の問題かもしれません。

        この解決策は限界を超えてしまうのではないかと常に感じていたため、私はこの解決策をあきらめました。

        法二:

        1.int better(int a, int b) ボス候補を見つける

1 a は b よりも優れています b は上司ではありません
0 aはbより優れているわけではない aは上司ではない

        2. ボス候補を見つけたら、その行と列を調べます。

        -1であると合理的に疑われる-1のケースは考慮されていませんが、-1のケースはあり得ません...本当に...

        つまり、最初にボスとなる可能性のある人物を見つけてから、それを通過する必要があります。 !どれがどれで、どれがそうでないかをよりよく区別できるようになり、クラスに (番号が付けられた) 生徒がいると仮定すると、多くても 1 人 あなたがボスであれば、他の人を除外して最後の人を残すことができます。実際のところ、それはまだ要点が少し欠けています。つまり、AC を取得した後はあまり満足していません...

おすすめ

転載: blog.csdn.net/m0_62153438/article/details/126905048