ZOJ 3962 Seven Segment Display

Posted Wisdom+.+

tags:

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

Seven Segment Display

思路:

经典数位dp

代码:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))

int cost[16]={6,2,5,5,4,5,6,3,7,6,6,5,4,5,5,4};
int d[10];
LL dp[10][10000];
LL dfs(int pos,int sum,bool limit){
    if(pos<0)return sum;
    if(!limit&&~dp[pos][sum])return dp[pos][sum];
    int top=limit?d[pos]:15;
    LL t=0;
    for(int i=0;i<=top;i++){
        t+=dfs(pos-1,sum+cost[i],limit&&i==d[pos]);
    }
    if(!limit)dp[pos][sum]=t;
    return t;
}
LL solve(LL n){
    for(int i=0;i<8;i++){
        d[i]=n%16;
        n/=16;
    }
    return dfs(7,0,true);
}
int main(){
    LL n,m,l,r;
    int T;
    LL s=4294967295;
    mem(dp,-1);
    scanf("%d",&T);
    while(T--){
        scanf("%lld%llX",&n,&m);
        l=m;
        r=m+n-1;
        if(r>s){
            printf("%lld\n",solve(r-s-1)+solve(s)-solve(l-1));
        }
        else{
            printf("%lld\n",solve(r)-solve(l-1));
        }
    }
    return 0;
}

 

以上是关于ZOJ 3962 Seven Segment Display的主要内容,如果未能解决你的问题,请参考以下文章

2017浙江省赛 E - Seven Segment Display ZOJ - 3962

ZOJ 3962:Seven Segment Display(思维)

ZOJ 3962 Seven Segment Display(数位DP)

ZOJ Seven-Segment Display 暴力dfs + 剪枝

ZOJ 3954 Seven-Segment Display

ZOJ 3962