Luogu5108 仰望半月的夜空(字尾陣列)

2022-03-19 23:10:18 字數 907 閱讀 1026

洛谷

實名舉報這題在比賽之前還不是這個樣子的,還被我用sam給水過去了

很明顯求出\(sa\)之後就是按照\(sa\)的順序從前往後考慮每乙個長度,這樣可以知道串是什麼。

不過如果串相同要左端點最靠左,所以二分包含這個串的區間,用\(rmq\)求出區間最小值即可。

(其實就是拿來複習sa板子的)

#include#include#include#includeusing namespace std;

#define max 400200

inline int read()

int n,sig;

char ch[max];

int s[max],tot,a[max],lg[max];

int t[max],x[max],y[max],rk[max],sa[max],hg[20][max],mn[20][max];

bool cmp(int i,int j,int k)

void getsa()

for(int i=1;i<=n;++i)rk[sa[i]]=i;

for(int i=2;i<=n;++i)lg[i]=lg[i>>1]+1;

for(int i=1,j=0;i<=n;++i)

for(int j=1;j<=lg[n];++j)

for(int i=1;i+(1return min(hg[k][i],hg[k][j-(1return min(mn[k][i],mn[k][j-(1<>1;

if(lcp(sa[p],sa[mid])>=i)l=mid+1,ret=mid;

else r=mid-1;

} printf("%d ",rmq(p,ret));

} puts("");return 0;

}

Luogu 選擇客棧

思路就是,從1到n列舉,輸入color和price的值,我們需要記錄乙個距離第二個客棧最近的咖啡廳價錢合理的客棧位置,用乙個now變數記錄。開三個輔助陣列,last i 表示最後乙個以i為顏色的客棧的位置,cnt i 表示以i為顏色的客棧總數,sum i 可以看作是乙個臨時陣列,用來儲存當前的方案數...

Luogu 運輸計畫

inline 神奇的東西 最好戒掉吧 read 除外 這道題將求解性問題轉化為判定性問題,當然就是二分答案了 二分刪掉邊後最短路徑的最大值 mid 將所有的比mid大的詢問求交集 樹上差分,cnt s cnt t cnt lca s,t 2 最後統計每個節點以及該節點的子樹的cnt的和,若 和 比m...

luogu 花生採摘

魯賓遜先生和多多都很開心,因為花生正是他們的最愛。在告示牌背後,路邊真的有一塊花生田,花生植株整齊地排列成矩形網格 如圖1 有經驗的多多一眼就能看出,每棵花生植株下的花生有多少。為了訓練多多的算術,魯賓遜先生說 你先找出花生最多的植株,去採摘它的花生 然後再找出剩下的植株裡花生最多的,去採摘它的花生...