百度之星Valley Numer

2021-08-07 03:27:36 字數 1412 閱讀 1513

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...