字尾陣列 基因突變

2021-07-24 18:49:03 字數 2020 閱讀 6487

描述 description

最近,jzyz的科學家忽然發現了一種神秘的生物出現在了霞棲湖中,通過提取dna,科學家發現這個生物的dna由a.....z共26種鹼基對組成,而且這個生物常常容易發生dn**段的缺失。那麼問題來了。科學家想知道dn**段的缺失對這個生物會產生什麼影響。

給你一段長為n的dna序列(保證全為小寫字母),請求出從x到y-1的片段缺失後,忽略前x-1的長度,他們最長還有多長連續序列是相同的?

輸入格式 input format

第一行為n,表示dna序列的長度

接下來一行為dna序列

接下來一行為m,表示m次詢問。

接下來的m行為x,y,表示x到y(或y到x)的片段缺失

輸出格式 output format

對於m次詢問,輸出m行,每行兩個數

樣例輸入 sample input

10aaaaaabaaa

54 7

6 56 5

9 85 10

樣例輸出 sample output 01

121/*樣例解釋

對於第乙個詢問

從第4個鹼基到第6個鹼基缺失

故缺失後由

aaaaaabaaa -> aaabaaa

因為rrna是連續讀取的,所以兩個dna的相同的片段是aaa

但是由於我們忽略前三個鹼基對,所以相同的長度為0.

對於第二個詢問

第五個鹼基對缺失

故缺失後由

aaaaaabaaa -> aaaaabaaa

相同片段是5,但是忽略前四個,所以相同為1

注釋 hint

100% 3<=n<=300000 10<=m,x,y<=30000

本質上就是求最長公共字首。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define maxn 3001000

9#define inf 0x3f3f3f3f

10using

namespace

std;

11int n,x,y,rank[maxn],sa[maxn],p[maxn],cnt[maxn],tmp[maxn],height[maxn],t[maxn*4+500

];12

char

s[maxn];

13 inline int

read()

1417

while(isdigit(ch))

18return x*f;19}

20bool equ(int x,int y,int l)

21void

doubling()

2237}38

void

get_height()

3943

if(j) j--;

44while(s[i+j]==s[k+j]) j++;

45 height[rank[i]]=j;46}

47}48void build(int p,int l,int

r)49

51int mid=(l+r)/2

;52 build(p*2

,l,mid);

53 build(p*2+1,mid+1

,r);

54 t[p]=min(t[p*2],t[p*2+1

]);55}56

int getnum(int p,int l,int

r)57

64void

ask()

6571

if(rank[tx]1,y=rank[ty];

72else x=rank[ty]+1,y=rank[tx];

73 printf("

%d\n

",getnum(1,1

,n));74}

75}76int

main()

77

view code

雙基因突變患者 警惕,這些基因突變,癌症術後易復發

手術是徹底 肺癌最主要的手段之一,但是為何一些臨床i期的肺癌手術切除的時候還是會出現 肺癌是我國發病率最高的惡性腫瘤,不過得益於大家關注度的提公升,一些肺癌高危人群使用低劑量螺旋ct來篩查早期肺癌,一些臨床i期肺癌可以被發現並使用手術的方式切除。如果說手術將所有的肺部腫瘤細胞都切除乾淨了,那麼肺癌就...

雙基因突變患者 我的肺癌沒有基因突變,這是好是壞

我的肺癌沒有基因突變,這是好是壞?問題的答案顯然不會是 好 還是 壞 這麼簡單。我們當然知道大多數患者在迫切想知道答案的同時,卻沒有額外的精力去學習癌症診治的知識。但是,用 好 和 壞 這種非黑即白的方式理解世界總會遇到瓶頸。所以,在真正回答問題之前用基本事實構建乙個簡單的邏輯 事實1腫瘤是體內細胞...

JZOJ 4876 基因突變

的707剛剛從白堊紀穿越回來,心中產生了乙個念頭 我要統治人類!但是統治人類是很龐大且複雜的乙個工程,707嘗試了 催眠,以及武裝鎮壓都沒能成功地統治人類,於是她決定從科學上對人類的基因進行研究從而達到他的目的。707獲取了人類的基因資訊並嘗試對基因進行實驗。他發現可以把人類的基因看做乙個只包含小寫...