cug1692 構造字串

2021-07-11 17:41:35 字數 1180 閱讀 7883

題目大意:乙個字串有a,b組成,告訴你 a , b , ab ,ba 的數量s(a) , s(b) , s(ab) , s(ba),求字典序最小的字串 , 無解輸出-1。。

思路:首先若ab和ba的差大於1,則無解。其次,若s(a) <= s(ab) , s(ba)  且 s(b) <= s(ab) , s(ba) ,則無解。當s(ab) , s(ba)都為0但s(a)和s(b)都不為0則無解。

接下來就是構造了。

分為以下三塊:

1、s(ab) > s(ba)  

這個簡單,將所有的出去s(a)-s(ab)的a放到最前面,然後就是ab,最後將剩餘的b放到最後面

2、s(ab) < s(ba)

這個有個小坑,若s(ab)為0,則將所有的b放到最前面,然後放ba,再放a

若s(ab)不為0,則將剩餘的a放到第乙個ba後面,然後放ba(留乙個放最後),最後放b,然後ba即可

3、s(ab)

這個考慮的最多, 直接看**吧。

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

//#pragma comment(linker, "/stack:102400000,102400000")

#define maxn 200005

#define mod 1000000007

#define mem(a , b) memset(a , b , sizeof(a))

#define ll long long

#define ull unsigned long long

typedef pairpii;

const long long inf=0x3fffffff;

int main()

if(na == nb && nb == nab && nab == nba)

if(nab > nba)

else if(nab == nba)

else if(na > nab)

else if(nb > nab)

}else

else}}

return 0;

}

遞推 構造字串

problem description umr 閒來無聊玩起了自己的名字,現在的她想知道對於給定的長度 n,只用自己的 u m r 這 3 個字元最多能構成多少種不同的字串。但是因為 umr 並不喜歡 mm 所以 mm 是不能連在一起的。input 輸入資料有多組 資料組數不超過 100000 到 ...

擴充套件 String類 構造字串

程式清單16.1使用了string的7個建構函式 用ctor標識,這是傳統c 中建構函式的縮寫 表16.1簡要的描述了這些建構函式。使用建構函式時都進行了簡化,即隱藏了這樣乙個事實 string實際上是模板具體化basic string的乙個typedef,同時省略了與記憶體管理相關的引數。size...

c語言 用鍊錶構造字串

今天乙個同學問我怎麼用鍊錶構造字串 然後我簡單的說了下思路 不過他還是沒寫出來 因為資料結構在講字串的時候,老師主要講了順序構造字串 鏈式構造字串缺點太多 自己也沒有看 然後自己今天寫了一下 支援動態擴充套件 主檔案 include include liststring.h int main cha...