hdu3886(数位dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3886
题意:给一定区间[A,B],一串由/,\,-组成的符号串。求满足符号串的数字个数。
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 100000000
#define inf 0x3f3f3f3f
#define N 100010
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
int dp[][][];
int dig[],len;
char str[],a[],b[];
int judge(int i,int pre,int now)
{
if(str[i]=='/')return pre<now;
else if(str[i]=='-')return pre==now;
else if(str[i]=='\\')return pre>now;
}
int dfs(int pos,int cur,int pre,int limit,int fzore)
{
if(!pos)return cur==len;
if(!limit&&~dp[pos][cur][pre])return dp[pos][cur][pre];
int ed=limit?dig[pos]:;
int ans=;
for(int i=;i<=ed;i++)
{
if(!fzore)
{
if(cur<len&&judge(cur,pre,i))
ans+=dfs(pos-,cur+,i,limit&&i==ed,fzore&&!i);
//这里为什么能往回走,因为如果pre,i满足str[cur-1],同时
//已经知道“pre前一位,pre”也满足str[cur-1],这样还是满足要求的数
//例如数据123455555554321是符合/-\的,5之前都是/,中间都是-,后面都是\。
else if(cur&&judge(cur-,pre,i))
ans+=dfs(pos-,cur,i,limit&&i==ed,fzore&&!i);
}
else ans+=dfs(pos-,cur,i,limit&&i==ed,fzore&&!i);
ans%=mod;
}
if(!limit)dp[pos][cur][pre]=ans;
return ans;
}
int solve(char s[],bool left)
{
int lens=strlen(s),m=,i=;
while(s[i]==''&&i<lens)i++;
for(int j=lens-;j>=i;j--)dig[++m]=s[j]-'';
if(left&&m)
{
for(int i=;i<=m;i++)
{
if(dig[i])
{
dig[i]--;break;
}
else dig[i]=;
}
}
return dfs(m,,,,);
}
int main()
{
while(scanf("%s",str)!=EOF)
{
len=strlen(str);
scanf("%s%s",a,b);
memset(dp,-,sizeof(dp));
printf("%08d\n",((solve(b,)-solve(a,))+mod)%mod);
}
}
hdu3886(数位dp)的更多相关文章
- [转]数位dp小记
转载自:http://blog.csdn.net/guognib/article/details/25472879 参考: http://www.cnblogs.com/jffifa/archive/ ...
- 数位DP 计划
通常的数位dp可以写成如下形式: [cpp] view plain copy int dfs(int i, int s, bool e) { if (i==-1) return s==target_s ...
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- bzoj1026数位dp
基础的数位dp 但是ce了一发,(abs难道不是cmath里的吗?改成bits/stdc++.h就过了) #include <bits/stdc++.h> using namespace ...
- uva12063数位dp
辣鸡军训毁我青春!!! 因为在军训,导致很长时间都只能看书yy题目,而不能溜到机房鏼题 于是在猫大的帮助下我发现这道习题是数位dp 然后想起之前讲dp的时候一直在补作业所以没怎么写,然后就试了试 果然 ...
- HDU2089 不要62[数位DP]
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 数位DP GYM 100827 E Hill Number
题目链接 题意:判断小于n的数字中,数位从高到低成上升再下降的趋势的数字的个数 分析:简单的数位DP,保存前一位的数字,注意临界点的处理,都是套路. #include <bits/stdc++. ...
- 数位dp总结
由简单到稍微难点. 从网上搜了10到数位dp的题目,有几道还是很难想到的,前几道基本都是模板题,供入门用. 点开即可看题解. hdu3555 Bomb hdu3652 B-number hdu2089 ...
- 数位DP入门
HDU 2089 不要62 DESC: 问l, r范围内的没有4和相邻62的数有多少个. #include <stdio.h> #include <string.h> #inc ...
- 数位DP之奥义
恩是的没错数位DP的奥义就是一个简练的dfs模板 int dfs(int position, int condition, bool boundary) { ) return (condition ? ...
随机推荐
- android 实现跳动频谱 DEMO
package com.terry.AudioFx; import android.app.Activity; import android.content.Context; import andro ...
- JQuery+AJax - 无刷新使用验证码
最终效果: 项目目录: Default.aspx前端代码: <%@ Page Language="C#" AutoEventWireup="true" C ...
- perl .*?和.*
redis01:/root# cat x2.pl my $str="212121a19823a456123"; if ($str =~/.*a(.*)23/){print &quo ...
- zabbix 获取jvm session信息
zabbix:/root# java -jar /root/cmdline-jmxclient-0.10.3.jar - 121x:5566 "Catalina:type=Manager,c ...
- Oracle SQL语句执行过程
前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...
- 【Demo 0002】Java基础-语句
本章学习要点: 1. 掌握Java关健语句使用方法; 2. 理解与语句相关的关键字用法; 一.Java 关键语句 Java语句以及关联关键字与C完全相 ...
- Swift - UIColor使用自定义的RGB配色
1,比如rgb 色值为55. 186 .89 那么给UIColor设置里面要除以255 1 UIColor(red: 55/255, green: 186/255, blue: 89/255, alp ...
- Html 内嵌 选择器属性 Dom操作 JavaScript 事件
HTML标签: 一.通用标签(一般标签) 1.格式控制标签 <font color="#6699aa" face="楷体" size="24&q ...
- 枚举类型互相转换(使用GetEnumName和TypeInfo两个函数)
usesClasses,TypInfo ; typeTCommandType = (ctEmptyCommand,ctAdd,ctModify); TCommandTypeConvert=classp ...
- ThinkPHP 关联模型(二十)
原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和 user 关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...