P3041 [USACO12JAN]视频游戏的连击Video Game Combos

P3041 [USACO12JAN]视频游戏的连击Video Game Combos

https://www.luogu.org/problemnew/show/P3041

分析:

  AC自动机。

  建立AC自动机,然后dp[i][j]表示经过了i个字符,到达自动机上j这个位置,的得分。

  那么dp[i-1][j] + val[ch[j][k]] -> dp[i][ch[j][k]]。

  表示从j点,往前走一步,加上新加一个字符产生的贡献。

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4
 5 const int N = 550;
 6 int ch[N][3], fail[N], last[N], val[N], f[1010][N], q[N], L, R, Index = 1;
 7 char s[22];
 8
 9 void Insert(char *s) {
10     int u = 0, len = strlen(s);
11     for (int i=0; i<len; ++i) {
12         int c = s[i] - ‘A‘;
13         if (!ch[u][c]) ch[u][c] = ++Index;
14         u = ch[u][c];
15     }
16     val[u] ++;
17 }
18 void build() {
19     L = 1, R = 0; fail[0] = 0;
20     for (int c=0; c<3; ++c) {
21         int u = ch[0][c];
22         if (u) q[++R] = u, fail[u] = last[u] = 0;
23     }
24     while (L <= R) {
25         int u = q[L++];
26         for (int c=0; c<3; ++c) {
27             int v = ch[u][c];
28             if (!ch[u][c]) {
29                 ch[u][c] = ch[fail[u]][c];
30                 continue;
31             }
32             q[++R] = v;
33             int p = fail[u];
34             while (p && !ch[p][c]) p = fail[p];
35             fail[v] = ch[p][c];
36         }
37         val[u] += val[fail[u]];
38     }
39 }
40
41 int main () {
42
43     int n,m; cin >> n >> m;
44     for (int i=1; i<=n; ++i) {
45         scanf("%s",s);
46         Insert(s);
47     }
48     build();
49     memset(f, -0x3f, sizeof(f));
50     f[0][0] = 0;
51
52     // f[i][j]表示用了i个字符,在自动机的j号位置,可以得多少分
53     for (int i=1; i<=m; ++i)
54         for (int j=0; j<=Index; ++j)
55             for (int k=0; k<3; ++k)
56                 f[i][ch[j][k]] = max(f[i][ch[j][k]], f[i-1][j]+val[ch[j][k]]);
57                 // 从j这个位置,经过字符k到达的点的得分为 经过i-1个点到j的得分+经过i个点到ch[j][k]的得分
58
59     int Ans = 0;
60     for (int i=0; i<=Index; ++i) Ans = max(Ans, f[m][i]);
61     cout << Ans;
62
63     return 0;
64 }

原文地址:https://www.cnblogs.com/mjtcn/p/9356599.html

时间: 2024-10-07 10:26:15

P3041 [USACO12JAN]视频游戏的连击Video Game Combos的相关文章

[USACO12JAN]视频游戏的连击Video Game Combos(AC自动机+DP)

Description 贝西正在打格斗游戏.游戏里只有三个按键,分别是“A”.“B”和“C”.游戏中有 N 种连击 模式,第 i 种连击模式以字符串 Si 表示,只要贝西的按键中出现了这个字符串,就算触发了一次连 击模式.不 同的连击模式是独立计算的,如果几个连击模式同时出现在贝西的按键顺序里,就算有重 叠部分, 也可以同时算作触发了多个模式. 假如有三个连击模式,分别是“AB”,“BA”,“ABC”,而贝西按下了“ABABC”,那么她一共 触发了四次 连击.假设贝西一共可以按 K 次键,那么她

P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles

冲刺阶段的首篇题解! 题目链接:P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles: 题目概述: 总共N个游戏平台,金额上限V元,给出每个游戏平台的价钱和其上游戏数量: 每个游戏有一个花费及愉悦值,求在花费不超上限的情况下,最大的愉悦值. (1 <= N <= 50) (1 <= V <= 100,000) 每个游戏平台价格(1 <= P_i <= 1000) 每个平台游戏数量(1 <= G_i <= 10) 每个游戏价

视频游戏的连击 [USACO12JAN](AC自动机+动态规划)

传送门 默认大家都学过trie与AC自动机. 先求出fail,对于每个节点维护一个sum,sum[u]待表从根到u所形成的字符串能拿到几分.显然sum[u]=sum[fail] + (u是几个字符串的结尾). 设dp[i][j]代表长度为i到trie树上的j号节点所得的最大分数,显然有dp[i+1][j的字符k儿子] = max{dp[i+1][j的字符k儿子], dp[i][j] + sum[j的字符k儿子]} memset(dp, -1, sizeof(dp)); dp[0][1] = 0;

可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK

LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SDK,通过一些不同的配置来创建一些客户端/服务器应用程序.例如,如果有一个服务器需要向多个客户端发送音频/视频数据,那么就可以在服务器上创建这样的应用程序,比如多点传送或Web广播中的web多点传播.此外,当有多个捕捉点向一个源发送视频数据时,您可以创建安全/监控应用程序. 产品特征: 视频会议二进制

html5 音频和视频(audio And video)

1.音频和视频  Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定了一种通过 video 元素来包含视频的标准方法. 视频格式 当前,video 元素支持三种视频格式: 格式    IE Firefox Opera Chrome Safari Ogg     No 3.5+ 10.5+  5.0+ No MPEG4 9.0+  No           No 5.

音视频SDK在网络视频游戏中的应用

随着网游市场是越来越激烈,游戏类型和平台众多,一个优秀的网游可以衍生出电影.图书.卡通等一系列产品,什么样的道具能让全球玩家心甘情愿掏腰包呢网游的开发费用迅猛增长的趋势正成为令开发商头疼的首要问题.能像<魔兽世界>那样大卖特卖的网游越来越少. 现阶段网络游戏在内容已上明显出现情节雷同与操作模仿的倾向,但随着玩家对游戏产品和用户体验的要求不断提高,用户黏性越来越受到挑战.在原有的一些成功的玩法之上,进行有限度的创新.创新不只是内容的创新,针对不同的区域设计出同一款游戏的不同玩法,对玩家来说吸引力

河南稳定大带宽节点专业视频游戏加速的运营商

机房位置: 河南多地市机房 联通万兆 10w/G/年 3-4G保底 95取值 机柜4w/年 电信万兆 12w/G/年 3-4G保底 95取值 机柜4w/年 河南大带宽优质便宜联系方式 联系人:梁永辉 ┏━━━━━━━━━━━━━━━━━━━━┓联系人:梁永辉QQ:177679885 Tel:15617401569 地址:河南省郑州市花园路居易摩根中心2506┗━━━━━━━━━━━━━━━━━━━━┛ 适用群体:视频,直播,企业,站长,下载,门户站,论坛应用等 带宽统计单位是比特/秒(bps),

洛谷 P3041 [USACO12JAN] Video Game Combos

题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only valid buttons. Bessie may press the buttons in any order she likes; however, there are only N distinct combos possible (1 <= N <= 20). Combo i is repr

搭建服务器之www-向外提供视频服务by html5 video标签

搭建好www服务器,主要目的有两个一个是试验下,另一个是想给女朋友个惊喜,给她个带视频的网页,嘿嘿当前测试下相应功能. 1,采用html5的视频功能:bideo标签. 源码如下: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>video with control</title> </head> <body> i lov