問題模型:空間裡有n個點,任意三點不共線。每兩個點之間都用紅色或者黑色線段鏈結。如果乙個三角形的三條邊同色,責成這個三角形是單色三角形。對於給定的紅色線段列表,找出單色三角形的個數。
分析:如果直接找需要列舉所有的三個點的組合,有c(n,3)種組合,當n比較大的時候,需要列舉的組合很多,複雜度為o(n3);但是在遍歷每個點的時候都可以列舉顏色不同的兩條邊。則每個點上不同的顏色的三角形有r*b,r為紅色邊的個數,b為黑色邊的個數。所有點上的不同顏色邊組之和為q,則總共有c(n,3)-q/2(容斥)種相同顏色的邊。時間複雜度變為了o(n)
對於n點染m色能夠出現同色三角形的問題:
可知:3點染1色可出現同色三角形
r1 = 3
6點染2色可出現同色三角形
r2 = 6
17點染3色可出現同色三角形
r3 = 17
...................
可知:r
n= n*(r
n-1- 1)+2;滿足次關係式時可出現同色三角形,其中r
n為點的個數,n個顏色種數
POI1997 單色三角形
solution 這題可以暴力,真的,第一遍抱著試試的心理用暴力過了,資料太水,不到立方的效率竟然過了。正解容斥原理 來自大佬 為了解決這道題目,我們需要有乙個轉換的思想。因為三角形總數,是等於單色三角形的數量加上不單色三角形的數量 好拗口 而三角形的總數等於c n,3 因為任意三個點都可以連成乙個...
三角形問題
問題及 檔名稱 main.cpp 作 者 李磊濤 版 本 號 v1.0 問題描述 輸出三角形的周長和面積。輸入描述 無。程式輸出 輸出三角形的周長和面積。include includeusing namespace std class void setabc double x,double y,do...
數字三角形問題
數字三角形問題 標籤 動態規劃 雜談分類 演算法設計 34 5 11 9 8 15 21 13 4 這是乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 200 三角形中的數字為整數0,1,99 輸入格式 第...