正题


大意

如果一个数每一位都小于k那么这个数是好数。给出n和k,求1-n里有多少个好数。


解题思路1

将起改为一个k+1进制的数,那么每次加1后这个数都是好数。然后判断一下是否大于n(十进制的情况下)

解题思路2

数位dp,时间复杂度O(n的位数):
f[i]表示后i位数没有被前面的数影响的好数数量
g[i]表示后i位数被前面的数影响的好数数量
n[i]表示n的第i位数
然后动态转移方程

f[i]=f[i−1]∗(k+1)f[i]=f[i−1]∗(k+1)

f[i]=f[i-1]*(k+1)

g[i]=f[i](n[i]>k)g[i]=f[i](n[i]>k)

g[i]=f[i] (n[i]>k)

g[i]=g[i−1]+f[i−1]∗n[i](n[i]<=k)g[i]=g[i−1]+f[i−1]∗n[i](n[i]<=k)

g[i]=g[i-1]+f[i-1]*n[i] (n[i]


代码1

#include<cstdio>
using namespace std;
int a[9],maxs[9],w,m,s,n;
bool add()
{bool flag=0;a[1]++;//加1for (int i=1;i<=w;i++){if (a[i]>m){a[i+1]++;a[i]=0;//进位}if (a[i]>maxs[i]) flag=true;else if (a[i]<maxs[i]) flag=false;//判断大小}if (a[w+1]!=0) return true;return flag;
}
int main()
{   scanf("%d%d",&n,&m);a[1]=0;for (int i=n;i;i/=10){maxs[++w]=i%10;//计算}while (true){if (add()) break;s++;}printf("%d",s);
}

代码2

#include<cstdio>
using namespace std;
int n,num,g,f,k;
int main()
{scanf("%d%d",&n,&k);f=1;g=1;for (n=n;n;n/=10){num=n%10;if (num>k) g=(k+1)*f;else g+=num*f;f=(k+1)*f;//动态转移}printf("%d",g-1);
}

【2018.4.7】模拟赛之一-ssl2382 K好数【数位dp】相关推荐

  1. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  2. 算法训练 K好数(dp+动态规划)

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

  3. 【校内模拟】A(容斥原理)(数位DP)(范德蒙德恒等式)(高精度)

    简要题意: 请你对满足下列条件的正整数序列 A1,A2⋯AnA_1,A_2\cdots A_nA1​,A2​⋯An​ 进行计数. ∀1≤i≤n,Li≤Ai≤Ri\forall 1\leq i\leq ...

  4. 2018,10,19模拟赛

    jz的题...写炸了不少暴力...还有容斥等不太熟练 T1以为n^2*m过不去,想了好久 归根到底还是我太蒻了qwq 存一下代码 t1 为了稳一点写了部分分...还没删,可以自行跳过ovo #incl ...

  5. 【2018.3.17】模拟赛之二-ssl1862jzoj1366 删数【区间dp】

    正题 链接 需要纪中OJ账号 有n个数,可以选择删除一段区间,价值为|xi – xk|*(k-i+1).求删完所有数的最大价值 输入输出(需要自取) Input 输入文件的第一行为一个正整数N,第二行 ...

  6. 2018.3.10 模拟赛——(2)给出字符串

    题目大意: 给出一个由小写字母组成的字符串.你的任务是找出其最长的出现至少两次的子串的长度.这些重复出现的子串可以重叠,比如:ababa aba视为出现两次 解题思路: 数据较小,字符串长度≤100. ...

  7. 2018.10.2模拟赛

    八数码 1 问题描述 有33 共9 个格子,其中有一个格子是空的,其他格子填满了18 之间不同的数字.通过 移动格子可以改变数字和空格的位置,现在给你初状态和末状态,请你给出最少的移动步数. 2 输入 ...

  8. 2018.10.31模拟赛

    T1 lgg L 君和 G 君在玩一个游戏.G 君写下一个字符串 A,L 君将其复制一遍连接到 A 串后面得 到字符串 B, G 君又在 B 的任意位置(包括首尾)插入一个字符得到字符串 C.现在你得 ...

  9. 2018蓝桥杯模拟赛(一)H【floyd求最短路径】

    蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印. 封印之门上有一串文字,只包含小写字母, ...

最新文章

  1. mvc手把手教你写excel导入
  2. Ext学习-前后交互模式介绍
  3. xmemcached发布1.3.6
  4. Mestasploit 客户端渗透
  5. [20161031]rman备份与数据文件OS块.txt
  6. C/C++命令行参数那点事
  7. 顺丰快递单号的规律_顺丰速运顺丰快递单号查询大全
  8. 使用carbon_东华大学《Carbon》多孔碳纳米纤维复合膜,优异电磁波吸收性能!
  9. PyTorch 深度学习:31分钟快速入门——Batch Normalization
  10. NLP学习一 形式语言与自动机
  11. Android8.0.0的BUG Only fullscreen opaque activities can request orientation
  12. pandas的一些理解
  13. Android穿山甲SDK接入,已封装直接使用
  14. 求数组所有非空子序列的和
  15. 从订单信息页面进入订单详细商品页面,最简单的MVC思想
  16. Laravel 存在SQL注入漏洞
  17. 74LS85 比較器 【数字电路】
  18. html5 手机模板 解放区,解放区异形模板
  19. FFmpeg+SDL 视频播放器
  20. 名词性从句 - 同位语从句

热门文章

  1. linux开机自动挂载硬盘指定权限,Linux开机自动挂载硬盘
  2. 登录服务器修改数据库吗,如何修改服务器登录数据库 sa
  3. cefsharp49显示html,CefSharp-cefshar
  4. MYSQL数据库表大小计算,计算mysql数据库数据表的大小,不精确,只是大略的数据...
  5. Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...
  6. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
  7. oracle asm 配置失败,Oracle ASMLib安装与配置
  8. C++11的for循环使用auto的新用法
  9. 解决Java当中 用point 画图时背景颜色变成黑色问题
  10. java的hr样式,spring+spring mvc+mybatis开发java医院HR人事管理系统(加强版本+ shiro)...