zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    小学生入门激光SLAM<二>、2.1-前端点云帧间匹配
    小学生入门激光SLAM<一>、激光雷达去除畸变
    imgui开发笔记<1>、ubuntu环境下快速应用
    ROS问题记录
    LibTorch实战六:U2-Net理论详解<一>
    git-clone小技巧
    深度学习模型部署概述
    debian10 docker 安装 jenkins
    FastDFS集群部署
    python中的metaclass
  • 原文地址:https://www.cnblogs.com/baocong/p/7209344.html
Copyright © 2011-2022 走看看