P2110 欢总喊楼记

Posted zutter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2110 欢总喊楼记相关的知识,希望对你有一定的参考价值。

题目描述

诗经有云:

关关雎鸠,在河之洲。窈窕淑女,君子好逑。

又是一个被风吹过的夏天……一日欢总在图书馆中自习,抬起头来,只见一翩跹女子从面前飘过,真是回眸一笑百媚生,六宫粉黛无颜色!一阵诗情涌上欢总心头,他顺手写下那诗句:

啊,你是爱,是暖,是希望,你是人间四月天!

任时光匆匆而过,欢总一直没能忘记那女子。人言单思苦,欢总偏单思。夜夜难入梦,此心淑可知。偶然一次机会,欢总得知了那女孩的信息。一日,欢总终于鼓起了勇气,他向她表白!

那晚的夜色格外美丽,欢总在楼下慷慨激昂,气氛浪漫而感人。女孩有点心动了,但是直接答应是不是有点太不矜持了呢?于是,她想难难欢总,看看他到底有多少诚意。

女孩给出了两个整数 L 和 R,她要欢总数出到底有多少个这样的 X:L <= X <= R,且 X 的最高位与最低位相等(十进制下)。比如,2、101、329873可以是这样的 X,而23、4567就不是。

孩子们,欢总下辈子的幸福生活就靠你们帮忙了!

输入输出格式

输入格式:

一行,这一行包括两个整数 L 和 R。

输出格式:

一行,这一行包括一个整数,即满足所述性质的 X 的个数。

输入输出样例

输入样例#1: 复制

2 47

输出样例#1: 复制

12

说明

【数据规模】

50% 1<=L<=R<=10^6

100% 1<=L<=R<=10^18


数位dp,非常简单的那种
一定要数好数据范围!!! 记得开LL!!!!


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define LL long long

using namespace std;

int w[20],e[20],i,m,n,j,k;
LL p,q,ans,f[20][10][2][2];

int main()
{
    scanf("%lld%lld",&p,&q);
    LL t=q; k=0;
    while(t) k+=1, t/=10;
    t=q;
    for(i=k;i>=1;i--) w[i]=t%10, t/=10;
    t=p;
    for(i=k;i>=1;i--) e[i]=t%10, t/=10;
    for(i=e[1];i<=w[1];i++)
    {
        int l=0,r=0;
        if(i==e[1]) l=1;
        if(i==w[1]) r=1;
        f[1][i][l][r]=1;
        if(k==1) ans+=1;
    }
    for(int i=2;i<=k;i++)
    for(int j=0;j<=9;j++)
    for(int l=0;l<=1;l++)
    for(int r=0;r<=1;r++)
    for(int z=0;z<=9;z++)
    if(f[i-1][j][l][r])
    {
        if(l && z<e[i]) continue;
        if(r && z>w[i]) continue;
        int ll=0, rr=0, las=0;
        if(j==0) las=z;
        else las=j;
        if(l && z==e[i]) ll=1;
        if(r && z==w[i]) rr=1;
        f[i][las][ll][rr]+=f[i-1][j][l][r];
        if(i==k && z==las) ans+=(LL)f[i-1][j][l][r];
    }       
    printf("%lld",ans);
}

以上是关于P2110 欢总喊楼记的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器