当年大神的文章 《浅谈数位统计问题》

对于没什么文化(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】文盲的学习方法的更多相关文章

  1. 有关按位DP

    这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...

  2. [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)

    首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...

  3. BZOJ-5-4300: 绝世好题-位-DP

    思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数 ...

  4. 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] 对于 ...

  5. [Bzoj5043][Lydsy1709月赛]密码破译(按位dp)

    5043: [Lydsy1709月赛]密码破译 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 477  Solved: 125[Submit][Sta ...

  6. P4310 绝世好题 按位DP

    这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...

  7. 【按位dp】1出现的次数

    l-r1出现的次数 注意端点处理 垃圾算法书 垃圾代码毁我青春 自己研究写了写 #include <iostream> #include <string> #include & ...

  8. hdu 2089 不要62--数位dp入门

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  9. ZOJ-3962-数位dp

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5594             16进制下的数位dp,由于固定了位数,可以出现前 ...

随机推荐

  1. Spark调优(一)

    一.对多次使用的RDD进行持久化 如何选择一种最合适的持久化策略? 默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大, 可以绰绰有余地存放下整个RDD的所有数据.因为 ...

  2. OleDbCommand 的用法

    OleDbCommand 的用法 OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; dat ...

  3. Hadoop组件详解(随缘摸虾)

    1.1. Hadoop组成: Hadoop = hdfs(存储) + mapreduce(计算) + yarn(资源协调) + common(工具包) + ozone(对象存储) + submarin ...

  4. junit基础学习之-参数初始化(5)

    package swust.edu.cn.postdoctors.service.impl; import java.util.Arrays; import java.util.Collection; ...

  5. 尝试用kotlin做一个app(五)

    JSP后台管理系统 开发工具是IntelliJ IDEA+tomcat+mysql5.6.19+mysql-connector-java-5.1.48.jar+easyui+kindeditor 之前 ...

  6. Ubuntu Vi指令

    Ubuntu在不更新源的情况下是没办法使用Vim指令的只能使用Vi指令 所有我也就记录了下来 vi / vim命令: 插入内容: i: 插入光标前一个字符 I: 插入行首 a: 插入光标后一个字符 A ...

  7. windows LARGE_INTEGER 错误码输出格式

    如果是负数,I32X 版权声明:本文为博主原创文章,未经博主允许不得转载.

  8. <老古董>1962年的线性支持向量机解法

    我们说“训练”支持向量机模型,其实就是确定"最大间隔超平面". 用数学语言来说就是确定一个最优的W.好比训练一个逻辑回归模型的目的是确定最优的W和b. 输入 X,为一个n维向量 输 ...

  9. HZNU-ACM寒假集训Day10小结 单调栈-单调队列

    数据结构往往可以在不改变主算法的前提下题高运行效率,具体做法可能千差万别,但思路却是有规律可循 经典问题:滑动窗口  单调队列O(n) POJ 2823 我开始写的: TLE 说明STL的库还是有点慢 ...

  10. 给指定的div增加滚动条

    这次的需求是给一个指定的div(里面有个table表格)增加上下.左右的滚动条 通过查找资料后找到了一个可用的方法,代码如下: <!--div比table大小要小才会显示--> <d ...