洛谷1371 NOI元丹
来源:互联网 发布:软件测试英文工作报告 编辑:程序博客网 时间:2024/05/17 05:16
题目描述
小A打算开始炼NOI元丹(什么鬼),据说吃了可以提高NOI时的成绩。
是这么练的。元丹有三种元核,’N’,’O’,’I’。现有很多个这样原核,按顺序排成一行。炼元丹时,从左往右分别挑出’N’,’O’,’I’三个原核吞下。
现在他关心,有几种服用方式……且慢!
他觉得服用方式太少,以至于不能成仙。所以他可以通过某个途径,得到’N’,’O’,’I’的三种原核中的任意一个,至于哪一种由他决定。然后他将获得这个原核的插入到这一排原核中的任意位置(包括最前最后)。
现在你要知道,新的元核序列中能有多少种’N’,’O’,’I’的取出方式。子串的字母并不要求连续。 输入输出格式 输入格式:
第一行,一个整数N,表示字符串的长度。
第二行,一行字符串,里面只有只有’N’,’O’,’I’三种字母。
输出格式:
表示出最多可以提炼出来的NOI元丹的方案种数。
正着扫一遍求出f[i][0/1/2]表示前i个,’N’ ‘NO’ ‘NOI’的个数,
倒着扫一遍求出g[i][0/1/2]表示i..n,’I’ ‘OI’ ‘NOI’的个数。
N一定加在开头,I一定加在末尾,枚举O的位置,总复杂度O(n)。
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;#define LL long longLL f[100010][3],g[100010][3];int a[100010],n;char s[100010];int main(){ int i,j,k,p,q,x,y,z; LL ans; scanf("%d",&n); scanf("%s",s+1); for (i=1;i<=n;i++) if (s[i]=='O') a[i]=1; else if (s[i]=='I') a[i]=2; for (i=1;i<=n;i++) { f[i][0]=f[i-1][0]; f[i][1]=f[i-1][1]; f[i][2]=f[i-1][2]; if (!a[i]) f[i][0]++; if (a[i]==1) f[i][1]+=f[i-1][0]; if (a[i]==2) f[i][2]+=f[i-1][1]; } for (i=n;i;i--) { g[i][0]=g[i+1][0]; g[i][1]=g[i+1][1]; g[i][2]=g[i+1][2]; if (!a[i]) g[i][2]+=g[i+1][1]; if (a[i]==1) g[i][1]+=g[i+1][0]; if (a[i]==2) g[i][0]++; } ans=max(f[n][2]+f[n][1],f[n][2]+g[1][1]); for (i=1;i<n;i++) ans=max(ans,f[n][2]+f[i][0]*g[i+1][0]); cout<<ans<<endl;}
0 1
- 洛谷1371 NOI元丹
- 【前缀和】 洛谷1371 NOI元丹
- 洛谷 P1371 NOI元丹
- 洛谷 P1371 NOI元丹
- 洛谷 P1371 NOI元丹
- 洛谷P1371 NOI元丹
- NOI元丹
- 【洛谷 P1371】NOI元丹(枚举+乱搞)
- NOI
- [BZOJ 3240][NOI 2013]矩阵游戏(数学+乘法逆元)
- NOI 2015 d1t2 洛谷 【P2146】 软件包管理器
- 洛谷 P3825 游戏[NOI 2017] (2-SAT)
- 【题解】洛谷1047 校门外的树(NOI…
- 洛谷 P1801 [NOI导刊2010提高(06)] 黑匣子
- #洛谷 P1958 上学路线 [DFS-图的遍历-NOI导刊]
- NOI web
- NOI 2010
- NOI 食物链
- iOS 第14课 TableView <一> 创建以及数据源方法
- 关于JSP中使用EL表达式遇到的错误Property 'productId' not found on type com.imooc.hello.Product
- ubuntu 16.04 apache2 git gitweb
- 中小企业信息化建设分析报告
- C# 记录程序耗时
- 洛谷1371 NOI元丹
- 使用递归的方法获取所有子代元素
- 上海 GDG 为你准备的 Android SDK 的专用更新代理服务器地址
- 《算法》第一章——中缀表达式转前缀和后缀表达式
- 关于WAMPserver中phpadmin连接mysql时出现#1045无法登陆mysql的解决方法
- Android 停止其他App音乐
- 最大公约数GCD(Greatest Common Divisor)算法小结
- RocketMQ笔记(2)_双主双从部署
- hdu 5935 Car