01限定串 傳紙條模型

2022-02-15 23:28:33 字數 1932 閱讀 4254

我們稱兩個字串是相似的,當且僅當它們的成分相同,並且組成各成分出現的數目相同。例如字串"abbcdf"與字串"bcfdab"就是相似的,而"abbcdf"與"abcdf"不相似,因為它們雖然成分相同,但是各成分出現的次數不同。

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

接下來牛牛要還原損壞的t串。

s串和t串每存在乙個非空相似字首得分\(val_\), 每存在乙個非空相似字尾得分\(val_\)

想要知道它能夠還原的t串中的最小得分與最大得分。

第一行輸入五個整數n \(cnt_\)

\(cnt_\)

\(val_\)

\(val\)

接下來輸入兩行表示字串s,t,|s|=|t|=n, n<= 100

其中,s串完全由'0','1'組成,t串完全由'0','1','?'組成。

?表示損壞的部分,也就是需要你還原的部分。

輸入資料保證至少存在一種合法的方案。

請輸出兩個整數,表示還原後的最小得分與最高得分。

8 6 2 1 1

10110011

????????

0 4
可以構造01串t="00011000"達到最小得分(與s串沒有相似的字首與字尾)

可以構造01串t="00000011"(4個相似的字尾)達到最大得分。

20 1 19 55 97

11111010101111111111

1?????1?1?1????????1

566 1439
最小:"11111111111111111101"

最大:"11111111101111111111"

1 0 1 -999 1000

0?

0 0
因為限制條件為必須有1個1,所以?處只能填1

本題給定了0和1的數量,讓你如何排列才能使分數最優。

我們先考慮問題的簡單版本,如果給定字串t全為問號,即對組成的字串不加限制,就轉變經典傳紙條問題,

即只求一條從(0,0)到(cnt0,cnt1)的路徑,只能向右或向下走,使得路徑上的點的權值和最大。

顯而易見的變化中的量就是座標(x,y),用dp[x][y]來表示傳到(x,y)這個座標的時候,最大(小)的權值和

就是普通的傳紙條模型

但是有的位置給定了你方向(t[i] != '?'), 分四種情況就行

傳統傳紙條是

for (int step = 1; step <= n; ++step)

for (int i = 0; i <= a; ++i)

但是注意到後效性

也可以直接二維列舉

#include#define rep(i,a,b) for(int i=a;i<=b;++i)

using namespace std;

const int maxn = 1e3 + 5;

int n, a, b, x, y;

int sum[maxn << 1], f1[maxn][maxn], f2[maxn][maxn];

string s,t;

int main()

if (t[pos] != '1' && i)

}cout << f2[a][b] << " " << f1[a][b] << endl;

return 0;

}

牛客 牛牛的01限定串

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

洛谷P1006 NOIP提高組2008 傳紙條

小淵和小軒是好朋友也是同班同學,他們在一起總有談不完的話題。一次素質拓展活動中,班上同學安排做成乙個m行n 列的矩陣,而小淵和小軒被安排在矩陣對角線的兩端,因此,他們就無法直接交談了。幸運的是,他們可以通過傳紙條來進行交流。紙條要經由許多同學傳到對方手 裡,小淵坐在矩陣的左上角,座標 1,1 小軒坐...

01串 動態規劃

時間限制 1000 ms 記憶體限制 65535 kb難度 2 描述 acm的zyc在研究01串,他知道某一01串的長度,但他想知道不含有 11 子串的這種長度的01串共有多少個,他希望你能幫幫他。注 01串的長度為2時,有3種 00,01,10。輸入 第一行有乙個整數n 0 輸出輸出不含有 11 ...