博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 909C
阅读量:5013 次
发布时间:2019-06-12

本文共 1060 字,大约阅读时间需要 3 分钟。

题意略。

思路:

开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位;

如果i为s,那么dp[i]还与第i行的缩进有关。因此我们增加缩进这个状态。

定义dp[i][j]:当前行在第i行,缩进为j,i~n有多少种排列方式。

当i为s的时候,dp[i][j] = sum(dp[i + 1][k]) 1 <= k <= j;

当j为f的时候,dp[i][j] = dp[i + 1][j + 1];

详见代码:

#include
using namespace std;typedef long long LL;const LL mod = 1000000000 + 7;const int maxn = 5005;LL dp[2][maxn];int n;string str;int main(){ std::ios::sync_with_stdio(false); cin>>n; string temp; for(int i = 0;i < n;++i){ cin>>temp; str += temp; } memset(dp,-1,sizeof(dp)); for(int i = 0;i <= n;++i) dp[n & 1][i] = 1; for(int i = n - 1;i >= 1;--i){ LL cur = 0; for(int j = 0;j <= i - 1;++j){ if(str[i - 1] == 's'){ cur += dp[(i + 1) & 1][j]; cur %= mod; dp[i & 1][j] = cur; } else{ dp[i & 1][j] = dp[(i + 1) & 1][(j + 1)]; } } } cout<
<

 

转载于:https://www.cnblogs.com/tiberius/p/9256849.html

你可能感兴趣的文章
打印Ibatis最终的SQL语句
查看>>
HBase之八--(3):Hbase 布隆过滤器BloomFilter介绍
查看>>
oracle连接问题ORA-00604,ORA-12705
查看>>
NOI 2019 退役记
查看>>
java的几个日志框架log4j、logback、common-logging
查看>>
Java从零开始学十三(封装)
查看>>
Python2和Python3中的rang()不同之点
查看>>
MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)...
查看>>
UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
查看>>
记忆--1.致我们不可缺少的记忆
查看>>
lintcode28- Search a 2D Matrix- easy
查看>>
react项目
查看>>
C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰(转)
查看>>
A Simple Tree Problem
查看>>
Modular Inverse [ZOJ 3609]
查看>>
MySQL性能测试工具之mysqlslap使用详解
查看>>
深入理解jsonp跨域请求原理
查看>>
regsvr32注册COM组件失败
查看>>
jmeter,CSV数据加载、数据库连接、正则
查看>>
(独孤九剑)--正则表达式
查看>>