最大的劃分

2021-06-22 01:44:09 字數 968 閱讀 8895

題目詳情

有一排高度依次為h1,h2,h3,....,hn的樹木,一共n棵樹,如果某棵樹(不含兩端的樹)比相鄰的兩棵樹都要高,則這樣的樹就稱為景點樹,現在管理員要將這n棵樹劃分成連續等長的部分進行管理,並且每部分之中至少含有一棵景點樹。管理員希望劃分的部分個數最大,你能幫助他嗎?

輸入描述:

有多組測數資料,每組資料有兩行,第一行包含乙個正整數n(0輸入以檔案結束。

輸出描述:

對於每組資料,輸出相應的答案。

思路:主要就是用乙個輔助陣列sum[n],其中sum[k]表示從第1棵樹到第k棵樹這個區間景點數的個數,

然後判斷乙個區間[i, j]是否有景點樹即為判斷sum[i-1]是否等於sum[j]。

**如下:

#include 

#define inf 0x7fffffff

#define mod 1000000007

using

namespace

std;

const

intmaxn = 0x7fffffff;

intarray[100001];

intsum[100001];

intmain() 

fill_n(sum, n+1, 0);

for(i=2; i

if(array[i] > array[i-1] && array[i] > array[i+1])

sum[i] = 1;

}for

(i=2; i<=n; i++) 

sum[i] += sum[i-1];

for(i=1; i<=n; i++) 

if(r > n)

break;}

}if(i>n)

printf(

"0\n"

);else

printf(

"%d\n"

, n/i);

}return0;}

劃分型DP 乘積最大

題目 題目描述 description 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為...

8782 乘積最大(劃分dp)

8782 乘積最大 總時間限制 1000ms 記憶體限制 65536kb 描述 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活...

將n劃分成最大數不超過m的劃分數

之前寫過類似的文章,今天看到另外一種劃分數的方法,也就是將n劃分成不大於m的種數。若是劃分多個整數可以存在相同的 dp n m dp n m 1 dp n m m dp n m 表示整數 n 的劃分中,每個數不大於 m 的劃分數。則劃分數可以分為兩種情況 a.劃分中每個數都小於 m,相當於每個數不大...