1026-windy数+数位DP+记忆化搜索
1026: [SCOI2009]windy数
题意:数位DP模板题;
目前只理解了记忆化搜索,就想练练手,
------给递推写法留一个位子
------
注意这道题要判断前导0的情况,1 )可以加一个bool lead,或者在(i==0&&pre==-10)特判
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long ll;
ll dp[][],digit[]; ll dfs(int pos,int pre,bool limit,bool lead)//lead是判断前导0的,如果(i==0&&pre==-10)需要在dfs中继续pre=-10,避免满足记忆化的条件
{
if(pos==)return ;
if(!limit&&dp[pos][pre]>=&&!lead)return dp[pos][pre];
int num = limit?digit[pos]:;
ll ans = ;
for(int i=;i<=num;i++)
{
if(abs(i-pre)<)continue;
if(lead&&i==)
ans += dfs(pos-,pre,limit&&i==digit[pos],true);
else ans+= dfs(pos-,i,limit&&i==digit[pos],false);
}
if(!lead && !limit)return dp[pos][pre] = ans;
else return ans;
} ll solve(ll x)
{
int len = ;
while(x>)
{
digit[++len] = x%;
x/=;
}
return dfs(len,-,true,true);
}
int main(){
ll n,m;
memset(dp,-,sizeof(dp));
while(~scanf("%lld%lld",&n,&m))
{
printf("%lld\n",solve(m)-solve(n-));
}
}
贴一张特判的,感觉这个目的性和思路比较清晰;
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; int a, b,num[],dp[][]; int dfs(int len, int last, bool shangxian)
{
int p;
if (len <= )
return ;
if (!shangxian && dp[len][last] != -&& last >= )
return dp[len][last];
int cnt = , maxx = (shangxian ? num[len] : );
for (int i = ; i <= maxx; i++)
{
if (abs(i - last) < )
continue;
p = i;
if (i == && last == -)
p = last;
cnt += dfs(len - , p, shangxian && (i == maxx));
}
//return cnt;
if (last >= && !shangxian)
dp[len][last] = cnt;
return cnt;
} int solve(int x)
{
int k = ;
while (x)
{
num[++k] = x % ;
x /= ;
}
memset(dp, , sizeof(dp));
return dfs(k, -, true);
} int main()
{
scanf("%d%d", &a, &b);
printf("%d\n", solve(b) - solve(a - )); return ;
}
1026-windy数+数位DP+记忆化搜索的更多相关文章
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- 数位dp/记忆化搜索
一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an ...
- [hihocoder 1033]交错和 数位dp/记忆化搜索
#1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1 ...
- 【poj1850】 Code 数位dp+记忆化搜索
题目大意:给你一个字符串,问你这个字符串的rank,如果这个字符串不合法,请直接输出0.(一个合法的字符串是对于∀i,有c[i]<c[i+1]) 字符串s的rank的计算方式:以字符串长度作为第 ...
- [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学吧学吧 感觉记忆化搜索特别强: 定义 ...
- 【每日dp】 Gym - 101889E Enigma 数位dp 记忆化搜索
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的 ...
- 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 ...
随机推荐
- 【JDK】JDK源码分析-LinkedHashMap
概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap. 先看一下 LinkedHashMap 的类继 ...
- 【MySQL】导出长数字到 Excel 避免转为科学计数法方法
MySQL 导出比较长的数字到 Excel 时,最后几位会变成 0,解决方法如下: 如果只需要导出展示.打印:可使用 CONCAT("\t",str) 如果需要后续处理,引用,最好 ...
- Keil uVision4 ——如何新建一个项目
一.打开Keil4软件,点击Project,再点击New μVision Projrct. 二.新建一个文件夹,并在里面输入这个项目的名字. 三.点击Intel,根据实际情况选择,这里选择的是80/8 ...
- Mobile game forensics
My friend Carrie'd like to know "Garena 传说对决" violates any mobile risks such as insecure d ...
- javascript+jQuery补充
一.jQuery事件绑定 <div class='c1'> <div> <div class='title'>菜单一</div> <div cla ...
- CentOS系统故障 | 一桩"血案"引发的容器存储驱动比较
写在前面: 由于红帽在Linux界的影响力,相信很多朋友在测试和生产系统用的是RedHat或者CentOS系统,这次我在CentOS系统上遇到了一个很有意思的故障,通过这次故障的原因分析及解决,特意写 ...
- CEPH 自动化测试用例介绍
1.QA 的内部逻辑关系. 首先用一个图表示一下QA的内部的逻辑关系. 2.QA的脚本介绍 3.QA脚本运行
- 【Python】狂蟒来袭 | 使用Anaconda搭建Python开发环境
这段时间转了一个小圈圈,发现又回来了,瞎忙.想要学习数据挖掘的小伙伴一定得对机器学习有所了解吧,我之前看过几页周志华老师的西瓜书,但终没能坚持下来. 人生处处是起点,什么时候都不晚.记此笔记以分享与督 ...
- Oauth2认证模式之授权码模式实现
Oauth2认证模式之授权码模式(authorization code) 本示例实现了Oauth2之授权码模式,授权码模式(authorization code)是功能最完整.流程最严密的授权模式.它 ...
- cs231n---语义分割 物体定位 物体检测 物体分割
1 语义分割 语义分割是对图像中每个像素作分类,不区分物体,只关心像素.如下: (1)完全的卷积网络架构 处理语义分割问题可以使用下面的模型: 其中我们经过多个卷积层处理,最终输出体的维度是C*H*W ...