牛客 牛牛的01限定串

2021-10-06 09:11:22 字數 1294 閱讀 1056

對於乙個長度為n的字串s,我們稱字串s0s1s2…si為字串的乙個字首,稱字串si+1si+2…sn為字串的乙個字尾。我們稱兩個字串是相似的,當且僅當它們的成分相同,並且組成各成分出現的數目相同。例如字串"abbcdf"與字串"bcfdab"就是相似的,而"abbcdf"與"abcdf"不相似,因為它們雖然成分相同,但是各成分出現的次數不同。

牛牛本來有兩個長度均為n的01字串s,t,但是t串由於資料損壞,導致一些位置不確定到底是0還是1,不過好在,牛牛清楚的記得t串中有cnt0個0和cnt1個1。接下來牛牛要還原損壞的t串。

s串和t串每有乙個非空前綴相似,就得到val的得分, 不一定是乙個正數,當它的值為負時表示失去val_ 的得分

s串和t串每有乙個非空字尾相似,就得到val_的得分,(val_

不一定是乙個正數,當它的值為負時表示失去val_的得分) 牛牛想要知道它能夠還原的t串中的最小得分與最大得分。

可以看成是走邊長為cnt1和cnt0的紙條問題,然後用動態規劃即可

#include

#include

#include

using

namespace std;

string s, t;

int n, cnt0, cnt1, vp, vs;

int sum[

1005];

int maxn[

1005][

1005];

int minx[

1005][

1005];

intmain()

memset

(maxn,

-0x3f

,sizeof maxn)

;memset

(minx,

0x3f

,sizeof minx)

; maxn[0]

[0]= minx[0]

[0]= vs *

(cnt1 == sum[n]);

for(i =

0; i <= n;

++i)

if(t[pos]

!='0'

&& j)}}

cout << minx[cnt0]

[cnt1]

<<

" "<< maxn[cnt0]

[cnt1]

<< endl;

return0;

}/*8 6 2 1 1

10110011

????????

*/

牛客 牛牛的數列

鏈結 牛牛的數列 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 牛牛現在有乙個n個數組成的數列,牛牛現在想取乙個連續的子串行,並且這個子串行還必須得滿足 最多隻改變乙個數,就可以使得這個連續的子串行是乙個嚴格上公升...

牛客 牛牛與陣列

牛牛喜歡這樣的陣列 1 長度為n 2 每乙個數都在1到k之間 3 對於任意連續的兩個數a,b,a b 與 a b 0 兩個條件至少成立乙個 請問一共有多少滿足條件的陣列,對1e9 7取模 輸入兩個整數n,k 1 n 10 1 k 100000輸出乙個整數示例1 複製2 2 複製3 示例2複製9 1 ...

牛客網 牛牛的數列

題目描述 牛牛現在有乙個n個數組成的數列,牛牛現在想取乙個連續的子串行,並且這個子串行還必須得滿足 最多隻改變乙個數,就可以使得這個連續的子串行是乙個嚴格上公升的子串行,牛牛想知道這個連續子串行最長的長度是多少。一開始看到這個題,總是被繞進 改變乙個數 中,就想說是不是遍歷陣列,然後每個數都嘗試改變...