洛谷2657 windy數(數字DP)

2021-09-30 17:03:17 字數 642 閱讀 3046

數字dp經典題了。

考慮直接統計r內的windy數和l-1內的windy數,兩者相減即為l~r之間的windy數。

考慮dp,記錄當前位以及上一位所填的數,當前是否前面為前導零,以及前面一段是否與原數相同。

然後按題意逐位計算即可。

然後就會驚訝的發現tle了。。。。。。

所以考慮優化:如果當前沒有受任何限制,那麼可以直接記錄下當前位置的值,記憶化搜尋。

#includeusing namespace std;

typedef long long ll;

const int maxn=15;

ll l,r;

int num[maxn],cnt;

int dp[maxn][maxn];

ll read()

int dp(int pos,int last,int iszero,int limit)

} else

} if(!iszero&&!limit)

return dp[pos][last]=ret;

return ret;

}int solve(int x)

return dp(cnt,0,1,1);

}int main()

洛谷2657 windy數(數字DP)

數字dp經典題了。考慮直接統計r內的windy數和l 1內的windy數,兩者相減即為l r之間的windy數。考慮dp,記錄當前位以及上一位所填的數,當前是否前面為前導零,以及前面一段是否與原數相同。然後按題意逐位計算即可。然後就會驚訝的發現tle了。所以考慮優化 如果當前沒有受任何限制,那麼可以...

洛谷 P2646 數數zzy

zzy自從數學考試連續跪掉之後,上數學課就從來不認真聽了 事實上他以前也不認真聽 於是他開始在草稿紙上寫寫畫畫,比如寫一串奇怪的字串。然後他決定理 性 愉 悅 一下 統計這串字串當中共有多少個為 zzy 的子串行 注意是子串行而非子串 但是由於他寫的字串實在是太長啦,而且他是個超級大蒟蒻,根本就數不...

洛谷P3413 萌數 數字dp

給出兩個len 1e3 len leq1e3 len 1e 3的數字串,然後求問兩個數字之間有多少個萌數,萌數的定義是存在長度至少為2 22的回文子串。答案對1e9 7 1e9 7 1e9 7取模。正難則反 計算不是萌數的個數,由高位往低位列舉,記錄下這一位的前一位和前兩位,保證當前位和前一位以及前...