구간 문제, 접두어 및 (Olympiad, HDU 5327)

제목 링크:
https://vjudge.net/problem/HDU-5327
만약 데이터가 크지 않다면 폭력 접두사와 함께 생각해 보세요. 빠르고 좋아요.
디지털 DP가 미숙하다.
코드
#include
#include
using namespace std;
const int maxn = 1000010;

int sum[maxn];
int vis[10];

int cul(int x)
{
    memset(vis,0,sizeof(vis));
    while(x)
    {
        if(vis[x%10]) return 0;
        vis[x%10]=1;
        x/=10;
    }
    return true;
}

void init()
{
    for(int i=1;i-1]+cul(i);
}

void solve()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d
"
,sum[b]-sum[a-1]); } int main() { init(); int T; scanf("%d",&T); while(T--) solve(); return 0; }

좋은 웹페이지 즐겨찾기