http://acm.bnu.edu.cn/v3/contest_show.php?cid=9208#problem/J

【AC】

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll N,K;
ll dp[][];
ll cnt[];
int sumdigit(ll x)
{
int tot=;
while(x)
{
tot+=x%;
x/=;
}
return tot;
}
int digit[];
int split(ll x)
{
int ret=;
while(x)
{
digit[++ret]=x%;
x/=;
}
reverse(digit+,digit++ret);
return ret;
} void Dp(int len)
{
memset(dp,,sizeof(dp));
//从高位到低位递推
for(int i=;i<digit[];i++)//最高位
{
dp[][i]=;
}
int sum=digit[];
for(int i=;i<=len;i++)
{
for(int j=;j<;j++)
{
if(dp[i-][j])//不为0才有贡献
for(int tran=;tran<;tran++)//从高到底第i位
{
if(j+tran<)
{
dp[i][j+tran]+=dp[i-][j];
}
}
}
for(int j=;j<=;j++) dp[i][j]++;//因为初始化dp[1][i]时dp[1][0]为0,所以要补上000..j这种情况
for(int j=;j<digit[i];j++) dp[i][sum+j]++;//因为初始化dp[1][digit[1]]为0,所以要补上只有第i位不同的情况
sum+=digit[i];
}
dp[len][sum]++;//算的是小于等于x的数,要加上本身
} ll cal(ll X,int sum,int type)
{
int len=split(X);
Dp(len);
if(type==)//[1,X]中位数和小于sum的总数
{
ll ans=;
for(int i=;i<sum;i++)
{
ans+=dp[len][i];
}
return ans;
}
else //[1,x]中位数和恰好为sum的总数
{
return dp[len][sum];
}
} ll solve(ll X,ll k)
{
int len=split(X);
Dp(len);
for(int i=;i<;i++)
{
cnt[i]=dp[len][i];
}
for(int i=;i<;i++)
{
cnt[i]+=cnt[i-];
}
ll pos=lower_bound(cnt+,cnt+,k)-cnt;
k-=cnt[pos-];
ll l=,r=1e18;
while(l<=r)
{
ll mid=(l+r)>>;
if(cal(mid,pos,)<k)
{
l=mid+;
}
else
{
r=mid-;
}
}
return l;
}
int main()
{
while(~scanf("%I64d%I64d",&N,&K))
{
cout<<cal(N,sumdigit(K),)+cal(K,sumdigit(K),)<<" ";
cout<<solve(N,K)<<endl;
}
return ;
}

数位DP

【数位DP】bnuoj 52813 J. Deciphering Oracles的更多相关文章

  1. Tsinsen A1516. fx 数位dp

    题目: http://www.tsinsen.com/A1516 A1516. fx 时间限制:2.0s   内存限制:256.0MB    总提交次数:164   AC次数:72   平均分:51. ...

  2. BZOJ 3209: 花神的数论题 [数位DP]

    3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f ...

  3. BZOJ_1833_[ZJOI2010]count 数字计数_数位DP

    BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...

  4. [bzoj1833][ZJOI2010]数字计数(数位DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...

  5. Hdu Bomb(数位DP)

    Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submiss ...

  6. 「算法笔记」数位 DP

    一.关于数位 dp 有时候我们会遇到某类问题,它所统计的对象具有某些性质,答案在限制/贡献上与统计对象的数位之间有着密切的关系,有可能是数位之间联系的形式,也有可能是数位之间相互独立的形式.(如求满足 ...

  7. BNUOJ 52325 Increasing or Decreasing 数位dp

    传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...

  8. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位dp)

    题目链接:https://ac.nowcoder.com/acm/contest/163/J 题目大意:给定一个数N,求区间[1,N]中满足可以整除它各个数位之和的数的个数.(1 ≤ N ≤ 1012 ...

  9. The 2018 ACM-ICPC上海大都会赛 J Beautiful Numbers (数位DP)

    题意:求小于等于N且能被自己所有位上数之和整除的数的个数. 分析:裸的数位dp.用一个三位数组dp[i][j][k]记录:第i位,之前数位之和为j,对某个mod余数为k的状态下满足条件的个数.这里mo ...

随机推荐

  1. web前端性能优化 (share)

    本文转自:http://www.cnblogs.com/50614090/archive/2011/08/19/2145620.html 一. WEB前台的优化规则 一.尽量减少 HTTP 请求 有几 ...

  2. Android学习总结(十六) ———— MediaPlayer播放音频与视频

    一.基本概念 本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构.Android的MediaPlayer包含了Audio和video的播放功能,在Andr ...

  3. (三)SpringMVC之常用注解

    SpringMVC的常用注解 注解 说明 @Controller 用于说明这个类是一个控制器 @RequestMapping 用于注释一个控制器类或者控制器类的方法 @RequestParam 用于将 ...

  4. UVA 11584 Partitioning by Palindromes 划分回文串 (Manacher算法)

    d[i]表示前面i个字符划分成的最小回文串个数, 转移:当第i字符加进来和前面区间j构成回文串,那么d[i] = d[j]+1. 要判断前面的字符j+1到i是不是回文串,可以用Manacher算法预处 ...

  5. python简单爬虫爬取百度百科python词条网页

    目标分析:目标:百度百科python词条相关词条网页 - 标题和简介 入口页:https://baike.baidu.com/item/Python/407313 URL格式: - 词条页面URL:/ ...

  6. python hdfs初体验

    新建目录 chr 新建文件hdfstest1.txt并写入内容 复制hdfstest1.txt的内容到hdfstest2.txt

  7. Asp.Net Core 入门(八)—— Taghelper

    Taghelper是一个服务端的组件,可以在Razor文件中创建和渲染HTML元素,类似于我们在Asp.Net MVC中使用的Html Taghelper.Asp.Net Core MVC内置的Tag ...

  8. 各种分布(distribution)

    正态分布(Normal distribution),又名高斯分布(Gaussian distribution).若随机变量X服从一个数学期望为μ.方差为σ^2(标准差为σ)的正态分布,记为N(μ,σ^ ...

  9. tomcat性能优化 - 网络抄录

    tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化 linux修改TOMCAT_HOME/bin/catalina.s ...

  10. Hibernate查询语句HQL8大特点

    Hibernate拥有一种功能非常强大的查询语言,这种语言被有意得与SQL非常相似,便于开发人员掌握.但不要被HQL的语法表面所迷惑,HQL完全是面向对象的,可以用来过程多态.继承.关联等关系. 1. ...