對於乙個長度為n的字串s,我們稱字串s0s1s2…si為字串的乙個字首,稱字串si+1si+2…sn為字串的乙個字尾。我們稱兩個字串是相似的,當且僅當它們的成分相同,並且組成各成分出現的數目相同。例如字串"abbcdf"與字串"bcfdab"就是相似的,而"abbcdf"與"abcdf"不相似,因為它們雖然成分相同,但是各成分出現的次數不同。可以看成是走邊長為cnt1和cnt0的紙條問題,然後用動態規劃即可牛牛本來有兩個長度均為n的01字串s,t,但是t串由於資料損壞,導致一些位置不確定到底是0還是1,不過好在,牛牛清楚的記得t串中有cnt0個0和cnt1個1。接下來牛牛要還原損壞的t串。
s串和t串每有乙個非空前綴相似,就得到val的得分, 不一定是乙個正數,當它的值為負時表示失去val_ 的得分
s串和t串每有乙個非空字尾相似,就得到val_的得分,(val_
不一定是乙個正數,當它的值為負時表示失去val_的得分) 牛牛想要知道它能夠還原的t串中的最小得分與最大得分。
#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個數組成的數列,牛牛現在想取乙個連續的子串行,並且這個子串行還必須得滿足 最多隻改變乙個數,就可以使得這個連續的子串行是乙個嚴格上公升的子串行,牛牛想知道這個連續子串行最長的長度是多少。一開始看到這個題,總是被繞進 改變乙個數 中,就想說是不是遍歷陣列,然後每個數都嘗試改變...