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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组

發布時間:2025/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:

http://codeforces.com/contest/828/problem/E

題解:

給你一個字符串s? q次操作 op==1 改變s[pos]位置的字符? op==2 將字符串e復制無限次 求從l開始s[l] == e[0]? ,s[l+1] == e[1] ...... s[r] == e[r-l]成立的有多少個

題解:

開一個C[10][10][4][n],第二維表示e的長度,第一維表示i%e的長度,第三維表示顏色,第四維求和了

代碼:

31 int T[12][12][4][MAXN]; 32 int n; 33 34 void add(int a, int b, int c, int d, int x) { 35 while (d <= n) T[a][b][c][d] += x, d += d&-d; 36 } 37 38 int sum(int a, int b, int c, int d) { 39 int res = 0; 40 while (d) res += T[a][b][c][d], d -= d&-d; 41 return res; 42 } 43 44 int main() { 45 ios::sync_with_stdio(false), cin.tie(0); 46 map<char, int> mmp; 47 mmp['A'] = 0; 48 mmp['T'] = 1; 49 mmp['G'] = 2; 50 mmp['C'] = 3; 51 string s; 52 cin >> s; 53 n = s.length(); 54 rep(i, 0, n) rep(j, 1, 11) add(i%j, j, mmp[s[i]], i + 1, 1); 55 int q; 56 cin >> q; 57 while (q--) { 58 int k; 59 cin >> k; 60 if (k == 1) { 61 int x; 62 char c; 63 cin >> x >> c; 64 x--; 65 rep(j, 1, 11) { 66 add(x%j, j, mmp[s[x]], x + 1, -1); 67 add(x%j, j, mmp[c], x + 1, 1); 68 } 69 s[x] = c; 70 } 71 else { 72 int l, r; 73 string e; 74 cin >> l >> r >> e; 75 l--, r--; 76 int len = e.length(); 77 int res = 0; 78 rep(i, 0, len) 79 res += sum((l + i) % len, len, mmp[e[i]], r + 1) 80 - sum((l + i) % len, len, mmp[e[i]], l); 81 cout << res << endl; 82 } 83 } 84 return 0; 85 }

?

轉載于:https://www.cnblogs.com/baocong/p/7209344.html

總結

以上是生活随笔為你收集整理的Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。