Codeforces Round #423 (Div. 2) E. DNA Evolution(树状数组)

别再只画GO图了!用R语言+Perl脚本搞定单细胞KEGG富集分析与圈图(附完整代码) 本文详细介绍了如何利用R语言和Perl脚本实现单细胞KEGG富集分析全流程,从基因ID转换到专业圈图可视化。通过对比KEGG与GO分析的互补价值,提供完整的代码实现和优化技巧,帮助研究者高效完成单细胞测序数据的通路分析,并生成高质量的圈图展示结果。 阅读详情

题意:

给你一个只包含'A', 'T', 'G', 'C'的字符串,q次操作,有两种操作:

1 x ch : 将x位置改成ch

2 l r e:e为一个长度不超过10的字符串,问eeeee....与字符串的子串[l, r]有多少个匹配的字符(先将e的开头和l对齐)


思路:

一共就4种字符,可以分别考虑每个字符,e长度最大才10,可以分别考虑不同长度的e。

假设e长为len, 那么i , i+len ,i+len*2, i+len*3.....一定是去对应e的相同位置,pos%len相同可以归为一组,一共最多10个位置,所以可以开

10*10*4的树状数组,tree[x][y][z]记录的是e长度为y的对应位置为x的字符为z的数量。


代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;
int tree[12][12][5][maxn], id[256];
char str[maxn], tmp[15];

int lowbit(int x)
{
    return x&(-x);
}

void update(int x, int y, int z, int pos, int val)
{
    while(pos < maxn)
    {
        tree[x][y][z][pos] += val;
        pos += lowbit(pos);
    }
}

int query(int x, int y, int z, int pos)
{
    int sum = 0;
    while(pos)
    {
        sum += tree[x][y][z][pos];
        pos -= lowbit(pos);
    }
    return sum;
}

int main(void)
{
    id['A'] = 0, id['T'] = 1, id['G'] = 2, id['C'] = 3;
    while(cin >> str)
    {
        memset(tree, 0, sizeof(tree));
        int len = strlen(str);
        for(int i = 1; i <= len; i++)
            for(int j = 1; j <= 10; j++)
                update(i%j, j, id[str[i-1]], i, 1);
        int q;
        scanf("%d", &q);
        while(q--)
        {
            int cmd, x, y;
            char ch;
            scanf("%d%d", &cmd, &x);
            if(cmd == 1)
            {
                scanf(" %c", &ch);
                for(int j = 1; j <= 10; j++)
                {
                    update(x%j, j, id[ch], x, 1);
                    update(x%j, j, id[str[x-1]], x, -1);
                }
                str[x-1] = ch;
            }
            else
            {
                scanf("%d %s", &y, tmp);
                int len = strlen(tmp);
                int ans = 0;
                for(int i = 1; i <= len; i++)
                    ans += query((x+i-1)%len, len, id[tmp[i-1]], y)-query((x+i-1)%len, len, id[tmp[i-1]], x-1);
                printf("%d\n", ans);
            }
        }
    }
    return 0;
}
/*
ATGCATGC
4
2 1 8 ATGC
2 2 6 TTT
1 4 T
2 2 6 TA

8
2
4
*/


SAP Fiori Launchpad 自定义层文本翻译实战:精准修正 Tile、Catalog 与 Group 标题 SAP Fiori 项目中,入口层(tile/catalog/group)的翻译问题常被忽视,但其直接影响用户体验。与前端i18n不同,这些文本属于平台配置数据,需通过ABAP标准翻译流程(SE63)处理。关键步骤包括:使用/UI2/FLC定位Text ID和Configuration ID,根据前缀区分Main/Property WD Config Key,在SE63中锁定WDY_CONF_USERT2表对象进行翻译。操作时需注意使用系统源语言环境,翻译完成后可能需要清理缓存。 阅读详情

相关推荐

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 339

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...

花海 387

Hermes-Agent-完整指南

Hermes Agent 是由 **Nous Research** 开发的一款**自我改进型 AI Agent**,具有内置的学习闭环系统。它的核心理念是"一个与你共同成长的 Agent"。- 能够从经验中创建技能(Skill-Learning Automated),在使用过程中自我改进, 跨会话持久记忆, 深度用户建模

liu_zhiyi的博客 3040

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

题目链接 题意:给出一个DNA序列(n<=1e5),有两种操作: 1 x c 表示将x位置的碱基换成c 2 l r e 表示一个询问:e字符串(|e|<=10)在[l,r]区间内循环出现,问有多少个位置的字符相同? 思路:由于要查询的字符串长度很小,我们可以预处理以下,c【x】【y】【z】【i】代表的是对于长度为y的e字符串,第i个字母在e中的对应位置是x,第i个字符串为...

qq_42479630的博客 238

告别繁琐同步:Zotero与Obsidian双向联动新方案(基于Better BibTeX与MarkDBConnect)

本文详细介绍了一套基于Better BibTeX、Bibnotes Formatter和MarkDBConnect插件的Zotero与Obsidian双向联动方案。该方案通过建立智能数据通道,实现文献信息的自动同步与笔记的增量更新,解决了手动同步的繁琐问题,并支持在两大工具间无缝跳转,极大提升了科研和知识管理的工作效率。

weixin_29213827的博客 644

【RK3399】Android平台增加一款声卡设备(ES7210+ES8156),进行录音/播放测试。

文章目录前言一、开发环境二、概述三、硬件介绍1、ES72102、ES81563、数字麦克风阵列4、音频示意图四、下载SDK五、编译、烧写1、u-boot2、kernel3、Android SDK4、烧写分区5、烧写固件六、声卡驱动1、添加codec代码2、修改Kconfig3、修改Makefile4、修改rockchip_defconfig5、修改DTS七、声卡调试1、查看声卡注册信息2、使用tinycap/tinyplay录音和放音3、使用示波器观测八、修改HAL层1、修改默认capture/playba

rentong123的博客 2万+

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

http://codeforces.com/contest/828/problem/E 题意:给你一个字符串s            m次操作 op==1 改变s[pos]位置的字符                             op==2 将字符串e复制无限次 求从l开始s[l] == e[0]  ,s[l+1] == e[1] ...... s[r] == e[r-l]成立

HydraHuYu 499

数理统计四大分布---正态分布、卡方分布、学生t分布和F分布

在统计学上,我们会遇到一些常见的分布,除了正态分布外,,如t检验对应的t分布,检验对应的分布,方差分析对应的F分布等。这些分布是统计学的基础,在假设检验、方差分析等领域都起着至关重要的作用。在此,我们对这四种分布做详细的介绍,并附上MATLAB代码。 四种分布的讲解摘自MATLAB 2016的统计学和机器学习工具箱,有兴趣的可以去查看英文原版。 另外,为了方便,上传文档为图片格式,可能有些模糊...

suncangan的博客 5万+

Codeforces Round #423 E. DNA Evolution (树状数组)

ProblemS 串为 DNA 串(即仅包含字母 ACGT )。有 q 组询问,询问有两种形式: 1 x c 将 S 串中第 x 个位置的字符修改为 c 。 2 l r e ,判断 S 截取区间 [l, r] 的子串,与 e 串的相同位置字符相同的个数。(其中若 e 串长度不足 r−l+1r-l+1 ,则通过 e = e+e 的形式复制加长。 限制条件1 ≤ |S| ≤ 1051 ≤ |S| ≤

DorMOUSENone的博客 770

cocos2dx lua + protobuf

vs 2015 cocos2dx 3.10  lua  protobuf1. 下载 protobuf 源码     https://github.com/bnnswyp/protobuf/tree/master/protobuf-2.5.0    解压后的文件列表如下所示         其中 vsprojects 文件夹为 protobuf 的vs 工程2. 打开 protobuf.sln 编译...

u014486706的博客 2164

【数据集】MODIS 的 MOD07 大气廓线产品概述及下载

MODIS 的 MOD07 大气廓线产品概述及下载

WW、forever的博客 552

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

DNA Evolution 题目让我们联想到树状数组或者线段树,但是如果像普通那样子统计一段的和,空间会爆炸。 所以我们想怎样可以表示一段区间的字符串。 学习一发大佬的解法。 开一个C[10][10][4][n],就可以啦,第二维表示e的长度,第一维表示i%e的长度,第三维表示颜色,第四维求和了。 1 #include <bits/stdc++.h> 2 using...

weixin_34248849的博客 113

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【CF】Codeforces Round #423(Div.1)

Codeforces Round #423(Div.1)

MEET YOU FIRST TIME 1201

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) C DNA Evolution

题目大意: 给出一个字符串S(|S| 先将E的开头和S中的第l个对齐,然后一个一个匹配。如果到了E的结尾,那么将E转到开头,继续匹配。如果S中的位置超过r,则退出。 一道比较简单的C题(然而我并没有打这场) 不难发现,由于字符集很小,我们可以分开考虑每个字符。而询问的位置,显然是只和l和|E|有关。那么我们可以再分开考虑|E|中的每一位。这里可以建立10*10*4个树状数组来解决,线段

流水的博客 478

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【树状数组】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) C. DNA Evolution

题意跟某道我出的等差子序列求最值非常像…… 反正询问的长度只有10种,你就建立10批树状数组,每组的公差是确定的,首项不同。 然后询问的时候只需要枚举询问串的每一位,找找这一位对应哪棵树状数组即可。 修改的时候会在10棵树状数组里修改,也是算算修改的位置对应哪一棵即可。 要注意,一共有4种字符,每个树状数组其实分成4个,就只需要单点修改,维护前缀和了…… #include<cs...

weixin_33735077的博客 108

第八届蓝桥杯 k倍区间(前缀和)

标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入 ----- 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <=

CillyB的博客 3145

ZOJ 3954 Seven-Segment Display(思维)

Seven-Segment Display Time Limit: 1 Second      Memory Limit: 65536 KB A seven segment display, or seven segment indicator, is a form of electronic display device for displaying decimal numera

CillyB的博客 1804

ZOJ 3956 Course Selection System(01背包)

Course Selection System Time Limit: 1 Second      Memory Limit: 65536 KB There are n courses in the course selection system of Marjar University. The i-th course is described by two values: ha

CillyB的博客 959

2017 Multi-University Training Contest - Team 2 1009 HDU 6053 TrickGCD(分段 容斥)

题意:给你n个数字,每个位置的数可以小于等于a[i],求所有区间gcd(l,r)都满足大于等于2的方案数 思路:我们可以枚举gcd,然后a[i]/gcd就是i位置能够填的数的个数,然后每个位置累乘起来就能得到数列为gcd时的方案数。但是这 样是n^2复杂度,显然会T,因为a[i]/cgd有许多是相同的,我们可以将相同的一起考虑,这可以用前缀和和快速幂解决。这样算完之 后显然计算了许多

CillyB的博客 902

2017 四川省赛 L.Nice Trick(递推 DP)

思路: 方法一:因为已经告诉你了n个取3个的乘积和,所以可以利用这个公式递推,ans[i] = ans[i-1]+S(i-1,3)*a[i] 方法二:设 f(i, j) 表示在前 i 数里面挑 j 个乘起来的总和,那么f(i, j) = f(i − 1, j) + f(i − 1, j − 1) × ai 方法一代码: #include #include #incl

CillyB的博客 897

2017 Multi-University Training Contest - Team 1 1006 Function(思维 循环节)

题意:给你一个序列a,是0到n-1的一个排列,给你一个序列b,是0到m-1的一个排列,问你有多少种不同的函数关系满足:f[i] = b[f[a[i]]] (0 官方题解:考虑置换 aa 的一个循环节,长度为 ll ,那么有 $f(i) = b_{f(a_i)} = b_{b_{f(a_{a_i})}} = \underbrace{b_{\cdots b_{f(i)}}}_{l\te

CillyB的博客 861

FZU 2252 Yu-Gi-Oh! (思维 枚举 贪心)

另一个平行宇宙的YellowStar,是一名游戏王决斗者,某一天它正在进行一场决斗,它的场面上拥有A只磁石战士a,B只磁石战士β,C只磁石战士γ。 现在它要把这些怪物进行一波强力的融合,并且它知道: 将磁石战士a和β融合成为磁石战士aβ,战斗力为AB 将磁石战士a和γ融合成为磁石战士aγ,战斗力为AC 将磁石战士β和γ融合成为磁石战士βγ,战斗力为BC 由于Yello

CillyB的博客 850

CodeForces 652C Foe Pairs(思维)

题意:给你1-n的一个排列和m对关系,问有多少区间不包含任意一个关系。 思路:用一个数组表示每个数字可以向右延生的最大长度,也就是右边哪些点可以和这个数字形成一个区间。 注意:在给定关系,更新完数组之后,要从后往前再更新一次。左端点小的能到的最远位置不能超过左端点比他大的最远点。比如 一个数组,1 2 3 4 有一对2 3关系,那么第一遍更新后的最远位置是 4 2 4 4, 但1

CillyB的博客 794

之江学院2017ACM 校赛 Problem M: qwb与二叉树(记忆化搜索)

Description 某一天,qwb正在上数据结构课。老师在讲台上面讲着二叉树,qwb在下面发着呆。 突然qwb想到一个问题:对于一棵n个无编号节点,m个叶子的有根二叉树,有多少种形态呐?你能告诉他吗? Input 多组输入,处理到文件结束,大约有104组数据。 每一组输入一行,两个正整数n,m(0≤m≤n≤50),意义如题目所述。 Output 每一行输出

CillyB的博客 773
上一篇: 计蒜客 2017 复赛 腾讯消消乐 (状压dp)
下一篇: 51nod 1396 还是01串 (思维or前缀和)
cillyb
博客等级 码龄11年 225粉丝 497原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值