【poj1850】 Code 数位dp+记忆化搜索
题目大意:给你一个字符串,问你这个字符串的rank,如果这个字符串不合法,请直接输出0。(一个合法的字符串是对于∀i,有c[i]<c[i+1])
字符串s的rank的计算方式:以字符串长度作为第一关键字,字符串大小作为第二关键字,将该字符串集排序,若从小到达数到的第k个字符串为s,则s的rank为k。
此题由于数据范围非常小(strlen(c)≤10),感觉暴力应该是可以AC的,不过我还是打了个数位dp。
此题直接记忆化搜索统计答案即可。不过要注意输入一个字符串时判断该字符串是否在该字符集内(我就未判这个结果翻车了....)
#include<iostream>
#include<cstdio>
#include<cstring>
#define M 10
#define L long long
using namespace std;
L f[M][]={};
char c[M]={}; int num[M]={};
L dfs(int n,int m,int op){
if(!op&&f[n][m]!=-) return f[n][m];
if(n==) return ;
if(!op){
f[n][m]=;
for(int i=m+;i<=;i++) f[n][m]+=dfs(n-,i,op);
return f[n][m];
}else{
L sum=;
for(int i=m+;i<num[n];i++) sum+=dfs(n-,i,);
return sum+dfs(n-,num[n],op);
}
}
int main(){
scanf("%s",c+);
int n=strlen(c+);
for(int i=;i<=n;i++){
num[i]=c[n-i+]-'a'+;
if(c[i-]>=c[i]) {printf("0\n"); return ;}
}
memset(f,-,sizeof(f));
L sum=;
for(int nn=;nn<n;nn++){
for(int i=;i<=;i++)
sum+=dfs(nn-,i,);
}
for(int i=;i<num[n];i++)
sum+=dfs(n-,i,);
sum+=dfs(n-,num[n],);
printf("%lld\n",sum);
}
【poj1850】 Code 数位dp+记忆化搜索的更多相关文章
- 数位dp/记忆化搜索
一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an ...
- [hihocoder 1033]交错和 数位dp/记忆化搜索
#1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1 ...
- [BZOJ3598][SCOI2014]方伯伯的商场之旅(数位DP,记忆化搜索)
3598: [Scoi2014]方伯伯的商场之旅 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 449 Solved: 254[Submit][Sta ...
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- 1026-windy数+数位DP+记忆化搜索
1026: [SCOI2009]windy数 题意:数位DP模板题: 目前只理解了记忆化搜索,就想练练手, ------给递推写法留一个位子 ------ 注意这道题要判断前导0的情况,1 )可以加一 ...
- 【每日dp】 Gym - 101889E Enigma 数位dp 记忆化搜索
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的 ...
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- hdu3652 数位dp记忆化搜索
从未见过的船新版本数位dp,,省去了预处理过程,直接进行计算 #include<bits/stdc++.h> using namespace std; #define ll long lo ...
- cf55D 数位dp记忆化搜索+状态离散
/* 漂亮数定义:可以整除任意数位上的数 求出区间[l,r]之间的漂亮数个数 因为 dp[i][j][k]:i位前模lcm的值是j,i位前lcm是k的漂亮数个数 */ #include<bits ...
随机推荐
- activemq.bat 在window7 x64下启动(安装)报错解决方案
在启动 apache-activemq-5.15.2/activemq.bat 时候报错,提示以下信息: wrapper | --> Wrapper Started as Consolewr ...
- vue组件介绍
https://www.cnblogs.com/Leo_wl/p/5863185.html vue.js说说组件 什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重 ...
- 2018.07.07 洛谷 P3939 数颜色(主席树)
P3939 数颜色 题目背景 大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不 ...
- hdu-1728(bfs+优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 注意:1.先输入起点(y1,x1)和终点(y2,x2): 2.如果一个一个遍历会超时. 思路:每 ...
- CentOS7下安装配置Nginx
一:安装依赖项 1.pcre:2.openssl:3.zlib:4.gcc:可直接通过yum安装 二:创建nginx账户(可以配置nginx.conf的user为此账户) useradd nginx ...
- day4之内置函数、匿名函数,递归函数
内置函数: https://www.processon.com/view/link/5adc6062e4b04721d63171eb?pw=3218 匿名函数:lambda lambda 语法: la ...
- (KMP扩展 利用循环节来计算) Cyclic Nacklace -- hdu -- 3746
http://acm.hdu.edu.cn/showproblem.php?pid=3746 Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others ...
- CF1096D Easy Problem(DP)
题意:给出一个字符串,去掉第i位的花费为a[i],求使字符串中子串不含hard的最小代价. 题解:这题的思路还是比较套路的, dp[i][kd]两维,kd=0表示不含d的最小花费,1表示不含rd ...
- JProfiler 简要使用说明
1.简介 JProfiler是一个ALL-IN-ONE的JAVA剖析工具,可以方便地监控Java程序的CPU.内存使用状况,能够检查垃圾回收.分析性能瓶颈. 本说明文档基于JProfiler 9.2编 ...
- Oracle EBS标准错误信息如何追踪 (Debug)
http://www.cnblogs.com/songdavid/articles/2067534.html 调用EBS标准API的时候,可能会返回一些让人看不懂的错误,比如最近我在开发rcv_tra ...