lightoj 1205(回文数的数量 数位dp)
来源:互联网 发布:itunes软件怎么下载 编辑:程序博客网 时间:2024/06/14 07:13
经典数位dp,思路就是在数的前一半的时候随意枚举,但是要考虑前导零,后一半跟前边对称就行。
#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int,int> P;#define fi first#define se second#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x)#define PI acos(-1.0)#define ITER set<int>::iteratorconst int Mod = 1e9 + 7;const int maxn = 22 + 10;int bits[maxn];ll dp[maxn][maxn][2];ll dfs(int pos,int l,bool is,bool flag)//l为长度,is判断{ if(pos < 0)return is; if(!flag && ~ dp[pos][l][is])return dp[pos][l][is]; int up = flag ? bits[pos] : 9; ll ret = 0; for(int i = 0; i <= up; i ++) { if(l == pos && i == 0) ret += dfs(pos - 1,l - 1,is,flag && i == up);//前导零 else if(is && pos < (l + 1)/2)ret += dfs(pos - 1,l,is && i == bits[l - pos],flag && i == up);//后一半要跟前边对称 else ret += dfs(pos - 1,l,is,flag && i == up);//前一半随意枚举 } if(!flag)return dp[pos][l][is] = ret; return ret;}ll calc(ll n){ int len = 0;while(n){bits[len ++] = n % 10;n /= 10;} return dfs(len - 1,len - 1,true,true);}int main(){ clr(dp,-1); int Tcase;scanf("%d",&Tcase); for(int ii = 1;ii <= Tcase; ii ++) { ll n,m;scanf("%lld%lld",&n,&m);if(n > m){ll t = n;n = m; m = t;} printf("Case %d: %lld\n",ii,calc(m) - calc(n - 1)); } return 0;}
阅读全文
0 0
- lightoj 1205(回文数的数量 数位dp)
- lightoj 1205 数位DP
- LightOJ-1205-数位dp
- LightOJ 1205 - Palindromic Numbers (数位dp)
- LightOJ 1205 - Palindromic Numbers (数位dp)
- LightOJ 1205 Palindromic Numbers(数位DP)
- LightOJ 1205 Palindromic Numbers(数位dp)
- Lightoj1205——Palindromic Numbers(数位dp+回文数)
- hdu 6156 回文数 数位dp
- 51nod1042 0到9的数量(数位dp)
- 51nod 1009 数字1的数量(数位dp)
- 1042 数字0-9的数量(数位DP)
- lightoj - 1205 Palindromic Numbers (数位dp)好
- 数字0-9的数量 数位dp
- [数位dp] lightoj 1205 Palindromic Numbers
- lightOJ 1205(Palindromic Numbers数位DP)
- lightoj 1205 - Palindromic Numbers 数位DP
- bin巨的数(数位DP)
- 第二十一篇:并发新特性—阻塞队列和阻塞栈(含代码)
- ping百度(外网)出现:unknown host www.baidu.com问题解决
- Java程序员常见的10道XML面试题
- 小程序支付后发送模板消息
- 萌新瑟瑟发抖
- lightoj 1205(回文数的数量 数位dp)
- JAVA每日一题
- 计算机基础知识
- 机器学习常用到的一些算法
- 在使用spring+springMVC+hibernate遇到java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005
- HDU 6129 规律+数论
- oracle数据库常用操作命令
- 一些常用命令