POJ2231 Moo Volume 遞推 C語言

2022-08-30 02:27:11 字數 947 閱讀 5800

題目:

個人認為這是一道水題……先輸入n表示有n頭牛,接下來的n個數是各個牛所在的位置。如果一頭牛對另一頭牛moo,那麼moo數就是1號牛所在位置i與2號牛所在位置j的差值,又因為1號牛moo過去,所以2號牛也要moo回來,於是moo數就變為2倍了。

1號牛要對剩餘所有(n-1)頭牛都moo,如果我們將牛按順序排好,每頭牛i只對它身後的(n-i)頭牛moo,意思是,我們只考慮某頭牛moo出去的,而不考慮別的牛對它moo回來的,那麼它也不對在它前面的牛moo,那麼這就是乙個簡單的數學問題,每頭牛i只對身後的(n-i)頭牛moo。因為所有牛還要moo回去,所以最後結果乘2就可以了。

這就想到可以用迴圈來實現,對每頭牛i,它與它後面(n-i)頭牛j的距離(i-j),所有距離求和,就是moo出去的次數,再乘2,就又加上了moo回來的次數。這樣答案就出來了。要用到二重迴圈。

當然要注意的還有資料範圍,牛的個數在10,000以內,int就可以包括,而牛所在位置在0~1,000,000,000,顯然moo的次數也會很大,所以要用long long int才不會溢位。

這個題我寫完之後提交是re,後來又出現了tle,微微改了幾次,先發現int有問題,改成了long long int,

還是tle,後來發現陣列似乎開小了,擴大了一下,就ac了。

這個,我講不大清楚,不過看了**就能馬上理解我的意思啦

ac code:

1

#include

<

stdio.h

>

2#include

<

math.h

>

3#include

<

stdlib.h

>45

#define

max 10000 + 10067

intmain ()

這個方法似乎效率不高,但我也只想到這樣做了……歡迎批評指教啊!~謝啦~

POJ1850 遞推關係

2015 2 22 還是先得打表,求出組合數 然後再問你 abcd 十進位制是多少?答 乙個字母的組合數 兩個字母的.三個的 1 num abcd 當然 一般的通解是 計算完 1 len 1的組合數之和後 還要計算 同長度的有幾個字串 如果讓你求 abdf 呢?那麼麻煩就在於計算同長度的組合數量的時...

poj 1664 放蘋果 遞推

解題思路 我們不妨令f m,n 表示m個蘋果放到n個盤子裡有多少種放法,下面對不同的情況給予討論 1 當盤子數為1的時候,只有一種放法就是把所有蘋果放到乙個盤子裡。2 當蘋果數為0的時候,也只有一種放法。3 當m n時,也分兩種情況討論,一種是至少有乙個盤子裡不放蘋果,這樣子就相當於f m,n 1 ...

poj2506(遞推 高精度)

題目大意 給出乙個n,代表乙個2 n的矩形地板,要求只用2 1和2 2兩種瓷磚將其完全覆蓋,求所有情況的數量 解題思路 求出遞推公式 f n 2 f n 2 f n 1 這道題還有另外乙個關鍵點是高精度,因為題目提到n可能會達到250,因此答案的數字將會非常大,long long型照樣會爆掉,因此採...