日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91黄视频在线观看 | 久久国产夫妻 | 韩产日产国产欧产 | 老妇裸体性激交老太视频 | 无套内谢老熟女 | 69综合| 久久精品无码中文字幕 | 嫩草影院国产 | 18av在线播放 | 九热视频在线观看 | 色老太hd老太色hd | 亚洲精品.www| 天堂在线中文字幕 | 日批视频在线看 | 色诱视频在线观看 | 青青草超碰在线 | 91精品国自产在线观看 | 亚洲熟区| 国产精品第100页 | 欧美久久视频 | 美女啪啪免费视频 | 欧美影院| 日韩a视频| 国内久久久久 | 亚洲tv在线观看 | 欧美一级久久久 | 欧美干干干 | a∨视频 | 红色假期黑色婚礼2 | 日韩精品免费在线 | 波多野在线观看 | 精品国产一区一区二区三亚瑟 | 欧美妞干网 | 一卡二卡久久 | 亚洲人体在线 | 国产精品自在线 | 国产精品欧美精品 | 久久久久中文字幕亚洲精品 | 日韩一区二区三区在线观看 | 欧美日一区二区 | 9色在线| 精品久久久久久久久久久久久久久 | 亚洲综合婷婷久久 | 91黄在线看 | 国产一区二区三区视频播放 | 亚洲人交配视频 | 免费国产在线视频 | 综合天堂av久久久久久久 | 一本无码aⅴ久久久国产 | 日韩成人自拍 | 一区二区三区黄色片 | 狠狠干2018| 中文字字幕在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 天天射夜夜爽 | 邻家有女4完整版电影观看 欧美偷拍另类 | 国产91久久婷婷一区二区 | 前任攻略在线观看免费完整版 | 绿帽人妻精品一区二区 | 九九午夜| 岛国av一区二区 | 欧美成人一区二区三区片免费 | 日本理论片 | 成年人性生活免费视频 | 懂色av一区二区三区在线播放 | 国产伊人精品 | 成人免费毛片色戒 | 欧美插插视频 | 国产午夜免费视频 | 看国产毛片 | 蜜桃aaa| 欧美成人aaaaⅴ片在线看 | 4438国产精品一区二区 | 91免费入口 | 国产18页 | 国产一区二区h | 久久久综合久久 | 国产三级三级在线观看 | 伊人久久久久久久久久久久久 | 亚洲一区二区三区四区av | 国产美女主播视频 | 一本大道东京热无码 | 亚洲18在线看污www麻豆 | 国产91丝袜在线播放0 | 欧美日本高清 | 欧美亚洲激情 | 青青在线视频观看 | 超碰在线影院 | 亚洲天堂精品视频 | 国产精品美女久久久久av超清 | 精品少妇久久久久久888优播 | 亚洲成人77777 | 午夜啪啪福利 | 精品久久不卡 | 日本成人在线播放 | 99久久一区 | 麻豆视频免费网站 | 一区二区三区黄色片 | 人妻少妇被猛烈进入中文字幕 |