【按位dp】文盲的学习方法
当年大神的文章 《浅谈数位统计问题》
对于没什么文化(x 没有充分时间或懒得看那么多理论 应付个水考试的我
eg:62问题
#include <iostream>
#include <string>
#include <string.h>
#include<fstream>
#include <algorithm>
using namespace std;
int dp[][];//dp[i][j],表示开头是j的i位数满足条件的有多少个
//注意计算得到的i位数并不是数学意义上的i位数 最高位可以为0
void init()
{
memset(dp, , sizeof(dp));//初始化数组all 0
dp[][] = ;
for (int i = ; i <= ; i++)
{
for (int j = ; j<; j++)//枚举第i位可能出现的数
{
for (int k = ; k<; k++)//枚举第i-1位可能出现的数
{
if (j != && !(j == && k == ))
dp[i][j] += dp[i - ][k];//高位每次出现的数字 对应数的个数
//为低位每次出现数字对应数的个数之和
}
}
}
}
int solve(int n)
{
init();
int digit[];
int len = ;
while (n>)//把我们要计算的数一位一位地存到digit数组中
{
digit[++len] = n % ;
n /= ;
}
digit[len + ] = ;//最高位补零(只要不是6),因为下面从最高位开始参考前一位是否和现在构成62
int ans = ;//初始化符合个数
for (int i = len; i; i--)//从最高位开始
{
for (int j = ; j<digit[i]; j++)//从小到大遍历,有上界
{
if (j != && !(digit[i + ] == && j == ))//如果符合要求(没有4,62)
ans += dp[i][j];//就加以j开头的符合要求的i位数
}
if (digit[i] == || (digit[i] == && digit[i + ] == ))//如果不符合要求 结束本层循环(也就是直接退出了
break;
}
return ans;
}
int main()
{
int l, r;
while (cin >> l >> r)
{
if (l + r == )
break;
else
cout << solve(r + ) - solve(l) << endl;
}
return ; }
【按位dp】文盲的学习方法的更多相关文章
- 有关按位DP
这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...
- [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)
首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...
- BZOJ-5-4300: 绝世好题-位-DP
思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数 ...
- UVA 1640 The Counting Problem(按位dp)
题意:给你整数a.b,问你[a,b]间每个数字分解成单个数字后,0.1.2.3.4.5.6.7.8.9,分别有多少个 题解:首先找到[0,b]与[0,a-1]进行区间减法,接着就只是求[0,x] 对于 ...
- [Bzoj5043][Lydsy1709月赛]密码破译(按位dp)
5043: [Lydsy1709月赛]密码破译 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 477 Solved: 125[Submit][Sta ...
- P4310 绝世好题 按位DP
这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...
- 【按位dp】1出现的次数
l-r1出现的次数 注意端点处理 垃圾算法书 垃圾代码毁我青春 自己研究写了写 #include <iostream> #include <string> #include & ...
- hdu 2089 不要62--数位dp入门
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
- ZOJ-3962-数位dp
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5594 16进制下的数位dp,由于固定了位数,可以出现前 ...
随机推荐
- 个人vim简单配置
精简.vimrc配置,简约不简单 该配置没有花里胡哨的插件,只是用ctags和cscope然后配合vim提供的基础功能就可以完成常见的代码编辑,浏览,查找等工作. "************ ...
- ES6中字符串的新增方法梳理
1.String.fromCodePoint(); String,fromCodePoint()方法可以认为是对String.fromCharCode()方法的扩展,这两个方法的共同点在于都是用于Un ...
- UVA - 12716 GCD XOR(GCD等于XOR)(数论)
题意:输入整数n(1<=n<=30000000),有多少对整数(a, b)满足:1<=b<=a<=n,且gcd(a,b)=a XOR b. 分析:因为c是a的约数,所以枚 ...
- HDU 1576:A/B
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- windows Driver 查询指定键值
NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONSTANT_STR ...
- 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
关键字:驰骋表单引擎,流程引擎,界面升级. 前言概述: 感谢美工与同事们的辛苦工作,ccbpm新年大换装,迎接爱好着,为这阴霾多日的疫情气愤增添一笔光彩. 本次的色系以浅灰色为主,因为ccbpm大 ...
- Java生鲜电商平台-如何使用微服务来架构生鲜电商B2B2C平台?
Java生鲜电商平台-如何使用微服务来架构生鲜电商B2B2C平台? 说明:随着互联网的日益普及,人们通过手机下单买菜的人越来越多,生鲜这个行业有两个显著的特点,一个是刚需.(你每天都要吃饭,都要吃菜) ...
- Swift - UISplitViewController
https://blog.csdn.net/weixin_43704791/article/details/86424080 2019年01月13日 AppDelegate中: func applic ...
- Android自定义View——自定义ViewPager
第一部分:自定义ViewGroup的使用,手势识别器和Scroller滑动 第二部分:处理滑动监听,处理滑动冲突,增加ViewPager的指示器 常见的滑动冲突:外部滑动方向和内部滑动方向不一 ...
- 初识MyBatis-Generator
详细请见: http://www.mybatis.org/generator/quickstart.html 使用mybatis-generator-core-x.x.x.jar加上配置文件来生成 1 ...