数位dp(Balanced Numbers )
题意:一个数,如果满足奇数的数字出现偶数次,偶数的数字出现奇数次,
就是符合的数,注比如:12313 就满足,因为1 3出现了偶数次。2出现了奇数次
思路,对于这道题,就是状态压缩加dp;
对于一个数字来说,0~9每一位,都只有3种状态量,要么从未出现,要么出现次数为奇
要么为偶,所以可以用3进制来表示,通过3进制表示出其状态,然后到pos-1的时候
判断0~9的各个状态是否符合条件即可
#include<cstdio>
#include<string.h>
using namespace std;
typedef long long ll;
ll dp[][];
ll a[];
int check(int s)
{
for(int i=;i<=;++i){
int k=s%;
s/=;
if(k==) continue;
else if((i&)&&k==) return ; //若为奇数,如果出现次数也为奇,则退出;
else if(!(i&)&&k==) return ; //若为偶数,。。。。。。。。。。。。。。
}
return ;
}
//三进制代码;
int change(int d,int s)
{
int temp[];
for(int i=;i<=;i++){
temp[i]=s%;
s/=;
}
s=;
if(temp[d]==) temp[d]=; //表示其状态的代码
else temp[d]=-temp[d]; //表示其状态的代码
for(int i=;i>=;i--)
s=s*+temp[i];
return s;
} ll dfs(ll pos,ll sum,bool flag,bool limit)
{
//flag是判断前导0用的
if(pos==-) return check(sum);
if(!limit&&dp[pos][sum]!=-) return dp[pos][sum];
int up=limit? a[pos]:;
ll ans=;
for(int i=;i<=up;i++)
//如果之前一直都是0,i==0,则sum的值依旧等于0
ans+=dfs(pos-,(flag==&&i==)? :change(i,sum),flag||i>,limit&&i==a[pos]);
if(!limit) dp[pos][sum]=ans; //如果i已经大于0,则再也没有前导0这一说法
return ans;
}
ll solve(ll x)
{
int pos=;
while(x){
a[pos++]=x%;
x/=;
}
return dfs(pos-,,,true);
}
int main()
{
int T;
scanf("%d",&T);
memset(dp,-,sizeof(dp));
while(T--){
ll l,r;
scanf("%lld%lld",&l,&r);
printf("%lld\n",solve(r)-solve(l-));
}
return ;
}
数位dp(Balanced Numbers )的更多相关文章
- Balanced Numbers (数位dp+三进制)
SPOJ - BALNUM 题意: Balanced Numbers:数位上的偶数出现奇数次,数位上的奇数出现偶数次(比如2334, 2出现1次,4出现1次,3出现两次,所以2334是 Balance ...
- Balanced Numbers (数位DP)
Balanced Numbers https://vjudge.net/contest/287810#problem/K Balanced numbers have been used by math ...
- SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]
题目链接:http://www.spoj.com/problems/BALNUM/en/ Time limit: 0.123s Source limit: 50000B Memory limit: 1 ...
- SPOJ10606 BALNUM - Balanced Numbers(数位DP+状压)
Balanced numbers have been used by mathematicians for centuries. A positive integer is considered a ...
- Balanced Numbers(数位dp)
Description Balanced numbers have been used by mathematicians for centuries. A positive integer is c ...
- spoj Balanced Numbers(数位dp)
一个数字是Balanced Numbers,当且仅当组成这个数字的数,奇数出现偶数次,偶数出现奇数次 一下子就相到了三进制状压,数组开小了,一直wa,都不报re, 使用记忆化搜索,dp[i][s] 表 ...
- SPOJ - BALNUM Balanced Numbers(数位dp+三进制状压)
Balanced Numbers Balanced numbers have been used by mathematicians for centuries. A positive integer ...
- SPOJ - BALNUM - Balanced Numbers(数位DP)
链接: https://vjudge.net/problem/SPOJ-BALNUM 题意: Balanced numbers have been used by mathematicians for ...
- SPOJ BALNUM Balanced Numbers (数位dp)
题目:http://www.spoj.com/problems/BALNUM/en/ 题意:找出区间[A, B]内所有奇数字出现次数为偶数,偶数字出现次数为计数的数的个数. 分析: 明显的数位dp题, ...
- HDU 3709 Balanced Number (数位DP)
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
随机推荐
- LeetCode 1046. 最后一块石头的重量 (贪心)
有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x == y,那 ...
- BLE直接Data channel抓包方法汇总
之前一致在做一些有关与BLE安全研究的“基础设施建设”工作,我们知道,在BLE进入跳频之后,所有的固定标志都会消失,但是是不是意味着没办法了?不是的.我会提出一些恢复出来的方法. 首先,前导码分析,B ...
- MarkDown图文编辑系列教程(二)
一.写在前面 引言 本文是我写的MarkDown系列教程的第二篇,前一篇的地址:MarkDown图文编辑系列教程(一) 读完本篇,你将获得 学会使用markdown语法进行:区块引用(一种常用的引用格 ...
- jQuery---自定义动画 animate();
自定义动画 animate(); 第一个参数:{对象},里面可以传需要动画的样式 第二个参数:speed 动画的执行时间 第三个参数:easing 动画的执行效果 第四个参数:callback 回调函 ...
- 《剑指Offer》各面试题总结
目录 前言 面试题4 二维数组的查找 面试题5:替换空格 面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:斐波那契数列 面试题1 ...
- vjudge I - Vladik and fractions 一道小学生的提。
原题链接:https://vjudge.net/contest/331993#problem/I Vladik and Chloe decided to determine who of them i ...
- 在bootstrap的column中的formatter里不能传递row参数吗?
row 是一个对象 你需要把它转成字符串用JSON.stringify(row),这样就是字符串了,但是还有问题,你需要给加密一下encodeURI(JSON.stringify(row)),然后方 ...
- Python-Django学习笔记(三)-Model模型的编写以及Oracle数据库的配置
Django使用的 MTV 设计模式(Models.Templates.Views) 因此本节将围绕这三部分并按照这个顺序来创建第一个页面 模型层models.py 模型是数据唯一而且准确的信息来源. ...
- centos7在命令界面使用命令可以执行,但在jenkins中输入命令报Chrome has crashed.
问题:selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: ex ...
- 二分-E - Rikka with Mutex
E - Rikka with Mutex Sometimes, technical terms implicate some life philosophy. Mutex is one of them ...