NOIP2000提高組複賽C 單詞接龍

2022-06-23 08:15:09 字數 1835 閱讀 5308

略注意點:1.字首和字尾的公共部分應該選最短的。2.如果兩個字串字首和字尾的公共部分恰好是其中乙個字串,那麼這兩個字串不能合併。

1 #include 2

using

namespace

std;34

#define rep(i,n) for (int i = 0; i < (n); ++i)

5#define for(i,s,t) for (int i = (s); i <= (t); ++i)

6#define rfor(i,t,s) for (int i = (t); i >= (s); --i)

7#define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)

8#define rforeach(i,c) for (__typeof(c.rbegin()) i = c.rbegin(); i != c.rend(); ++i)910

#define pr(x) cout << #x << " = " << x << " "

11#define prln(x) cout << #x << " = " << x << endl

1213

#define all(x) x.begin(),x.end()

14#define ins(x) inserter(x,x.begin())

1516

#define ms0(a) memset(a,0,sizeof(a))

17#define msi(a) memset(a,inf,sizeof(a))

1819

#define pii pair20

#define piii pair,int>

21#define mp make_pair

22#define pb push_back

23#define fi first

24#define se second

2526 inline int

gc()

3334 inline int

ri()

4041 typedef long

long

ll;42

const

int maxn = 1e5 + 7;43

44int

n, ans;

45string str[21

];46 vector< pii > nexts[21

];47

int cnt[21

];48

string

st;49

50//

common prefix and suffix

51int cps(int x, int

y) 59 --i;

60 ++j;61}

62if(ret == str[x].size() || ret == str[y].size()) ret = 0;63

return

ret;64}

6566

void dfs(int x, int

ret)

79if(flag) ans =max(ans, ret);80}

8182

intmain()91}

92 for(j, 1

, n)

95 dfs(0, 0

);96

97 printf("

%d\n

", ans);

98return0;

99 }

view code

NOIP2000 提高組 複賽 進製轉換

noip2000 提高組 複賽 進製轉換 1.該題難在弄懂樣例,負進製,餘數為 0 2.試了一下,程式自帶的 發現對負進製轉換無用,得自個寫一套。3.弄懂了 15轉 2進製,餘數 0,商正負都可以。模擬如下 15除 2 8餘1 8除 2 4餘0 4除 2 2餘0 2除 2 1餘0 1除 2 1餘1 ...

NOIP 2000 提高組 複賽 單詞接龍

noip 2000 提高組 複賽 單詞接龍 1.程式編寫過程中,發現接龍處的判斷編寫有誤,馬上著手修改。2.樣例通過,提交40分,錯了測試點1 4.輸入 1envelopee 輸出 154.上述測試點是挺經典的,不容易考慮到。envelope envelope 拼接成envelopenvelope ...

NOIP 2023年提高組複賽 單詞接龍

說起這道題就心酸,幾個資料特別坑,幾分鐘寫完的程式花了乙個上午除錯bug,吐槽完畢,進入正題 1,需要建立乙個標記陣列vis表示當前單詞被採取的次數 2,for迴圈中找到每乙個符合條件的龍頭,初始化標記陣列後進行深度優先搜尋 3,因為連線起來的單詞要最長,所以對比是選擇從上乙個單詞的末尾與當前單詞的...