目錄【題目描述】
對於乙個排列,考慮相鄰的兩個元素,如果後面乙個比前面乙個大,表示這個位置是上公升的,用 i 表示,反之這個位置是下降的,用 d 表示。如排列 3,1,2,7,4,6,5 可以表示為 diidid。
現在給出乙個長度為 n-1 的排列表示,問有多少種 1 到 n 的排列滿足這種表示。
【輸入輸出格式】
輸入格式:
乙個字串 s,s 由 i,d,?組成。?表示這個位置既可以為 i,又可以為 d。
輸出格式:
有多少種排列滿足上述字串。輸出排列數模 1000000007。
【輸入輸出樣例】
輸入樣例#1:
?d輸出樣例#1:
3【說明】
對於 20%的資料,s 長度 ≤ 10;
對於 100%的資料,s 長度 ≤ 1000。
dp。用\(dp[i][j]\)表示i這麼長的序列,最後乙個是j的符合要求的序列個數
於是有方程:
\[dp_= \begin \sum_^ dp_ \ \ \text \\[1ex] \\ \sum_^ dp_\ \ \text\end
\]為了簡化計算,計算\(dp_\)之前,把\(dp_\)處理成字首和的形式。
#include#include#include#include#include#define mod 1000000007
#define ll long long
#define file freopen("b.in","r",stdin);freopen("b.out","w",stdout)
using namespace std;
const int maxn=1000+5;
ll n=1,dp[maxn][maxn],ans;
char c;
int main()
if(c=='i')
if(c=='d')
}if(c=='?')
for(ll i=1; i
}c=getchar();
}ans=0;
for(ll i=1; i<=n; ++i)
cout<
return 0;
}
FZU 1891 公升降序列
description 公升降序列的定義如下 給定n個不同的整數a1,a2,an組成的集合,其中n為奇數,在這n個整數集合的乙個排列中,如果對於所有1i 1 ai ai 1,那麼稱該序列為公升降序列。給定n個不同的整數組成的集合,請你構造出乙個公升降序列,使得該公升降序列的字典序最小。對於有n個元素...
1020 電梯公升降
時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 61 解決 32 某城市最高的建築只有一部電梯。乙份電梯公升降任務表由n個正整數組成,這些數字表示電梯按照給定的順序停留的樓層號。電梯公升一層花費6秒鐘,降一層花費4秒鐘,並且每次停留花費5秒鐘。對於每乙份任務表,你要計算出完成全部公升降任...
1020 電梯公升降
1020 電梯公升降 分數 1 時間限制 1 秒記憶體限制 32 兆特殊判題 否 提交 0解決 0 題目描述 某城市最高的建築只有一部電梯。乙份電梯公升降任務表由n個正整數組成,這些數字表示電梯按照給定的順序停留的樓層號。電梯公升一層花費6秒鐘,降一層花費4秒鐘,並且每次停留花費5秒鐘。對於每乙份任...