layout: post
title: Educational Codeforces Round 62 (Rated for Div. 2)
author: "luowentaoaa"
catalog: true
tags:
mathjax: true
- codeforces
- dp
---less
傳送門post
一眼看出結論,可是實際上它是個區間DP題,枚舉區間\(l-r\)中的一個點\(k\) 而後繼續作一個三角形spa
首先沒有大於1的奇數的迴文那就是沒有長度爲3的迴文,能夠發現只要沒有長度爲3的迴文那就確定不會有大於長度爲3的奇數迴文 因此咱們就能夠把問題拆成奇數和偶數的兩個串 要求任意相鄰兩個不相同的個數code
首先若是不是-1答案就已經固定了,若是是-1就考慮這種-1的長度的狀況get
\(1.\)若是所有都是-1例如\(xxxxx\) 那麼咱們就直接獲得這種有\(k*pow(k-1,n-1)\)it
\(2.\)若是是\(axxxx\)或者\(xxxxa\)那麼咱們就能夠直接獲得\(pow(k-1,n)\)io
\(3.\)若是是\(axxxa\) 那麼假設答案就是\(dp[len][1]\)class
\(4.\)若是是\(axxxxb\) 那麼假設就是\(dp[len][0]\)test
首先定義\(dp[len][0]\) 爲長度爲\(len\)的以上\(3/4\)狀況im
明顯的若是\(len=1\)那麼\(dp[len][1]=k-1\) and \(dp[len][0]=k-2\)
如今考慮\(dp[len+1][1]\) 就至關於如今已經有了一個\(axxxxa\)
對於第一個\(x\) 它確定不是\(a\) 那麼他就多是\(k\)中除了\(a\)以外的\(k-1\)個,因此假設它是\(b\)
那麼如今就是\(axxxb\) 發現這個答案咱們以前是否是求過了是否是就是\(dp[len][0]\) 啊
而後\(b\)有\(k-1\)中狀況因此\(dp[len][1]=(k-1)*dp[len-1][0]\)
另外一種同理