【子序列+状压DP】ABC308 E MEX

news2024/11/15 8:31:43

这应该算是很套路的题,照理说是要做出来的

E - MEX (atcoder.jp)

题意:

思路:

首先,三元组很容易让我们联想到枚举中间那个元素,但是在这道题中不是这么搞的

可以注意到,题目是要我们统计所有子序列"MEX"对应的贡献

因此我们可以考虑子序列DP

第一维可以表示前M,前ME,前MEX的状态

但是随着每个位置的ai值不同,每个"MEX"子序列的mex贡献也是不一样的,所以我们可以考虑记录所有012排列的mex值,这个可以状压处理一下

Code:

#include <bits/stdc++.h>

#define int long long

using namespace std;

const int mxn=2e5+10;
const int Inf=0x3f3f3f3f;

string s;

int N;
int a[mxn],v[10]=
{0,1,0,2,0,1,0,3,0,0};
int dp[4][10];

void solve(){
    cin>>N;
    for(int i=1;i<=N;i++) cin>>a[i];
    cin>>s;
    s=" "+s;
    dp[0][0]=1;
    for(int i=1;i<=N;i++){
        if(s[i]=='M'){
            for(int j=0;j<8;j++){
                dp[1][j|(1<<a[i])]+=dp[0][j];
            }
        }else if(s[i]=='E'){
            for(int j=0;j<8;j++){
                dp[2][j|(1<<a[i])]+=dp[1][j];
            }
        }else{
            for(int j=0;j<8;j++){
                dp[3][j|(1<<a[i])]+=dp[2][j];
            }
        }
    }
    int ans=0;
    for(int j=0;j<8;j++) ans+=dp[3][j]*v[j];
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int __=1;//cin>>__;
    while(__--)solve();return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WinSCP脚本实现将jar包一键上传Ubuntu并docker部署

准备 首先&#xff0c;在Ubuntu写一个.sh脚本用于自动更新jar包的docker容器和镜像&#xff0c;然后在Windows写一个.bat脚本用于上传jar包并运行.sh脚本。 deploy.sh # Kill容器 docker kill demo# 删除容器 docker rm demo# 删除镜像 docker rmi my/demo# 构建镜像 docker b…

Spring事务@Transactional常见的8种失效场景(通俗易懂)

前言&#xff1a;在日常的开发过程中&#xff0c;多多少少会遇到Spring事务失效导致的一些事故&#xff0c;本篇主要通过具体的案例分析来讲解常见的8种失效的场景&#xff0c;让阅读者通俗易懂的明白每一种事务失效的原因&#xff0c;知其然并知其所以然&#xff01; 目录 一…

Java——《面试题——Git篇》

全文章节 Java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java——…

初识操作系统以及Linux常用指令(上)

目录 一&#xff1a;操作系统简介 二&#xff1a;Linux简介 Linux是什么 Linux的作用 非图形化的Linux界面 Linux环境的搭建 三&#xff1a;Linux下的文件结构 ⭐Linux组织文件的结构为多叉树 文件路径 Linux下的隐藏文件 四&#xff1a;Linux基础指令 创建用户相…

实践:devops之云主机模式持续部署(ci-cd)

实践&#xff1a;devops之云主机模式持续部署(ci-cd) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 0、流程分析 2条Jenkins pipeline CI pipeline CD pipeline 标准规范 项目规范与总体设计 公司里面要使用流水线要做持续集成CI/CD的项目越来…

02-基础入门-数据包拓展

基础入门-数据包拓展 基础入门-数据包拓展1、http/https数据包&#xff08;1&#xff09;HTTP协议是什么&#xff1f;&#xff08;2&#xff09;HTTP原理&#xff08;3&#xff09;HTTP特点&#xff08;4&#xff09;URI和URL的区别&#xff08;5&#xff09;HTTP报文组成&…

IP路由协议(RIP、IGRP、OSPF、IS-IS、BGP)

文章目录 1、路由分类2、RIP协议1&#xff09;RIP的工作原理2&#xff09;RIP路由表的更新过程3&#xff09;RIP路由表的更新原则4&#xff09;RIP的特性5&#xff09;RIP协议的版本 4、IGRP协议1&#xff09;IGRP路由表的更新2&#xff09;IGRP的度量标准 5、OSPF协议1&#x…

Java【动态规划】斐波那契数列模型, 图文详解 + 代码

文章目录 一、第 N 个泰波那契数1, 题目2, 思路分析2.1, 状态表示2.2, 状态转移方程2.3, 初始化2.4, 填表顺序2.5, 返回值 3, 代码 二、三步问题1, 题目2, 思路分析2.1, 状态表示2.2, 状态转移方程2.3, 初始化2.4, 填表顺序2.5, 返回值 3, 代码 三、1, 题目2, 思路分析2.1, 状态…

Redis 高可用和优化

目录 一&#xff1a;Redis 高可用 二&#xff1a; Redis 持久化 1、持久化的功能 2、Redis 提供两种方式进行持久化 3、 RDB 持久化 &#xff08;1&#xff09;触发条件 &#xff08;1.1&#xff09;手动触发 &#xff08;1.2&#xff09;自动触发 &#xff08;1.3&am…

软件测试岗位之大厂到底有多累?

今天给大家分享两个朋友的故事&#xff0c;他们分别在国内两家顶尖的互联网大厂&#xff0c;一个在头条&#xff0c;一个在蚂蚁。 头条的故事 头条的主人公&#xff0c;在入职后的一年里&#xff0c;晚上十点半下班是比较早了&#xff0c;基本上都是十一点半左右下班&#xff…

Redmi4X刷入Ubuntu touch真正成为一台远程无需人操作的云服务器(就是配置垃圾)

前言 前几天把高一买的手机相册和文件拷贝到了电脑上&#xff0c;寻思这旧手机还能干嘛&#xff0c;搜了一下有做监控的&#xff0c;行车记录仪的&#xff0c;最后决定还是做Linux服务器香啊。用了一天时间参考网上的教程做完了&#xff0c;自己再做一下总结和一些弯路记录。 …

ctemplate

参考安装 原理&#xff1a; 如何使用&#xff1f; // test_ctemplate.cc #include <iostream> #include <string> #include <ctemplate/template.h>int main() {std::string in_html "./test.html";std::string value "一行白鹭上青天&q…

一、设计模式的作用和六大原则

文章目录 引言1.设计模式1.1 设计模式的目的1.2 设计模式六大原则1.2.1 单一职责原则&#xff08;类、方法和接口&#xff0c;保持职责单一性&#xff0c;如:Activity和Adapter分成两个类&#xff09;1.2.2. 开闭原则&#xff08;扩展开放&#xff0c;修改关闭&#xff1b;如&a…

python 数字进制

python 数字进制 1、数学中进制对应代码2、Python进制转换函数 1、数学中进制对应代码 十六进制&#xff1a; 0x11 八进制&#xff1a; 0o11 二进制&#xff1a; 0b11 十进制&#xff1a; 11&#xff08;啥都不加默认为十进制&#xff09; #!/usr/bin/python # -*- coding: UTF…

第133页的gtk+编程例子——编写计算器应用

第133页的gtk编程例子——编写计算器应用 以下gtk编程例子是来自书籍《实用技术&#xff1a;开发Linux应用——用GTK和GDK开发Linux图形用户界面应用》第133页的内容——编写计算器应用 例子程序是在gtk2.0编译的&#xff0c;已经修改许多地方才能在gtk3.0编译通过&#xff0c…

数学建模——插值(上)

本文是面向数学建模准备的&#xff0c;是介绍性文章&#xff0c;没有过多关于原理的说明&#xff01;&#xff01;&#xff01; 插值方法简介 插值问题 已知区间[a,b]上有系列观测值(xi,yi),i0,1,2,…,n&#xff0c;求一条曲线把这些点依次连接起来&#xff0c;称为插值&#…

在idea中高并发下的分布式锁以及解决方法

案例:1.互联网秒杀 2.抢优惠卷 3.接口幂 引入pom文件 <packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEA…

分布式软件架构——客户端缓存

浏览器的客户端缓存 当万维网刚刚出现的时候&#xff0c;浏览器的缓存机制差不多就已经存在了。在 HTTP 协议设计之初&#xff0c;人们便确定了服务端与客户端之间“无状态”&#xff08;Stateless&#xff09;的交互原则&#xff0c;即要求客户端的每次请求是独立的&#xff…

MySQL环境搭建(Windows电脑)

MySQL环境搭建-Windows电脑篇 软件获取&#xff1a; 搜索gzh【李桥桉】&#xff0c;需要win电脑安装包&#xff0c;回复【win-MS】。 搜索gzh【李桥桉】&#xff0c;需要mac电脑安装包&#xff0c;回复【mac-MS】。 注意&#xff1a;确保电脑为64位系统&#xff08;不是的话需要…

华为手环8相册表盘使用指南

随着科技的发展&#xff0c;智能手环已经成为越来越多人的选择。华为手环8作为一款备受好评的智能手环&#xff0c;不仅具备精准的监测功能&#xff0c;还拥有丰富的表盘样式。本文将向您介绍华为手环8如何使用相册表盘&#xff0c;通过这一功能&#xff0c;您可以轻松地将您的…