hdoj5327【前缀和思想】

来源:互联网 发布:董小飒淘宝店赚钱吗 编辑:程序博客网 时间:2024/06/06 18:30

题意:
找给定区间的美丽数,美丽数的意思就是这个数每个位上的数都是唯一的。
思路:
前缀和的思想。
感想:
就是你当前位置代表某个特性的前面的所有和(瞎比比的,说了下感觉)。前提是你必须找到这样的特性,比如CF的很多题目都是这样子,给你1e5的查询,题解马上一堆线段树,这种区间的预处理,前缀和的思想很好。还有就有一题实现区间的压缩,也是很棒啊。

#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const double eps=1e-6;const double pi=acos(-1.0);const int mod=998244353;const int INF=0x3f3f3f3f;const int N=1e5+10;bool vis[15];int d[N];int shi(int x){    int k;    memset(vis,0,sizeof(vis));    for(int i=1;;i++){        k=x%10;        if(!vis[k])            vis[k]=1;        else            return 0;        x/=10;        if(!x)            break;    }    return 1;}void init(){    memset(d,0,sizeof(d));    for(int i=1;i<=N;i++){        if(shi(i))            d[i]=1;        else            d[i]=0;    }    for(int i=2;i<=N;i++)        d[i]+=d[i-1];}int main(){    int t;    cin>>t;    init();    while(t--){        int a,b;        scanf("%d%d",&a,&b);        printf("%d\n",d[b]-d[a-1]);    }    return 0;}
0 0
原创粉丝点击