計蒜客 單詞拼接

2022-05-01 10:21:08 字數 1352 閱讀 8313

輸出一行,如果所有的單詞都可以連線在一起並且可以形成乙個環,那麼輸出euler loop;如果所有單詞都可以連線在一起,但是不會形成環,輸出euler path;如果所有單詞不能連在一起,那麼輸出impossible

樣例輸入

3

euler

ruby

jisuanke

樣例輸出

euler path

分析:這道題的整體思路要想對,我們不應該從單詞向單詞連邊,一是因為存不下,二是因為這就構成了乙個哈密頓

圖問題,這是不能直接得出結論的。可以發現,乙個單詞只有首尾有用,我們從每個單詞的首字母向末字母連一條有

向邊,因為如果是尤拉圖,保證每個單詞經過一次就好了,這裡就是每條邊經過一次就好了,而不是之前的每個點經

過一次,就可以求解了。注意:判斷之前一定要看一下圖是不是連通的,並查集就可以了.

#include #include 

#include

#include

#include

#include

#include

using

namespace

std;

int n,chu[200],ru[200],zifu[200],tot,fa[200

];int find(int

x)bool check(int

c)int

main()

if (n == 1

) printf(

"euler path");

else

int t = abs(chu[zifu[i]] -ru[zifu[i]]);

if (t != 0

) flag2 = 1; //

不是迴路

if (t == 1

) ans++;

if (t >= 2

)

}if(flag1)

printf(

"impossible");

else

if (!flag2)

printf(

"euler loop");

else

if (ans == 2

) printf(

"euler path");

else

printf(

"impossible");

}return0;

}

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...

計蒜客 郊遊

蒜頭君成為了計蒜客附屬幼兒園的一名老師,乙個陽光明媚的週末,蒜頭君帶領著小朋友們去野外郊遊。一共有 2n2n 個小朋友,正好是 n n 個男孩和 n n 個女孩。蒜頭君讓小朋友分組玩遊戲,每組乙個男孩和乙個女孩,但是有些女孩比較討厭某些男孩,不願意和他們分在一組,男孩覺得和誰分在一組都無所謂。你能告...