題目大意:n個字串,m個操作,可以插入字串,也可以詢問某t個字串的最長字尾
題解:trie+lca
trie樹的插入與查詢操作。把字串反轉就相當於求公共字首。
lca的深度就是公共字首的長度。
**:
//acbiology
include#include
#include
#define maxn 1000009
using
namespace
std;
int js,n,m,cnt,pos[maxn],deep[maxn],trie[maxn][26],dad[maxn][26
];char
s[maxn];
void
insert()
root=trie[root][id];
}pos[js]=root;
}int lca(int x,int
y)
if(x==y)return
x;
for(int i=20;i>=0;i--)
return dad[x][0];}
intmain()
for(int i=1;i<=m;i++)
else
printf(
"%d\n
",deep[l]);}}
return0;
}
湖南集訓Day4
上午的數論感覺還可以,嗯,感覺。因為畢竟我數學弱,只聽懂一半什麼的,感覺證明還是比較顯然的。話說這金牌爺長得好像我某物理老師啊 下午的題終於不是clj出的了,沒辣麼虐了。第一題疑似回文自動機,然而並不會,於是dp水了60分。第二題想了下應該是樹鏈剖分,然後發現搞不出來,回去水第一題,然後水完回來繼續...
湖南集訓 4 13 c
找到 n 維向量 x,最小化 i 0m bi j 0 nai,jxj 2 n 103,m 2 103 開o2,3秒時限。多元函式的最值問題。這裡有乙個比較經典的做法,首先求出需要求最值的函式對每乙個變數的偏導數,然後使他們都等於 0 解出來各變數的值是使原函式達到駐點的值。以這道題為例,略微整理一下...
湖南集訓day8
難度 可以先考慮一維,可知 模k意義下相同的字首和任意兩個相減都是k的倍數 問題等價於統計字首何種模k相同的數的對數。多維的時候二維字首和,壓行或者壓列,n 3可以解決。樹形dp可做,好難好難的樣子 考慮貪心 暗點的深度排序,每次拿出未被更新的最深的點把他的k級父親標記 然後用這個點向外擴充套件更新...