题目传送门

这道题事实上解并不多,所以我们倒过来从$7$开始搜索。主过程中为广搜,而函数深搜进行拓展。其实是对于前导$0$删去的情况也要考虑,否则只有$20pts$。

最后别忘了判断$7$在不在$[A,B]$。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 #define rep(i, a, b) for (register int i = a; i <= b; ++i)
 6
 7 int A, B, ans, pw[10], dB = 0;
 8
 9 queue< pair<int, int> > q;
10
11 void dfs(int v, int s, int dep, int max_dep, int last) {
12     if (dep > dB+1) return;
13     if (dep == max_dep) {
14         if (s <= B && last) {
15             q.push(make_pair(s, dep));
16             if (s >= A)
17                 ans++;
18         }
19         return;
20     }
21     int bit = v % 10;
22     if (bit+last < 10) dfs(v / 10, s + (bit+last) * pw[dep], dep+1, max_dep, bit+last);
23     if (last-bit >= 0 && bit != 0) dfs(v / 10, s + (last-bit) * pw[dep], dep+1, max_dep, last-bit);
24 }
25
26 int main() {
27     scanf("%d%d", &A, &B)
28     if (A <= 7 && 7 <= B) ans++;
29     q.push(make_pair(7, 1));
30     pw[0] = 1;
31     rep(i, 1, 9) {
32         pw[i] = pw[i-1] * 10;
33         if (B > pw[i]) dB = i;
34     }
35
36     while (!q.empty()) {
37         pair<int, int> h = q.front(); q.pop();
38         rep(i, 0, 9)
39             dfs(h.first, i, 1, h.second+1, i);
40         if (h.second <= dB) q.push(make_pair(h.first, h.second+1));
41     }
42
43     printf("%d", ans);
44     return 0;
45 }

这道题如果要打表也可以,就是表会很大。

转载于:https://www.cnblogs.com/ac-evil/p/10339825.html

[洛谷P1822]魔法指纹相关推荐

  1. [dfs] 洛谷 P1822 魔法指纹

    题目描述 对于任意一个至少两位的正整数n,按如下方式定义magic(n):将n按十进制顺序写下来,依次对相邻两个数写下差的绝对值.这样,得到了一个新数,去掉前导0,则定义为magic(n).若n为一位 ...

  2. 洛谷 P1583 魔法照片

    P1583 魔法照片 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初 ...

  3. 洛谷——P1583 魔法照片

    题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...

  4. [分块打表] [Luogu P1822] 魔法指纹

    题目传送门 (反正老年选手写题解也没人看随便水2333333) 一向毒瘤的 dayu 模拟赛这回搞到了这道题-- 看起来很像数位 DP 不是吗? 可是不会转移啊QAQ--想了半天决定分块打表! 分块打 ...

  5. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  6. 模拟——魔法少女小Scarlet(洛谷 P4924)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷 P4924 接下来进行旋转操作 旋转分为两部分,一部分是顺时针旋转,一部分是逆时针旋转 经过观察在我们可以发现顺时针旋转时原来 ...

  7. 洛谷日报 2020年3月前索引

    2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https://www.luo ...

  8. 洛谷日报索引(2020、2019、2018)

    历年洛谷日报索引 2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https: ...

  9. [转载]洛谷日报索引

    2019年 6月 #183[朝田诗乃]你以为莫队只能离线?莫队的在线化改造 https://shoko.blog.luogu.org/moqueue #182[Heartlessly ]常用距离算法详 ...

最新文章

  1. pku1182(食物链) hdu3047 Zjnu Stadium
  2. python 面向对象学习
  3. mysql+影响的行数+获取_我们如何获得受MySQL查询影响的总行数?
  4. no Alcoholic drink anymore
  5. Visual Studio调试之断点技巧篇
  6. php stripslashes 去除反斜线
  7. jsp,div 限制字数,超出部分用省略号代替
  8. 用冒泡法对10个整数从小到大排序
  9. 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确
  10. ES6学习笔记一:let、const、块级作用域
  11. kb931125—rootsupd_kb931125补丁下载
  12. Free MyBatis plugin下载安装及作用
  13. 基于单片机的智能饮水机控制系统设计(毕业设计资料)
  14. 练习27——IO流的所有用法(二)
  15. 达梦数据库DSC小记
  16. shader三种变量类型(uniform,attribute和varying)
  17. everedit 格式化json_Visual studio code (VS code)
  18. 【浅谈爬虫】一名合格的Python爬虫工程师必须具备技能—具体了解四大Python爬虫分类以及爬虫基本原理实现
  19. 为了找到物美价廉的房子,连夜爬了某租房网站1W多条租房信息
  20. 【使用指南】Excel筛选包含指定文本所在的整行

热门文章

  1. Mysql存储引擎原理
  2. ubuntu中的日志文件位置,用于错误查找
  3. one thread one loop 思想
  4. 字符串中最后一个单词长度
  5. 带表头节点单链表及其基本应用
  6. [Jarvis OJ - PWN]——[XMAN]level3_x64
  7. 15.10.4 捕获异常
  8. 使用Thrift RPC编写程序
  9. Thirft框架介绍
  10. 深度学习:卷积神经网络(convolution neural network)