ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF1609E William The Oblivious (2400) (线段树+DP)

2022-03-19 15:33:24  阅读:161  来源: 互联网

标签:ab 线段 pos William 修改 CF1609E 1e5 2400 区间


https://codeforces.com/contest/1609/problem/E

给你长为1e5的只含a,b,c的字符串,有1e5个修改(pos, c),每次将pos位置的字母改成c,每次修改后输出:将该字符串改为subsequence中不含abc的最小修改次数。

  • 在线区间修改查询容易想到线段树,考虑线段树维护怎样的信息,父子之间怎样转移?
  • t[rt].s 表示编号rt的区间,使其变为不含子序列s的最小操作数
    以ab为例,要使右区间留有b,左区间不能含a,且右区间没有ab,要使左区间留有a,右区间不能含b,且左区间没有ab
    t[k].a=t[k<<1].a+t[k<<1|1].a;
    t[k].b=t[k<<1].b+t[k<<1|1].b;
    t[k].c=t[k<<1].c+t[k<<1|1].c;
    t[k].ab=min(t[k<<1].ab+t[k<<1|1].b,t[k<<1].a+t[k<<1|1].ab);
    t[k].bc=min(t[k<<1].bc+t[k<<1|1].c,t[k<<1].b+t[k<<1|1].bc);
    t[k].abc=min({t[k<<1].abc+t[k<<1|1].c,t[k<<1].ab+t[k<<1|1].bc,t[k<<1].a+t[k<<1|1].abc});

标签:ab,线段,pos,William,修改,CF1609E,1e5,2400,区间
来源: https://www.cnblogs.com/muscletear/p/16026667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有