意甲冠军:有两个查询:

q=1。在[x,y]间隔,兑换b十进制,数字和m多少个月。

q=2。在[x,y]间隔,兑换b十进制,数字是m第一k的数目是多少(十进制),没有输出由给定的主题。

思维:

和比特的平均数dp如,第几个数的话就是二分推断。

然后就是按常理要开4维,就是dp[i][sum][b][m] i位,和为sum,b进制,最后和为m

可是开不下,所以开3维每次初始化。

注意一下:

1、每次都要初始化

2、x不一定小于y

3、是[x,y]不是(x,y]

代码:

#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"stack"
#include"algorithm"
#include"iostream"
using namespace std;
__int64 dp[33][320][65],num[33]; // i位 和是sum 进制b 的关于m的答案 可是再替m开一维开不下。所以不能在外面初始化
__int64 dfs(__int64 site,__int64 sum,__int64 b,int f,__int64 m)
{
if(site==0) return sum==m?1:0;
if(!f&&dp[site][sum][b]!=-1) return dp[site][sum][b];
__int64 len=f? num[site]:b-1;
__int64 ans=0;
for(__int64 i=0; i<=len; i++)
{
ans+=dfs(site-1,sum+i,b,f&&i==len,m);
}
if(!f) dp[site][sum][b]=ans;
return ans;
}
__int64 solve(__int64 x,__int64 b,__int64 m)
{
int cnt=0;
if(x<0) return 0;
while(x)
{
num[++cnt]=x%b;
x/=b;
}
return dfs(cnt,0,b,1,m);
}
int main()
{
int cas=1;
int q;
while(scanf("%d",&q)!=-1)
{
__int64 x,y,b,m,k;
memset(dp,-1,sizeof(dp)); //必须放里面
printf("Case %d:\n",cas++);
if(q==1)
{
scanf("%I64d%I64d%I64d%I64d",&x,&y,&b,&m);
if(x>y) swap(x,y);
printf("%I64d\n",solve(y,b,m)-solve(x-1,b,m));
}
else
{
scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&b,&m,&k);
x--; //注意这里是求 [x,y]区间内的! if(x>y) swap(x,y);
__int64 ans=-1,s;
s=solve(x,b,m);
s+=k;
__int64 l=x+1,r=y;
while(l<=r)
{
__int64 mid=(l+r)/2;
if(solve(mid,b,m)>=s)
{
ans=mid;
r=mid-1;
}
else l=mid+1;
}
if(ans!=-1) printf("%I64d\n",ans);
else puts("Could not find the Number!");
}
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

[数字dp] hdu 3271 SNIBB的更多相关文章

  1. hdu 3271 SNIBB 数位DP+二分

    思路:dp[i][j]:表示第i位在B进制下数字和. 用二分找第k个数! 代码如下: #include<iostream> #include<stdio.h> #include ...

  2. HDU 3271 SNIBB

    SNIBB Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 3271 ...

  3. [数字dp] hdu 3565 Bi-peak Number

    意甲冠军: 为了范围[X,Y],的最大位数的范围内的需求高峰和值多少. 双峰是为了满足一些规定数量 你可以切两 /\ /\ 形式. 思维: dp[site][cur][ok]  site地点  面的数 ...

  4. HDU - 4734 F(x) (2013成都网络游戏,数字DP)

    意甲冠军:求0-B见面<=F[A]所有可能的 思维:数字DP,内存搜索 #include <iostream> #include <cstring> #include & ...

  5. fwt优化+树形DP HDU 5909

    //fwt优化+树形DP HDU 5909 //见官方题解 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ #include <bits/ ...

  6. hdu 3652 B-number(数字dp)

    http://acm.hdu.edu.cn/showproblem.php? pid=3652 大致题意:"B-number"即一个整数含有子串"13"且被13 ...

  7. hdu 3709 数字dp(小思)

    http://acm.hdu.edu.cn/showproblem.php?pid=3709 Problem Description A balanced number is a non-negati ...

  8. HDU——B-number(数字DP)

    标题效果: 要了解1至n如何号码之间有许多含有13,并13可分 记忆化搜索: dp[pos][pre][mod][statu],pos位数,pre前一位,mod余数,statu状态 有2个状态:含13 ...

  9. HDU 3271 数位dp+二分

    SNIBB Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. 网站访问优化(二):开启apache服务器gzip压缩

    昨天,把带宽从1M升级到2M,使用cdn版本的jquery之后,网站访问速度由平均5s(在禁止缓存的情况下,使用缓存大概在2.8s)下降到2.8s的样子. 今天,继续优化. 第1步:   把图片进行了 ...

  2. WordPress通过插件发送邮件

    原文发表自我的个人站点,欢迎大家訪问~转载请保留本段,或注明原文链接:http://www.hainter.com/wordpress-send-email-via-plugins WordPress ...

  3. android 之修改图片的某一颜色值

    首先我们来创建一个叫Image的类,这个类主要用来处理与图有关的一些操作. package org.cn.tools; import java.io.IOException; import java. ...

  4. Android中的动画详解系列【3】——自定义动画研究

    在上一篇中我们使用到了位移动画TranslateAnimation,下面我们先来看看TranslateAnimation是如何实现Animation中的抽象方法的: /* * Copyright (C ...

  5. c3p0 xml配置文件模版

    <c3p0-config> <default-config> <property name="driverClass">com.mysql.jd ...

  6. 切换-5.7-传统复制切换成GTID复制

    1.基本环境:     Master Slave MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64 IP 192.168.56.156 192.168.5 ...

  7. [Angular] Pipes as providers

    In this example, we are going to see how to use Pipe as providers inject into component. We have the ...

  8. NOIP 模拟 路径求和 - Tarjan+dfs+码

    题目大意: 各一个奇环内向森林,求每两个点对间的距离之和.无法到达则距离为-1. 分析: 首先Tarjan找出size大于1的连通分量(环),环中的边的贡献可以单独计算. 然后从入度为0的点向内dfs ...

  9. Angular.js回想+学习笔记(1)【ng-app和ng-model】

    Angular.js中index.html简单结构: <!doctype html> <html ng-app> <head> <script src=&qu ...

  10. Erlang中频繁发送远程消息要注意的问题

    http://avindev.iteye.com/blog/76373 注:这篇文章可能会有争议,欢迎提出意见 在Erlang中,如果要实现两个远程节点之间的通信,就需要通过网络来实现,对于消息发送, ...