正题

题目链接:https://www.luogu.com.cn/problem/AT3950


题目大意

一个包含?,0,1?,0,1?,0,1的长度为奇数的序列,把???替换为0/10/10/1。每次可以选择三个数变成它们的中位数,求有多少种替换方案使得能够把序列最终变为一个111。

1≤∣S∣≤3×1051\leq |S|\leq 3\times 10^51≤∣S∣≤3×105


解题思路

好像是XJXJXJ那边杂题选讲时候的题

考虑优先减少000的数量。考虑一些一定优的情况000−>0,01−>∅000->0,01->\varnothing000−>0,01−>∅。

这样序列就会变为前面都是111,后面是1/21/21/2个000的情况。此时如果111的数量不少于000的数量就可以了。

那么111的数量超过222的部分也没有意义,设fi,jf_{i,j}fi,j​表示现在到底iii个时抵消的前面有iii个111,后面jjj个000时的方案数。显然i,j∈[0,2]i,j\in[0,2]i,j∈[0,2],转移即可。

时间复杂度O(n)O(n)O(n)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=3e5+10,P=1e9+7;
ll f[N][3][3],n,ans;
char s[N];
signed main()
{scanf("%s",s);n=strlen(s);f[0][0][0]=1;for(ll i=0;i<n;i++){for(ll j=0;j<3;j++)//num0 for(ll k=0;k<3;k++){//num1 (0 on the 1)if(s[i]=='?'||s[i]=='0'){if(j==2)(f[i+1][1][k]+=f[i][j][k])%=P;else (f[i+1][j+1][k]+=f[i][j][k])%=P;}if(s[i]=='?'||s[i]=='1'){if(j)(f[i+1][j-1][k]+=f[i][j][k])%=P;else (f[i+1][j][min(k+1,2ll)]+=f[i][j][k])%=P;}}}for(ll j=0;j<3;j++)for(ll k=j;k<3;k++)(ans+=f[n][j][k])%=P;printf("%lld\n",ans);return 0;
}

AT3950-[AGC022E]Median Replace【贪心,dp】相关推荐

  1. AGC022E - Median Replace

    AGC022E - Median Replace 题面描述 Solution 直接构造自动机,模拟每次在末尾加一个字符的当前状态的方案数f[state]f[state]f[state],状态很少,直接 ...

  2. AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)

    题目链接 https://atcoder.jp/contests/agc022/tasks/agc022_e 题解 感觉官方题解很神仙,听完另一种做法之后发现是自己太智障了 考虑一个串怎么样可以缩成 ...

  3. AtCoder3950 [AGC022E] Median Replace(DFA + dp)

    problem solution 可以从 DFA\text{DFA}DFA 的思想来考虑这道题. 考虑建一个 DFA\text{DFA}DFA 只接受最后可以变成字符串 111 的原串. 因为每次是选 ...

  4. URAL 1203 Scientific Conference(贪心 || DP)

    Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给 ...

  5. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  6. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp

    题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...

  7. HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)

    开始还觉得是贪心呢...  给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d  d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面  d=1:你只能把 ...

  8. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]

    巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...

  9. 杭电oj1257最少拦截系统—贪心/dp最大递增子序列

    附上题目链接:杭电oj1257 这个题目有动态规划和贪心两种解决方式. 贪心法1: 对于导弹我们知道只可以从大到小的反导,一个系统必须从大到小排列.那么我们就可以选择从最高的那个导弹入手,往右找仅次于 ...

最新文章

  1. Kirito 的博客崩了,这次是因为...
  2. android用于查询数据的方法,android: SQLite查询数据
  3. django 快速实现完整登录系统(cookie)
  4. 如何让SD-WAN超越MPLS?
  5. js实现返回顶部功能的解决方案
  6. Linux下的shell简介(三)
  7. JavaScript Binding
  8. 新唐M031学习笔记(一)定时器基础计数应用
  9. ListView缓存机制踩过的坑
  10. Ajax+Input的File控件上传时的超级简单实时进度条
  11. Steve Pavlina:如何ASAP找到人生目标?
  12. 论文多个实验时VS或Unity工程需要每次新建吗?
  13. CUDA学习(十一) 利用npp做图像处理
  14. 给Android系统瘦身,安卓优化大师:给系统瘦身
  15. 从软件测试培训班出来之后找工作的经历,教会了我这五件事...
  16. python数字推盘游戏怎么显示步数_Python游戏开发:《最强大脑》同款游戏【数字华容道】...
  17. 国产香氛品牌别样的生意经
  18. vue3:路由守卫(全局守卫、路由独享守卫、组件内守卫)
  19. JAVA API编写
  20. android 调色板_引入Android常用调色板

热门文章

  1. 单文件组件的组件传值_移动端组件化架构(下)
  2. jpa 默认生成sql语句_springboot-jpa自动创建数据库表
  3. 计算机Word应用程序,Word2007目录设置_计算机软件和应用程序_IT /计算机_信息
  4. 计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...
  5. 热力地图高德_高德地图:最新动态
  6. python求函数极值_python 遗传算法求函数极值的实现代码
  7. 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
  8. 突破冯诺依曼原理的计算机,冯诺依曼计算机的基本原理
  9. 创建型模式——原型模式
  10. 自动备份html文件,windows下定期自动备份本地文件(文件夹)