SPOJ MYQ10 (数位DP)

题意

询问区间[a,b]中的Mirror Number的个数,其中Mirror Number是指把它横着翻转后还能表示同样的数字。

思路

注意这个可不是回文数。。除了0,1,8,别的数字翻转过后就不是数字了。所以策略就是记忆化按位搜索,每位只搜0,1,8,最后再判断是否回文,统计即可。这个判断回文是个小麻烦,因为它需要和前面的位相比较,所以用一个全局数组tmp[]表示枚举的每位的数字。 回过头来我觉得设置全局变量似乎不是一个好方法……它应该会破坏DP数组的区间唯一性……

代码

[cpp] #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <set> #include <stack> #include <queue> #define MID(x,y) ((x+y)/2) #define MEM(a,b) memset(a,b,sizeof(a)) #define REP(i, begin, end) for (int i = begin; i <= end; i ++) using namespace std; typedef long long LL; typedef vector VI; typedef set SETI; typedef queue QI; typedef stack SI; char num[50]; LL dp[47][47][2]; int tmp[50]; LL dfs(int pos, int start, bool flag, bool limit){ if (pos==-1) return flag; if (!limit && ~dp[pos][start][flag]) return dp[pos][start][flag]; int end = limit?(num[pos]-48):9; LL res = 0; for (int i = 0; i <= end; i ++) if (i == 0 || i == 1 || i == 8){ bool st = (start==pos && i == 0); bool next_flag = flag; if (flag){ if (!st && pos < (start+1)/2) next_flag = (i == tmp[start-pos]); } tmp[pos] = i; res += dfs(pos-1, st?start-1:start, next_flag, limit&&(i==end)); } return limit ? res : dp[pos][start][flag] = res; } LL solve(char x[]){ int len = strlen(x); for (int i = 0; i < len; i ++){ num[i] = x[len-1-i]; } num[len] = 0; return dfs(len-1, len-1, 1, 1); } int main(){ //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int t; char a[50], b[50]; scanf("%d", &t); getchar(); MEM(dp, -1); while(t --){ scanf("%s %s", a, b); LL res = solve(b)-solve(a); int len = strlen(a); bool ok = true; for (int i = 0; i < len; i ++){ if ((a[i] != '0' && a[i] != '1' && a[i] != '8')||(a[i] != a[len-1-i])){ ok = false; break; } } if (ok) res ++; printf("%lld\n", res); } return 0; } [/cpp]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114320.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8月总结抽奖

1首先是小小总结下 8 月发文的情况&#xff0c;总共推文时间是 21 天&#xff0c;原创文章有 9 篇&#xff0c;分别如下&#xff1a;Jupyter 进阶教程PyTorch 系列 | 数据加载和预处理教程PyTorch系列 | 如何加快你的模型训练速度呢&#xff1f;Leetcode 系列 | 反转链表PyTorc…

【文件系统】浅解释FAT32

了解完linux下的文件系统之后&#xff0c;顺便对FAT32也研究一下。 假如一个FAT32表如下所示。 文件的簇应该保留在目录中&#xff0c;根据此簇&#xff0c;应该能得到一个块。 要找到文件的下一块&#xff0c;就要根据簇在FAT中寻找&#xff0c;所以FAT中存储的不是本簇的簇号…

全网首发!2020年AI、CV、NLP顶会最全时间表!

点上方蓝字计算机视觉联盟获取更多干货在右上方 设为星标 ★&#xff0c;与你不见不散编辑&#xff1a;Sophia计算机视觉联盟 原创总结 | 公众号 CVLianMeng联盟花费一周对2020年顶会时间进行了总结&#xff01;2020 AI、CV、NLP顶会时间表&#xff0c;包含会议举办的时间、…

putty自动登录设置

1.用PuTTY SSH 密钥生成工具puttygen.exe生成密钥. 生成的密钥类型使用默认的SSH-2 RSA&#xff0c;位长度改为1024位 点击“生成”按钮&#xff0c;然后再在空白区域移动鼠标,以便产生随机数据&#xff0c;直至生成完密钥数据。 点击保存私钥(可以不设置密码保护). 2.SSH密码方…

互联网大佬学历背景大揭秘,看看是你的老乡还是校友

作者&#xff1a;徐麟&#xff0c;某互联网公司数据分析狮&#xff0c;个人公众号数据森麟&#xff08;id&#xff1a;shujusenlin&#xff09;前言 互联网作为一个快速发展的新兴领域&#xff0c;聚集了大量的优秀人才&#xff0c;前沿技术的广泛应用也不断地为互联网注入着新…

Setup SQL Server 2008 Maintenance Plan Email Notifications

一条龙作完&#xff0c;如何设置EXCHANGE的操作员邮件通知。。 ~~~~ http://808techblog.com/2009/07/setup-sql-server-2008-maintena.html For most of the SQL installs that I maintain, nightly SQL dumps to disk and then copy to tape is my preferred backup method. …

PyTorch | 保存和加载模型教程

点击上方“算法猿的成长”&#xff0c;选择“加为星标”第一时间关注 AI 和 Python 知识图片来自 Unsplash&#xff0c;作者&#xff1a; Jenny Caywood 2019 年第 72 篇文章&#xff0c;总第 96 篇文章总共 7000 字&#xff0c;建议收藏阅读原题 | SAVING AND LOADING MODELS作…

RMI(Remote Method Invocation,远程方法调用)

RMI&#xff08;Remote Method Invocation&#xff0c;远程方法调用&#xff09; RMI&#xff08;Remote Method Invocation&#xff0c;远程方法调用&#xff09;是用Java在JDK1.1中实现的&#xff0c;它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语…

都说dlib是人脸识别的神器,那到底能不能识破妖怪的伪装?

作者&#xff1a;盛光晓原文链接&#xff1a;https://blog.csdn.net/esa72ya/article/details/89189987众所周知&#xff0c;dlib是人脸识别的利器&#xff0c;被广泛应用于行为检测、安防工程、表情分析等&#xff0c;甚至还有学术界的前沿老师将这一技术用于上课点名&#xf…

hdu1024Max Sum Plus Plus

之前在书里看过了&#xff0c;但是没有做过例题&#xff0c;忘记它的原理了 dp[i][j]表示前i个数中选j段所能构成的最大值&#xff0c;&#xff08;强调一下&#xff0c;这j段包括最后一个元素[i]的&#xff09;&#xff0c;这样第i个元素要不跟倒数第二个一起&#xff0c;要不…

国内有哪些不错的CV(计算机视觉)团队

点击上方“算法猿的成长”&#xff0c;选择“加为星标”第一时间关注 AI 和 Python 知识来源&#xff1a;知乎问题对于初入 CV 领域的同学&#xff0c;如果可以加入一个不错的团队&#xff0c;有好的导师带着&#xff0c;同时还有可以请教的师兄师姐&#xff0c;会加快入门 CV …

数据全裸时代,你的隐私有多容易获取?

大家好我是痴海&#xff0c;一位转型做增长的爬虫师&#xff0c;由于工作的缘故&#xff0c;对于身边许多信息都非常敏感。上个月朋友圈有很多人都在晒四六级成绩&#xff0c;有人欢喜有人忧愁&#xff0c;而我却感受到深深的恐惧。2018 年腾讯手机管家在一个报告中公布了一个数…

单元测试的一些基本概念

我们&#xff08;程序员&#xff09;多多少少都写过单元测试&#xff0c;有的可能几年前写的几行代码&#xff08;比如我&#xff09;&#xff0c; 姑且也算写过吧&#xff0c;但是有些东西还是不是很清楚&#xff0c;比如什么是单元测试&#xff1f;怎么才算是好的单元测试&am…