关于一类SA的构造题(gym102803E 2020黑龙江省赛E,某年的final)

题意:

给出sa数组和height数组,构造一个字典序最小的满足条件的字符串
变式:条件变为 给出sa和马拉车的匹配数组


做法类似,先通过height/匹配数组求出 哪些位置相同/不同(连边),然后构造

构造的话按照排好序的后缀来构造,每次放首字母(即按照sa[i]按顺序放,i=1→n)
如果出现强制不同的情况就字母+1

这样据ozy所说就是字典序最小的
大概感受就是要保证满足限制,就不能直接按位放,而是要按sa[i]来放
并且sa[i]一定也是尽量往小的靠,因为假如把一个sa[i]上的字母变大,由于有ch sa[i]<=ch sa[i+1],前面不变,后面可能变大,一定不优
所以按sa[i]放且尽量放小是最优策略

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章