題意:給定乙個不小於3的正整數n,從1到n中的數中選出三個數構成三角形,求這樣的三角形的種類。3,4,5和3,5,4為同一三角形。
分析:該題的資料很大,顯然不能用普通的模擬的方法,肯定會超時。但是可以打表找出規律,見下圖:
通過打表可以發現dp[4]-dp[3]=1*1
dp[5]-dp[4]=1*2
dp[6]-dp[5]=2*2
dp[7]-dp[6]=2*3 ……據此區分奇偶數即可得出dp方程,i為偶數時,dp[i]=dp[i-1]+(i-2)/2*(i-2)/2; i為奇數時,dp[i]=dp[i-1]+(i-3)/2*((i-3)/2+1)。見ac**:
#include#includeconst int maxn=1000005;
long long dp[maxn];
int main()
}
該題在一開始做題時,沒有使用dp陣列而是選擇了根據n推出了乙個具體的數學公式,結果雖然正確,但是在提交時tle,想來原因是時間卡得很緊,每次都大數計算的話會很好時間,應該事先用dp陣列執行好儲存結果後再查詢,這樣可以大大節省時間。遇到這種型別題目應該盡可能地向dp方程和dp陣列上推導。
做題意識還是達不到要求,還是得努力刷題……
特記下,以備後日回顧。
uva11401 數學基礎題
題目的大意是 現在有1.n總共n個不同的數字,從裡面任選三個作為三邊長,能構成三角形的個數一共有多少個。解答 設c x 是最長邊為x時的三角形個數,那麼要求的答案就等於c 1 c 2 c x 所以主要需要解決的是c x 又設三邊長分別為x,y,z,由x y z x得到 1.當y 1時,z有0個解 2...
UVa 11401 數三角形 組合數學
數三角形 counting,uva 11401 有多少種方法可以從1,2,3,n中選出 3個不同的整數,使得以 它們為三邊長可以組成三角形?比如n 5時有3種方法,即 2,3,4 2,3,5 3,4,5 n 8時有22種方法。輸入格式 輸入包含多組測試資料,每組資料的第一行為整數n 3 n 1000...
Matlab數學公式
三角函式和雙曲函式 名稱含義 名稱含義 名稱含義 sin正弦 csc餘割 atanh 反雙曲正切 cos余弦 asec 反正割acoth 反雙曲餘切 tan正切 acsc 反餘割sech 雙曲正割 cot餘切 sinh 雙曲正弦 csch 雙曲餘割 asin 反正弦cosh 雙曲余弦 asech 反...