[1] 7.14夏のトレーニング

分治:

分割し、分割統治、分割統治を征服、分割統治法には、いくつかの小規模な問題には大きな問題であり、それらを解決し、最終的にはサブ問題を解くことによって、全体的な問題を解決します。

除算を使用し、主に二つの側面にOIでアルゴリズムを征服します:

バイナリ検索に基づいて、使用の三分の二を見つける1

2.タイトルの使用は、より細かい部分問題に分割して

私たちは、オーダーのこれらの二つの側面を説明します

ハーフ -

二部性質がある:もう一方の側が満たされない間の境界内で決定ソート範囲は、要素の境界面は、特定の特性を満たします。

そのため、以下の2点が、多くの場合、問題の種類を使用している解決するために:

1.単純なバイナリ検索

2.バイナリ回答(すなわち、特定の特性を満足する最大の価値を求めているの単調関数)

3.最も値の最も値(ハーフタイトルの最も一般的なタイプ)

ハイレベルから半分を理解します:

これは、実際にバイナリ決定境界です。

二分法は、秩序必要とサイズを注文することができ、それはまた、他の奇妙な問題であることができます。

最も値が最も値:最大最小値、最小最大=>半分=>優秀な書き込みをしたいです。

バイナリテンプレート:

私は本当に書き半分の話が好きではありません

教室によってNoip2012

ディファレンシャルを使用する接頭次いで、マーキング考え日によって再び教室の数を取得し、O(N + M)。

次に、2つの点、O(n)の合法性qwqを比較

プラスライン無知な力


 

突然、アムウェイのウェブサイト:

U 1〜範囲内NUM、番号xで割り切れること数。

V 1〜範囲内NUM、割り切れるyは数。

W 1〜NUMの範囲内において、X * yは、数で割り切れる数です。


 

Oの複雑さ(ログ] 3/2 N

EPS:

まず言う:1E-8は10 ^ -8です。

非単峰性の関数:

各ピークを切り出し、その後、最適を求めるの各部分、

限り、あなたは十分に薄く切って、そのそれぞれがピークで、それをピークカットする方法

LEN:各セグメントの長さ

ブロック -

アレイ、約√N長さのそれぞれの第1のサブブロック長nを√N。

1.シンプルなアイデア、暴力。

Lは、ここでどの一つにおいて、R見つけます

ケース1:L、同じ複雑さで、RはO(√N)を超えません

     2:L、O(2√n)以下での複合体中の隣接ブロック中のR。

     3:L、距離からのR、L、Rは、残りの中間ブロックをマーキング、ブロック計算される; O(√N)ブロックを再生するまで。

 

2.ソート神々のORZ

ブロックブロック内のデータをソートする最初のブロック、,;

クエリ:

  1. 暴力のためにO(√N)で同じトランシェに
  2. 隣接ブロックのO(2√n)
  3. 非隣接。

首先在a数组中查询左端点l所在块中,l右侧有多少满足的

同理右端点r也跑一下;

然后对于中间的块,每一个块都在b数组中跑一个二分就好了呢qwq

 

暴力加加在a上,然后再排序;其他的与1的加相同;

修改:先将l所在块和r所在块进行暴力并且在b数组中重新排序,其他中间的块打标记,当查询这个块时,不再查询x,而是查询 x-此块打的标记;

 

3.精髓:一个long long的整数最多开方6次,0开方为0,1开方为1;

先分块,对区间分√n块,每次开方时,for l~r,全部开方,当某个块只有0或1时,打个标记,就不用再开方了;

复杂度:O(6n);

记录离当前颜色最近的相同颜色的球的位置;

最后一句查询可以用2来做

修改:对每个颜色维护一个set;

把每个颜色丢进去;????

要满足于代码短,代码优秀;

搜索:

最短路=>广搜

求所有解=>深搜            干净代码+清晰思路

广搜的节点要开多一点;不要如此吝啬;

一般用于求最优解

轮次搜:

q0和q1交替搜索,然后直到交头;会减少垃圾节点;

迭代加深搜索:

搜到d层就不搜了,如果没有解,深度d++;

适合很深很宽的搜索树;

枚举完深度,选用深搜

开始连接:https://www.cnblogs.com/zhuier-xquan/p/10991869.html

当你觉得题面很复杂,数据范围又很小,考虑搜索;

莫得剪枝↑

剪枝1:现在体积超过n,无需再跑,直接return;

剪枝2:当前算的表面积比我们目前求得最优解大,return;

强夸剪枝二!

おすすめ

転載: www.cnblogs.com/zhuier-xquan/p/11184104.html