当前位置: 首页 > 编程日记 > 正文

【Luogu3041】视频游戏的连击(AC自动机,动态规划)

题面链接

题解

首先构建出AC自动机
然后在AC自动机上面跑DP
转移很显然从Trie树的节点跳到他的儿子节点
但是要注意一个问题,
在计算的时候,每一个节点加入后能够
造成的贡献
要加上他的子串的贡献
至于DP:
设f[i][j]表示已经使用了i个字母
当前在Trie树的第j个节点上面能够产生的最大贡献
很显然,转移到他的儿子节点上面,同时统计贡献即可

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
#define INF 1000000
int N,K;
int tot=0,ans;
char s[20];
int f[1100][400];
struct Node
{int vis[3];int p;int fail;
}t[5000];
void Add(char *s)
{int l=strlen(s);int now=0;for(int i=0;i<l;++i){if(!t[now].vis[s[i]-'A'])t[now].vis[s[i]-'A']=++tot;now=t[now].vis[s[i]-'A'];}t[now].p++;
}
void Build()
{queue<int> Q;for(int i=0;i<3;++i)if(t[0].vis[i])Q.push(t[0].vis[i]);while(!Q.empty()){int u=Q.front();Q.pop();for(int i=0;i<3;++i){if(t[u].vis[i]){t[t[u].vis[i]].fail=t[t[u].fail].vis[i];Q.push(t[u].vis[i]);}elset[u].vis[i]=t[t[u].fail].vis[i];}t[u].p+=t[t[u].fail].p;}
}
void DP()
{for(int T=0;T<=K;++T)for(int i=1;i<=tot;++i)f[T][i]=-INF;for(int T=1;T<=K;++T)for(int i=0;i<=tot;++i)for(int j=0;j<3;++j)f[T][t[i].vis[j]]=max(f[T][t[i].vis[j]],f[T-1][i]+t[t[i].vis[j]].p);for(int i=0;i<=tot;++i)ans=max(ans,f[K][i]);
}
int main()
{scanf("%d%d",&N,&K);for(int i=1;i<=N;++i){scanf("%s",s);Add(s);}Build();DP();printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/7647485.html

相关文章:

拥抱高效、拥抱 Bugtags 之来自用户的声音(三)

小编按&#xff1a;这是一篇 Bugtags 用户来稿&#xff0c;主要是介绍了使用 Bugtags 前后对测试及解决 Bug 所带来的变化&#xff0c;感谢山西农业大学 - 高正炎同学对 Bugtags 的信赖和支持。小编在这里诚邀各位热心用户向我们投稿&#xff0c;说出你使用 Bugtags 的故事。 0…

小程序打开文档标题乱码处理

先下载&#xff0c;自定义临时文件目录名称&#xff0c;然后再打开就可以了。 wx.downloadFile({url: https://xxx.cn/sfxy.docx, //仅为示例&#xff0c;并非真实的资源filePath: wx.env.USER_DATA_PATH /这是自定义标题.docx,success(res) {console.log(0, res)wx.openDocum…

我是“真正的”软件工程师吗?

by Sun-Li Beatteay通过孙丽贝蒂 我是“真正的”软件工程师吗&#xff1f; (Am I a “real” Software Engineer yet?) Am I a “real” Software Engineer yet?我是“真正的”软件工程师吗&#xff1f; This question has haunted me for years. And it seems I’m not al…

ntpdate[31915]: the NTP socket is in use, exiting

[rootmaster local]# ntpdate cn.pool.ntp.org 10 Oct 13:24:36 ntpdate[31915]: the NTP socket is in use, exitingcron 作业中运行 ntpdate&#xff0c;以便大约每隔一小时就设置一次本地时间。最近&#xff0c;我每次运行该命令时都会收到下列错误消息。 ntpdate[31915]: t…

小程序云开发更新数组的指定对象的值

云开发&#xff0c;在小程序实现 代码说明‘&#xff1a; 在这里&#xff0c;数据集合 groupList 中的 userList 是一个用户列表数组&#xff0c;我要更新数组中&#xff0c;openid 等于我的openid 的在线状态为 true。 先查询条件&#xff0c;集合里面的 _id 等于我传的id&a…

Unreal Engine 4 RenderTarget制作Live Camera效果

Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果&#xff1a; Live Camera我不知道怎么翻译。反正意思就是将一个摄影机的Image渲染到一个2D平面上。 以下介绍下详细的实现方法&#xff1a; 1.创建一个Scene Capture 2D对象 将这个对象拖动到合适的地方。2.创建Re…

领导让我重构代码_领导不是由代码构成

领导让我重构代码The team leader is a key figure in a team of developers. It is a difficult role, involving both technical and social skills. This is the reason why not everyone is tailored for it.团队负责人是开发人员团队中的关键人物。 这是一项艰巨的任务&am…

Spring学习-理解IOC和依赖注入

最近刚买了一本介绍ssm框架的书&#xff0c;里面主要对Mybatis、spring、springmvc和redis做了很多的讲解&#xff0c;个人觉得虽然有的内容我看不懂&#xff0c;但是整体上还是不错的。最近正在学习中&#xff0c;一边学习一边做一些总结&#xff0c;现在我对这些思想技术还没…

windows server2012怎样关机怎样重启-详细教程

|浏览&#xff1a;1991|更新&#xff1a;2014-12-15 17:33123456分步阅读百度经验:jingyan.baidu.com windows server2012和以往有些不同&#xff0c;关机/重启按钮不是在左边&#xff0c;甚至左边的“开始”都不见了&#xff0c;那怎样关机/重启呢&#xff1f;这里开始演示&am…

封装 localStorage 缓存,兼容网页,微信小程序,uni-app

封装的缓存功能&#xff0c;兼容网页&#xff0c;微信小程序&#xff0c;uni-app 使用&#xff0c;支持设置缓存&#xff0c;获取缓存&#xff0c;移除缓存&#xff0c;清空缓存&#xff0c;设置缓存时间&#xff0c;分组缓存设置。 把最下面的 Str4.js 代码拷贝到项目内可以直…

考csp所需算法_CSP vs RxJS:您所不知道的。

考csp所需算法by Kevin Ghadyani通过凯文加迪亚尼(Kevin Ghadyani) CSP vs RxJS&#xff1a;您所不知道的。 (CSP vs RxJS: what you don’t know.) CSP发生了什么&#xff1f; (What happened to CSP?) You probably clicked this article thinking “what is CSP?” It’s…

iOS蓝牙4.0开发例子

1建立中心角色 123#import <CoreBluetooth/CoreBluetooth.h> CBCentralManager *manager; manager [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 2扫描外设&#xff08;discover&#xff09; [manager scanForPeripheralsWithServices:nil options:…

Spark Shuffle原理解析

Spark Shuffle原理解析 一&#xff1a;到底什么是Shuffle&#xff1f; Shuffle中文翻译为“洗牌”&#xff0c;需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算。 二&#xff1a;Shuffle可能面临的问题&#xff1f;运行Task的时候才会产…

云开发使用 got 的 get/post 传参请求示例代码

使用 got 进行网络请求的步骤&#xff1a; 1.创建云函数&#xff0c;并在终端执行云函数 2.执行 npm 安装 got &#xff0c;命令&#xff1a;cnpm install --save got 3.在云函数中使用 示例代码&#xff1a; // 云函数入口文件 const cloud require(wx-server-sdk) cons…

JavaScript词法作用域的简单介绍

by Michael McMillan迈克尔麦克米兰(Michael McMillan) JavaScript词法作用域的简单介绍 (An easy intro to Lexical Scoping in JavaScript) Lexical scoping is a topic that frightens many programmers. One of the best explanations of lexical scoping can be found in…

Flex 布局详解 - 转自阮一峰老师

Flex 是 Flexible Box 的缩写&#xff0c;意为"弹性布局"&#xff0c;用来为盒状模型提供最大的灵活性。任何的盒子都可以使用它。 下面我们来看一下使用 Flex 布局的容器的属性 flex-direction flex-wrap flex-flow justify-content align-items align-content 1.…

bzoj 1086: [SCOI2005]王室联邦

Description “余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省&#xff0c;每个省都由他们王室联邦的一个成员来管理。他的国家有n个城市&#xff0c;编号为1..n。一些城市之间有道路相连&#xff0c;任意两个不同的城市之间有且仅有一条直接或间接的道路。为…

在7分钟内深刻理解咖喱

Eric Elliott’s exceptional Composing Software series is initially what got me excited about functional programming. Its a must-read. 埃里克埃利奥特(Eric Elliott)杰出的合成软件系列最初使我对函数式编程感到兴奋。 这是必读的。 At one point in the series, he …

github后端开发面试题大集合(一)

作者&#xff1a;小海胆链接&#xff1a;https://www.nowcoder.com/discuss/3614?type0&order0&pos5&page0?fromwb来源&#xff1a;牛客网 转载自github&#xff0c;中文--->链接在这&#xff0c;英文---->链接在这文章较长&#xff0c;我把它拆分了三个部…

微信小程序左滑删除效果的实现完整源码附效果图

效果图&#xff1a; 功能描述&#xff0c;小程序列表左滑删除功能的实现完整源代码实现&#xff1a; <view wx:for{{friends}} wx:key"" wx:if{{groupType4}} catchtap"nav_oneChat" id"{{item._id}}" class"item p_r" style"…

Eclipse下修改工程名

一。 右键工程&#xff1a;Refactor->Rename&#xff0c;或选中工程按F2&#xff0c;修改名称 二。右键工程&#xff1a;Properties->Web Project Settings,修改Context Root三。1.找到项目所在位置&#xff08;如图&#xff09;&#xff1a; 2.修改项目目录/.setting目录…

git操作手册_基本的Git手册

git操作手册介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about Git including:嗨&#xff01; 我是Sanjula &#xff0c;在本指南中&#xff0c;我希望教您一些有关Git的知识&#xff0c;包括&#xff1a; What Git is 什么是…

PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑

前言 绝大多数网站都集成了第三方登录&#xff0c;降低了注册门槛&#xff0c;增强了用户体验。最近看了看 QQ 互联上 QQ 登录的接口文档。接入 QQ 登录的一般流程是这样的&#xff1a;先申请开发者 -> 然后创建应用&#xff08;拿到一组 AppId 和 AppKey&#xff09;-> …

npm全局环境变量配置,全局配置cnpm

今天新电脑想安装node.js &#xff0c; 发现最新版本的node.js已经不支持win7了&#xff0c;但是又不想换系统&#xff0c;所以找了个旧版本&#xff0c;这里不多说了。如果找不到旧版本的node下载&#xff0c;可以去我的QQ交流群文件里面下载&#xff0c;QQ群号&#xff1a;17…

NTFS for Mac OS X:使用Brew安裝NTFS-3G

在最新的OSX系統中&#xff0c;其實已經完整兼容NTFS文件系統&#xff0c;只是出於安全考慮默認是以只讀模式掛載NTFS分區的&#xff0c;可以透過diskutil查詢硬碟UUID&#xff0c;重新以讀寫(rw)權限掛載&#xff0c;具體的可以參照這裡 當然&#xff0c;也有現成的軟體幫助你…

javascript开关_JavaScript开关案例简介

javascript开关In this short article, I will introduce you to JavaScript switch cases and how to use them with practical examples.在这篇简短的文章中&#xff0c;我将向您介绍JavaScript切换案例以及如何通过实际示例使用它们。 This article will explain better wi…

C++中一个class类对象占用多少内字节(7个例子,很清楚)

一个空的class在内存中多少字节&#xff1f;如果加入一个成员函数后是多大&#xff1f;这个成员函数存储在内存中什么部分&#xff1f; 一个Class对象需要占用多大的内存空间。最权威的结论是&#xff1a; *非静态成员变量总合。 *加上编译器为了CPU计算&#xff0c;作出的数据…

Java学习----到底调用哪一个方法(多态)

public class Father {public void print() {System.out.println("Father:print()");} } public class Son extends Father{// 方法的覆盖&#xff1a;子类重写父类的同名方法 Overridepublic void print() {System.out.println("Son:print()");}// Father…

mpvue 转uni-app 操作记录

1.创建一个uni-app 的项目&#xff0c;把原有的mpvue项目手动迁移过来 2.用到mpvue特性的代码&#xff0c;需要修改成uni-app 兼容的&#xff0c;例如 mpvue-wxparse 可以修改成 3.src/app.json 改成 pages.json ,路径格式需要改&#xff0c;如下格式 {"pages": [&…

桌面应用程序 azure_Azure Logic应用程序用例–黑色星期五

桌面应用程序 azureThis blog gives an overview of how Azure Serverless technologies came to rescue when the custom-built integration system went down. Also, it shows the high-level architecture solution built using Azure Serverless services like Logic Apps,…