problem description
眾所周知,度度熊非常喜歡數字。
它最近發明了一種新的數字:valley number,像山谷一樣的數字。
當乙個數字,從左到右依次看過去數字沒有出現先遞增接著遞減的「山峰」現象,就被稱作 valley number。它可以遞增,也可以遞減,還可以先遞減再遞增。在遞增或遞減的過程中可以出現相等的情況。
比如,1,10,12,212,32122都是 valley number。
121,12331,21212則不是。
度度熊想知道不大於n的valley number數有多少。
注意,前導0是不合法的。
input
第一行為t,表示輸入資料組數。
每組資料報含乙個數n。
● 1≤t≤200
● 1≤length(n)≤100
output
對每組資料輸出不大於n的valley number個數,結果對 1 000 000 007 取模。
sample input
3 3
14 120
sample output
3 14
119很裸的乙個數字dp,第乙個切的就是這題。。
但是我還是只會寫深搜版本啊,正統dp版不會。。但是深搜好寫的
#include
#include
typedef
long
long ll;
const
int mod=1000000007;
char ss[105];
ll yy[105][3][3][3][15];
int n;
ll dfs (int now,bool a,bool b,bool c,int last)
//當前到第幾位 是否出現了小 是否已經是遞增 是否已經有第乙個非0位 上乙個是什麼
ans=ans+dfs(now+1,false,false,true,lalal);
ans%=mod;
}else
//也就是我愛填什麼填什麼 }}
else
for (int u=last+1;u1,true,true,c,u);
ans%=mod;}}
else
for (int u=0;u1,true,false,c,u);
ans%=mod;}}
else
//已經是遞增了,不可以減了
if (lalal>=last)}}
else
//已經可以越界了 }}
}yy[now][a][b][c][last]=ans;
return ans;
}int main()
return
0;}
百度之星複賽 T5 Valley Numer
眾所周知,度度熊非常喜歡數字。它最近發明了一種新的數字 valley number,像山谷一樣的數字。當乙個數字,從左到右依次看過去數字沒有出現先遞增接著遞減的 山峰 現象,就被稱作 valley number。它可以遞增,也可以遞減,還可以先遞減再遞增。在遞增或遞減的過程中可以出現相等的情況。比如...
2018 百度之星
資格賽 problem a problem b problem c problem d problem e problem f 初賽 a problem a 簽到題problem b 用deque雙端佇列模擬即可。插入的時候用insert。problem c problem d problem e ...
百度之星B題
include include include include include include includeusing namespace std define clr arr,v memset arr,v,sizeof arr const double inf 1e 10 struct node...