洛谷P4248 差異

2022-04-30 11:09:08 字數 1198 閱讀 5097

題意:求所有字尾兩兩之間的最長公共字首的長度之和。

解:這道題讓我發現了乙個奇妙的性質:所有字尾兩兩最長公共字首長度之和 和 所有字首兩兩最長公共字尾之和的值是相等的,但是每一組公共前/字尾是不同的。

因為這道題要反建字尾自動機,我正建然後過了......

兩個串的最長公共字尾就是在fail樹上的lca。

所以反建字尾自動機,所有字尾就是主鏈。然後求這些兩兩的lca計算每個點作為lca被統計了多少次,樹上dfs一遍就好了。

1 #include 2 #include 3 #include 4

5 typedef long

long

ll;6

const

int n = 1000010;7

8struct

edge edge[n]; int

top;

1112

int tr[n][26], len[n], fail[n], cnt[n], tot = 1, last = 1;13

inte[n], siz[n];

14ll ans;

15char

s[n];

1617 inline void add(int x, int

y) 24

25 inline void insert(char

c) 35

if(!p)

38else

43else53}

54}55return;56

}5758 inline void

prework()

63return;64

}6566void dfs(int

x) 74 siz[x] +=siz[y];75}

76//

printf("x = %d siz = %d \n", x, siz[x]);

77return;78

}7980int

main()

88prework();

89 dfs(1

);90 printf("

%lld\n

", sum - 2 *ans);

91//

printf("%lld - %lld \n", sum, 2 * ans);

92return0;

93 }

ac**(偽)

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...

洛谷練習P2279 P1346

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...

洛谷 P1396 營救

題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...