码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • HDU_4734_F(x)_数位dp


    HDU_4734_F(x)_数位dp

    F(x)

    Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 15070    Accepted Submission(s): 5761


     

    Problem Description
    For a decimal number x with n digits (AnAn-1An-2 ... A2A1), we define its weight as F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 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).
     

    Input
    The first line has a number T (T <= 10000) , indicating the number of test cases.
    For each test case, there are two numbers A and B (0 <= A,B < 109)
     

    Output
    For every case,you should output "Case #t: " at first, without quotes. The t is the case number starting from 1. Then output the answer.
     

    Sample Input
     
     
    3
    0 100
    1 10
    5 100
     

    Sample Output
     
     
    Case #1: 1
    Case #2: 2
    Case #3: 13
     

    Source
    2013 ACM/ICPC Asia Regional Chengdu Online

    // 如果对于每一个f(a)都求一遍答案 空间复杂度受不了 O( 9*4600*4600 )

    // dp[f(a)][now][sum]: 在约束==f(a)时 当前数位进行到now位 now+1~pos位的加权和为sum

    // 于是考虑做减法

    // dp[now][re]: 当前进行到了now位 剩余量为re

    // 对于不同的f(a) 只要最后的剩余量re>=0 就说明f(a)>=sum 当前dp遍历的所有数字都是答案

    1. // 确定上限
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. int sum=0;
    7. for( int i=0;i<9;i++ )
    8. {
    9. sum+=9*( 1<
    10. }
    11. cout<// 4599
    12. cout<<( 1<<14 )<
    13. return 0;
    14. }
    15. // A,B < 1e9 --> 9个9 --> 4599
    16. // 如果对于每一个f(a)都求一遍答案 空间复杂度受不了 O( 9*4600*4600 )
    17. // dp[f(a)][now][sum]: 在约束==f(a)时 当前数位进行到now位 now+1~pos位的加权和为sum
    18. // 于是考虑做减法
    19. // dp[now][re]: 当前进行到了now位 剩余量为re
    20. // 对于不同的f(a) 只要最后的剩余量re>=0 就说明f(a)>=sum 当前dp遍历的所有数字都是答案
    21. // HDU_4734_F(x)_数位dp
    22. #include
    23. using namespace std;
    24. #define int long long
    25. const int N=11;
    26. int dp[N][11111];
    27. int in[N];
    28. int x,y;
    29. int stdd;
    30. int dfs( int now,int re,bool limit )
    31. {
    32. if( re<0 ) return 0;
    33. if( now<=0 ) return ( re>=0 ) ;
    34. if( limit==0 && ~dp[now][re] ) return dp[now][re];
    35. int up=limit ? in[now] : 9 ;
    36. int ans=0;
    37. for( int i=0;i<=up;i++ )
    38. ans+=dfs( now-1,re-i*( 1<<(now-1) ),limit && i==in[now] );
    39. //
    40. if( limit==0 ) dp[now][re]=ans;
    41. return ans;
    42. }
    43. int f( int n )
    44. {
    45. int pos=0;
    46. while( n ) in[++pos]=n%10,n/=10;
    47. return dfs( pos,stdd,1 );
    48. }
    49. void f_stdd( int n )
    50. {
    51. stdd=0;
    52. int r=1;
    53. while( n ) stdd+=n%10*r,n/=10,r<<=1;
    54. }
    55. signed main()
    56. {
    57. memset( dp,-1,sizeof( dp ) );
    58. int t,i,x,y;
    59. scanf("%lld",&t);
    60. for( i=1;i<=t;i++ )
    61. {
    62. scanf("%lld%lld",&x,&y);
    63. f_stdd( x );
    64. printf("Case #%lld: %lld\n",i,f(y) );
    65. }
    66. return 0;
    67. }

  • 相关阅读:
    作业与作业调度--四种调度算法
    Flutter 环境配置
    openGauss学习笔记-79 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT应用场景
    redis的5种数据类型
    Windows:Arm,我们不合适
    【深度学习框架格式转化】【GPU】Pytorch模型转ONNX模型格式流程详解【入门】
    视觉语言跨模态特征语义相似度计算改进--表征空间维度语义依赖感知聚合算法 ACM MM
    Spring Boot 整合xxl-job实现分布式定时任务
    We have awesome remote U.S. jobs waiting for engineers like you.
    【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)
  • 原文地址:https://blog.csdn.net/qq_63173957/article/details/126892559
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号