[POJ2187][BZOJ1069]旋轉卡殼

來源:互聯網
上載者:User

標籤:

旋轉卡殼

  到現在依然不確定要怎麼讀...

  以最遠點對問題為例,枚舉凸包上的兩個點是最簡單的想法,時間複雜度O(n2)

  我們想象用兩條平行線卡著這個凸包,當其中一個向某個方向旋轉的時候另一個顯然也是朝同樣的方向旋轉

  所以在枚舉其中一條邊的過程中完全沒有必要重新枚舉另一條邊

  而且對於一條邊而言,凸包上的點到這條邊的距離是滿足單峰性質的

  所以線性做法就出來啦

  ↓代碼非常短很優秀~

procedure Roatating_Calipers;begin  stack[len+1]:=stack[1];j:=2;  ans:=0;  for i:=1 to len do  begin    while cross(stack[i],stack[i+1],stack[j])<cross(stack[i],stack[i+1],stack[j+1]) do j:=j mod len+1;    ans:=max(ans,max(getdis(stack[i],stack[j]),getdis(stack[i+1],stack[j+1])));  end;    end;

 

  POJ2187 最遠點對問題直接用RC

  BZOJ1069 可以枚舉一條對角線,在兩邊各找出一個點使得面積和最大,兩邊在保證在某個區間內的情況下做RC

  BZOJ1185 是一道非常好的題,但目前還沒有A掉...昨天奮戰了一個晚上但在精度問題上還是卡住了

  最小矩形根據黑書上的寫法採用最小角前進,然而黃學長的做法代碼又短又好看

  發現只要引入點積會有一些奇妙的性質

  在確定了一條邊的時候找最遠的邊直接是裸的RC

  然而怎麼找這個矩形裡最左的點和最右的點?

  結論:點積越大越右,點積越小越左。

  這個稍加證明即可。

[POJ2187][BZOJ1069]旋轉卡殼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.