日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Colidity--GenomicRangeQuery

發(fā)布時(shí)間:2024/10/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Colidity--GenomicRangeQuery 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

思路:統(tǒng)計(jì)每一個(gè)字符前面的四個(gè)字符的個(gè)數(shù)(利用前綴和數(shù)組),這樣就能在O(1)時(shí)間得到某個(gè)區(qū)間某個(gè)字符的個(gè)數(shù)

開(kāi)始想到的是O(n^2)的空間,這個(gè)思路比較好

1 // you can use includes, for example: 2 // #include <algorithm> 3 4 // you can write to stdout for debugging purposes, e.g. 5 // cout << "this is a debug message" << endl; 6 7 vector<int> solution(string &S, vector<int> &P, vector<int> &Q) { 8 // write your code in C++11 9 int len = S.length(); 10 vector<int> res; 11 vector<vector<int> > arr(len); 12 13 for(int k = 0 ; k < len ; ++k) 14 { 15 arr[k].resize(4); 16 } 17 int i,j; 18 for(i = 0; i < len; i++) 19 { 20 char c = S[i]; 21 if(c == 'A') arr[i][0] = 1; 22 if(c == 'C') arr[i][1] = 1; 23 if(c == 'G') arr[i][2] = 1; 24 if(c == 'T') arr[i][3] = 1; 25 } 26 for(i = 1 ; i < len ; ++i) 27 { 28 for(j = 0 ; j < 4 ; ++j) 29 { 30 arr[i][j] += arr[i-1][j]; 31 } 32 } 33 for(i = 0 ; i < P.size() ; ++i) 34 { 35 int x = P[i]; 36 int y = Q[i]; 37 for(j = 0 ; j < 4 ; ++j) 38 { 39 int sub = 0; 40 if(x-1>=0) 41 { 42 sub = arr[x-1][j]; 43 } 44 if(arr[y][j] - sub > 0) 45 { 46 res.push_back(j+1); 47 break; 48 } 49 } 50 } 51 return res; 52 }

A DNA sequence can be represented as a string consisting of the letters?A,?C,?G?and?T, which correspond to the types of successive nucleotides in the sequence. Each nucleotide has an?impact factor, which is an integer. Nucleotides of types?A,?C,?G?and?T?have impact factors of 1, 2, 3 and 4, respectively. You are going to answer several queries of the form: What is the minimal impact factor of nucleotides contained in a particular part of the given DNA sequence?

The DNA sequence is given as a non-empty string S =S[0]S[1]...S[N-1]?consisting of N characters. There are M queries, which are given in non-empty arrays P and Q, each consisting of M integers. The K-th query (0 ≤ K < M) requires you to find the minimal impact factor of nucleotides contained in the DNA sequence between positions P[K] and Q[K] (inclusive).

For example, consider string S =?CAGCCTA?and arrays P, Q such that:

?

P[0] = 2 Q[0] = 4P[1] = 5 Q[1] = 5P[2] = 0 Q[2] = 6

The answers to these M = 3 queries are as follows:

  • The part of the DNA between positions 2 and 4 contains nucleotides?G?and?C?(twice), whose impact factors are 3 and 2 respectively, so the answer is 2.
  • The part between positions 5 and 5 contains a single nucleotide?T, whose impact factor is 4, so the answer is 4.
  • The part between positions 0 and 6 (the whole string) contains all nucleotides, in particular nucleotide?Awhose impact factor is 1, so the answer is 1.

Write a function:

vector<int> solution(string &S, vector<int> &P, vector<int> &Q);

that, given a non-empty zero-indexed string S consisting of N characters and two non-empty zero-indexed arrays P and Q consisting of M integers, returns an array consisting of M integers specifying the consecutive answers to all queries.

The sequence should be returned as:

  • a Results structure (in C), or
  • a vector of integers (in C++), or
  • a Results record (in Pascal), or
  • an array of integers (in any other programming language).

For example, given the string S =?CAGCCTA?and arrays P, Q such that:

?

P[0] = 2 Q[0] = 4P[1] = 5 Q[1] = 5P[2] = 0 Q[2] = 6

the function should return the values [2, 4, 1], as explained above.

Assume that:

  • N is an integer within the range [1..100,000];
  • M is an integer within the range [1..50,000];
  • each element of arrays P, Q is an integer within the range [0..N ? 1];
  • P[K] ≤ Q[K], where 0 ≤ K < M;
  • string S consists only of upper-case English letters?A, C, G, T.

Complexity:

  • expected worst-case time complexity is O(N+M);
  • expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).

轉(zhuǎn)載于:https://www.cnblogs.com/cane/p/3973828.html

總結(jié)

以上是生活随笔為你收集整理的Colidity--GenomicRangeQuery的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 夜色88v精品国产亚洲 | 男人都懂的网站 | 咪咪色影院 | 成人久久18免费网站图片 | 国产美女喷水视频 | 久久国产热 | 久久久久久99精品久久久 | 日日夜夜狠狠爱 | 91久久精品一区二区三区 | 蜜桃成人免费视频 | 丁香花电影免费播放电影 | 久久艹精品视频 | 亚洲欧美成人一区二区三区 | 一级国产片 | 国产精品9| 麻豆视频在线观看免费网站 | 亚洲天堂成人av | 亚洲色图欧美自拍 | 97在线观看免费视频 | 国产精品sm调教免费专区 | 婷婷六月激情 | 国产精品自拍偷拍 | a极毛片| 91黄色免费 | 高跟鞋调教—视频|vk | 国产免费专区 | 99国产在线播放 | 伊人网视频在线 | 色桃av | 亚洲av无码一区二区三区dv | 国产超碰人人模人人爽人人添 | 五月色综合 | 日本性猛交| 激情五月色综合国产精品 | 欧美中文字幕在线 | 日本va欧美va精品发布 | 麻豆国产精品视频 | 久草视频在线免费播放 | 91在线视频精品 | 91香蕉视频在线观看免费 | 老牛影视av老牛影视av | 日韩操操 | 红桃视频国产 | 九一在线视频 | 肥臀av | 精品一区二区三区视频在线观看 | 欧美一级做 | 91av在线网站| 成人免费视频视频 | 日本中文在线 | 喷水在线观看 | 国产xx在线观看 | 欧美中文字幕在线播放 | 玉女心经在线看 | 亚洲精品日韩精品 | 啪啪视屏| 丁香花电影在线观看免费高清 | 黄色喷水网站 | 国产激情一区二区三区在线观看 | 日韩a视频| 激情视频亚洲 | 老熟妇一区二区 | 久久久噜噜噜久久 | 女人扒开双腿让男人捅 | 污的网站| 午夜在线你懂的 | eeuss鲁片一区二区三区在线观看 | 日本欧美中文字幕 | av在线电影网 | 一区二区精品区 | 裸体按摩www性xxxcom | 黄色成人免费观看 | 一区www| 他趴在我两腿中间添得好爽在线看 | 狠狠干夜夜爽 | 国产又大又黑又粗免费视频 | 免费人成又黄又爽又色 | 亚洲视频一区在线播放 | 18被视频免费观看视频 | 国产在线国偷精品免费看 | 日韩女同互慰一区二区 | 天海翼av| 国产精品免费在线播放 | 欧美日韩在线播放视频 | 咪咪色影院 | 污污免费视频 | 国产精品色 | 99人人爽 | 青青草原综合网 | 亚洲天堂久久久 | 欧美三级午夜理伦三级小说 | 国产极品免费 | 日韩中文字幕在线播放 | 国产情侣自拍av | 人妻与黑人一区二区三区 | 欧美猛交免费 | 国产免费美女 | 毛片av在线播放 | 亚洲精品456 |