HUD 2089 位数dp
/*
做的不多的位数dp
暴力的话 不知道多少组数据 会T
所以写dp 思路就和数学课本上那种“不超过xxx的x位偶数有几个”
这里可以类似的维护一个前缀和模样的东西(但又不同于前缀和)
状态:f[i][j] 表示以j开头的i位数符合条件的个数 (j可以是0)
然后可以已处理一下像是10000这种整的数 注意舍去不符合条件的
然后对于一个像123456这样不整的数 就从该高位逐位找
以此类推
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int st,en,ans,data[],l,f[][];
void ready()
{
f[][]=;
for(int i=;i<=;i++)//枚举位数
for(int j=;j<=;j++)//枚举第i为是什么
for(int k=;k<=;k++)//枚举第i-1为是什么
if((j==&&k==)||j==||k==)continue;//舍去
else f[i][j]+=f[i-][k];
}
void get_data(int x)
{
while(x>)
{
data[++l]=x%;
x=x/;
}
}
int slove(int x)
{
ans=;l=;
memset(data,,sizeof(data));
get_data(x);//得到每一个数拆完是什么
for(int i=l;i>=;i--)
{
for(int j=;j<data[i];j++)//枚举第i位是什么 枚举到<data[i]
if((j==&&data[i+]==)||j==)continue;
else ans+=f[i][j];
if(data[i]==||(data[i]==&&data[i+]==))break;//往后找的一定包含这个4 或者62 就不用找了
}
return ans;
}
int main()
{
//freopen("cin.in","r",stdin);
//freopen("test.out","w",stdout);
ready();
while()
{
scanf("%d%d",&st,&en);
if(st==&&en==)break;
printf("%d\n",slove(en+)-slove(st));
}
return ;
}
HUD 2089 位数dp的更多相关文章
- HDU 4722 Good Numbers(位数DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)
Description If we sum up every digit of a number and the result can be exactly divided by 10, we say ...
- hdu:2089 ( 数位dp入门+模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位dp的模板题,统计一个区间内不含62的数字个数和不含4的数字个数,直接拿数位dp的板子敲就行 ...
- hud 2089 不要62 (数位dp)
#include<stdio.h> #include<string.h> #include<math.h> #define max 10 ]; int number ...
- HUD 2089
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 2089 数位dp
链接:https://vjudge.net/problem/23625/origin 中文,题目不用说了. 其实这题的数据很小,所以直接暴力也可以过,但是还是要学会数位dp,因为并不是每一题的数据都会 ...
- HDU 2089 数位dp入门
开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢) 传说院赛要取消 ? ... 这么菜不出去丢人也好吧~ #include<stdi ...
- HDU 2089 数位dp/字符串处理 两种方法
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 不要62(HDU 2089数位dp入门)
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 分析:dp[i][f]数字表示不含 4 和 62的前提下,剩余长度为 len ,首位是否为 6 的个数. #include < ...
- HDU - 2089 数位DP 初步
中文题目,不要62和4 从高位往低位DP,注意有界标志limit的传递 dp2记忆有界情况下的计数结果,据说用处不大 我所参考的入门文章就是半搜索(有界)半记忆(无界)的 进阶指南中提出dfs维度有多 ...
随机推荐
- C语言学习之笔记
第一章 概述 1. C语言的特点 ①语言简洁.紧凑,使用方便.灵活.共有32个关键字(也称保留字),9种控制语句. ②运算符丰富,共有34种运算符. ③数据结构丰富,数据类型有:整型.实型.字符型.数 ...
- 【C语言】字符集和词汇
C语言字符集和词汇 一.相关基础知识 字符是组成语言的最基本的元素 词汇,又称语汇,是一种语言里所有的(或特定范围的)词和固定短语的总和 二.具体内容 C语言字符集由:字母.数字.空格.标点和特殊字符 ...
- 优秀开源项目的svn地址
很多优秀的开源项目已经提供SVN源码签出了,无论是解疑还是学习,都是一大幸福之事啊! Apache的SVN库,强烈推荐! http://svn.apache.org/repos/asf/ 里面不但有S ...
- go语言细节
1 数组与字符串为值类型,切片.映射.通道为值类型,赋值需注意. package main import ( "fmt" ) func main() { //数组 a1 := [] ...
- House Of Hello恶搞包为什么如此受热捧!
凤凰时尚 在大多数人的心中,奢侈品都是昂贵的,摆在精美的橱窗中,动辄上万的价格,高贵而冷艳,也让很多人望而却步.然而,最近在很多时尚年轻一族中却流传着这样一句话“昂贵不等于奢侈,奢侈是一种生活态 ...
- BZOJ 1483 梦幻布丁
Description \(N\)个布丁摆成一行,进行\(M\)次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为\(1,2,2,1\)的四个布丁一共有\ ...
- BZOJ 1087 互不侵犯
Description 在\(N \times N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共\(8 ...
- 【Java】在Eclipse中使用JUnit4进行单元测试(初级篇)
本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能 ...
- 对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解(转)
所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体.简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合 ...
- 【字符串】【最小表示法】Vijos P1683 有根树的同构问题
题目链接: https://vijos.org/p/1683 题目大意: 给M棵树,每棵N个点,N-1条边,树边有向,问哪些树同构. 题目思路: [字符串][最小表示法] 用()表示一个节点,那么三个 ...