设为首页 加入收藏

TOP

hdu 4734 F(x) 数位dp
2015-07-20 17:23:42 来源: 作者: 【 】 浏览:1
Tags:hdu 4734 )数位

题意:定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1(其中 x = AnAn-1An-2 ... A2A1),那么给定A,B,求[0,B]区间的i,满足F(i)<=F(A)

的个数。

思路:设dp[ pos ] [ k ]为当前考虑pos位,之后(pos + 1)位与之前的位数组合形成的F函数值不超过k的数的个数,详见代码:

/*********************************************************
  file name: hdu4734.cpp
  author : kereo
  create time:  2015年01月20日 星期二 11时09分03秒
*********************************************************/
#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
        #include
        
          #include
         
           #include
          
            #include
           
             using namespace std; typedef long long ll; const int sigma_size=26; const int N=10; const int MAXN=6000+50; const int inf=0x3fffffff; const double eps=1e-8; const int mod=100000000+7; #define L(x) (x<<1) #define R(x) (x<<1|1) #define PII pair
            
              #define mk(x,y) make_pair((x),(y)) int res; int bit[N],dp[N][MAXN],a[N],p[N]; int dfs(int pos,int st,int flag){ if(pos == -1) return 1; if(flag && dp[pos][st]!=-1) return dp[pos][st]; int ans=0; int x=flag ? 9 : bit[pos]; for(int i=0;i<=x;i++){ int k=st-(int)p[pos]*i; if(k<0) continue; ans+=dfs(pos-1,k,flag || i
             
              

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU4311 Meeting point-1(曼哈顿.. 下一篇poj 3782 Equal Sum Partitions ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)
·C语言-函数指针与函 (2025-12-26 15:20:12)
·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)