题目描述

  For a decimal number x with n digits (A[n]A[n-1]A[n-2] … A[2]A[1]), we define its weight as F(x) = A[n] * 2^(n-1) + A[n-1] * 2^(n-2) + … + A[2] * 2 + A[1] * 1. Now you are given two numbers A and B, please calculate how many numbers are there between 0 and B, inclusive, whose weight is no more than F(A).

题目大意

  对于一个数字x,n为x的位数,ai为从右往左第i位的数字。f(x)=∑ni=12i−1∗a[i],给定数字A,B,求在0-B中这B+1个数中,f(x) < f(A) 的x个数。

数据范围

(0 <= A,B < 10^9)

样例输入

3
0 100
1 10
5 100

样例输出

Case #1: 1
Case #2: 2
Case #3: 13

解题思路

数位DP
太水了就不写具体了qwq

代码

#include <bits/stdc++.h>
using namespace std;
inline int Getint(){int x=0,f=1;char ch=getchar();while('0'>ch||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
int A,B,Max,lim[15];
int dp[3005][15];
void f(int x){int Len=0,ret=0;while(x)ret+=(x%10)*(1<<Len++),x/=10;Max=ret;
}
int Ask(int pos,int Sum,bool flag){if(!pos)return Sum<=Max;if(!flag&&~dp[Sum][pos])return dp[Sum][pos];int bound=flag?lim[pos]:9,ret=0;for(int i=0;i<=bound;i++)ret+=Ask(pos-1,Sum+(1<<pos-1)*i,flag&&i==bound);return !flag?dp[Sum][pos]=ret:ret;
}
int Ask(int x){int Len=0;while(x){lim[++Len]=x%10;x/=10;}return Ask(Len,0,1);
}
int main(){int Case=Getint();for(int i=1;i<=Case;i++){memset(dp,-1,sizeof(dp));f(Getint());cout<<"Case #"<<i<<": "<<Ask(Getint())<<"\n";}return 0;
}

转载于:https://www.cnblogs.com/Cedric341561/p/6810989.html

【HDU4734】F(x) 数位DP相关推荐

  1. hdu4389 Xmod f(x) 数位DP

    题意:求区间[a, b]之间有多少个数是xmode(x各位数)之和为0. 分析:发现自己数位DP好弱,不仅参考别人思路,而且自己敲代码还WA到吐血,归根到底是自己还没有 理解这道题的具体思路 1.这道 ...

  2. hdu 4389 X mod f(x) (数位dp||打表)

    ///打表 # include <algorithm> # include <stdio.h> # include <stdlib.h> # include < ...

  3. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  4. 动态规划 —— 数位 DP

    [概述] 数位 DP 实际是一种计数用的 DP,一般就是统计一个区间 [le,ri] 内满足一些条件数的个数. 所求的限定条件往往与数的位数有关,例如:数位之和.指定数码个数.数的大小顺序分组等. 题 ...

  5. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  6. bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/ ...

  7. [数位dp] spoj 10738 Ra-One Numbers

    题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...

  8. 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)

    题目链接 题目大意 : 解题思路: 这里有个很核心的地方就是log2(i+j)\text{log2(i+j)}log2(i+j)本质上就是看看i+j\text{i+j}i+j的二进制高位在哪里? 那么 ...

  9. 数位dp ---- 暴力 + 二进制的数位dp 2020济南 L Bit Sequence

    题目链接 题目大意 f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数 给你一个数组[a1,a2,a3...,am]m∈[1,100][a_1,a_2,a_3. ...

最新文章

  1. matlab pause
  2. 变速后没有声音_CVT不仅平顺省油还是运动型变速箱?
  3. python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...
  4. python保留字的基本含义-python 33个保留字是什么意思
  5. 小技巧!CSS 整块文本溢出省略特性探究
  6. 当女朋友学会「监视」男朋友......
  7. python中可变参数怎么传递的呢_在python中,你可以在命名参数后传递可变参数吗?...
  8. windows。forms.timer设置第一次不等待_适用于初学者的中线交易策略——金叉的三种设置条件...
  9. GVDS:面向广域高性能计算环境的虚拟数据空间
  10. Swift教程_零基础学习Swift完整实例(八)_swift完整实例(添加View的动画效果、添加View的阴影)...
  11. Laravel的核心概念
  12. 2月25日 局域不变特征的目标跟踪,SURF算子,KLT算子
  13. Linux下5种动态库运行时搜索路径的方法
  14. 基于易班API的Java开发入门教程
  15. 印象最深刻的三位老师、难忘的往事
  16. NOIP2017酱油记
  17. 2022-2028全球与中国工业机械电动执行器市场现状及未来发展趋势
  18. Intel Xeon Platinum 8269CY(Cascade Lake)处理器性能评测
  19. hadoop+zookeeper+Hbase+spark安装部署总结
  20. 秦九韶算法-c语言实现(数值分析)

热门文章

  1. OpenCV 3.x Lib 源码结构简介
  2. 详细程序注解学OpenCL一 环境配置和入门程序
  3. 基于 OpenCV 的人脸识别
  4. Nginx安全配置研究
  5. DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
  6. C#学习基本概念之属性使用
  7. JavaScript函数与Window对象
  8. 使用tomcat自带的连接池,报错
  9. 聊聊elasticsearch的RoutingService
  10. PHP 项目中单独使用 Laravel Eloquent 查询语句来避免 SQL 注入