博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4054 Number String
阅读量:5981 次
发布时间:2019-06-20

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

思路:

状态:dp[i][j]表示以j结尾i的排列

状态转移:

如果s[i - 1]是' I ',那么dp[i][j] = dp[i-1][j-1] + dp[i-1][j-2] + .. + dp[i-1][1]

如果s[i - 1]是‘D’,那么dp[i][j] = dp[i-1][j] + dp[i-1][j+1] + ... + dp[i-1][i]

用前缀和处理出sum[i][j]就不用dp[i][j]了

代码:

 

#include
using namespace std;#define ll long long#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))const int N=1e3+5;const int MOD=1e9+7;ll sum[N][N];ll dp[N][N];//dp[i][j]表示以j为结尾的i的排列 int main(){ ios::sync_with_stdio(false); cin.tie(0); string s; sum[0][1]=1; while(cin>>s) { for(int i=1;i<=s.size();i++) { for(int j=1;j<=i+1;j++) { sum[i][j]=sum[i][j-1]; if(s[i-1]!='D')sum[i][j]+=sum[i-1][j-1]; if(s[i-1]!='I')sum[i][j]+=sum[i-1][i]-sum[i-1][j-1]+MOD; sum[i][j]%=MOD; } } cout<
<

 

转载于:https://www.cnblogs.com/widsom/p/7737879.html

你可能感兴趣的文章
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
Windows Phone 8 开发资源汇总
查看>>
Git:配置
查看>>
神经系统知识普及
查看>>
Spring可扩展Schema标签
查看>>
c++ STL unique , unique_copy函数
查看>>
http://miicaa.yopwork.com/help/overall/
查看>>
浅谈关于特征选择算法与Relief的实现
查看>>
mybatis-spring 项目简介
查看>>
Wireshark抓取RTP包,还原语音
查看>>
Behavioral模式之Memento模式
查看>>
Work Management Service application in SharePoint 2016
查看>>
Dos 改动IP 地址
查看>>
Laravel 源码解读:php artisan make:auth
查看>>
【转】ionic run android 成功launch success,但是genymotion虚拟机没有显示
查看>>
苹果在GitHub上正式开源iOS内核源码
查看>>
测试人员面临的测试挑战和必备技能
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
同事反馈环:为什么度量和会议还不够充分
查看>>