2020年算法设计竞赛 DP
2024-10-19 16:24:50
链接:https://ac.nowcoder.com/acm/contest/3002/I
来源:牛客网
https://ac.nowcoder.com/acm/contest/3002/I
题目描述
"にっこにっこにー" ——nico
nico平时最喜欢说的口头禅是niconiconi~。
有一天nico在逛著名弹幕网站"niconico"的时候惊异的发现,n站上居然有很多她的鬼畜视频。其中有一个名为《让nico为你洗脑》的视频吸引了她的注意。
她点进去一看,就被洗脑了:"niconicoh0niconico*^vvniconicoG(vniconiconiconiconiconicoG(vniconico......"
弹幕中刚开始有很多“nico*1 nico*2”等计数菌,但到后面基本上都是“计数菌阵亡”的弹幕了。
nico也想当一回计数菌。她认为:"nico" 计 分,"niconi" 计 分,"niconiconi" 计 分。
她拿到了一个长度为 的字符串,请帮她算出最大计数分数。
注:已被计数过的字符不能重复计数!如"niconico"要么当作"nico"+"nico"计 分,要么当作"niconi"+"co"计 分。
输入描述:
第一行四个正整数
。
第二行是一个长度为
的字符串。
输出描述:
一个整数,代表最大的计数分数。
示例1
输出
7
说明
"niconi"co"niconiconi"~
故为2+5=7分
#include <bits/stdc++.h>
using namespace std ;
typedef long long LL ;
LL dp[];
int main()
{
int n,a,b,c;
cin>>n>>a>>b>>c;
string s,t;
s.push_back();
cin>>t;
s+=t;
string s1="nico";
string s2="niconi";
string s3="niconiconi";
s[n+]='\0';
for(int i=;i<=n;++i){
dp[i]=dp[i-];
if(i>=&&s.substr(i-,)==s1)
dp[i]=max(dp[i],dp[i-]+a);
if(i>=&&s.substr(i-,)==s2)
dp[i]=max(dp[i],dp[i-]+b);
if(i>=&&s.substr(i-,)==s3)
dp[i]=max(dp[i],dp[i-]+c);
}
cout<<dp[n]<<endl;
return ;
}
最新文章
- There is insufficient system memory to run this query 错误
- java消息推送与接收
- 在SpringMVC中获取request对象的几种方式
- html --- javascript --- div --- 拖拽方块
- 《学习OpenCV》练习题第四章第三题a
- Configure xterm Fonts and Colors for Your Eyeball
- Oracle查看用户所在表空间
- Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记
- mysql语法充电
- javascript--时钟
- 【bzoj3772】精神污染
- Java高新技术 反射机制
- Spring集成Quartz完成定时任务
- qt+opencv 构建项目时报错——no such file or directory
- LOJ#6277. 数列分块入门 1
- leetcode14:最长公共字符串
- hbase 单机版安装
- [JLOI2013]删除物品
- oracle11g的冷热备份
- jquery判断页面元素是否存在的方法