• bzoj1026: [SCOI2009]windy数


    数位dp。。。要求数位之间的差>=2。dp[i][j]表示第i位数字为j。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define rep(i,s,t) for(int i=s;i<=t;i++)
    #define dwn(i,s,t) for(int i=s;i>=t;i--)
    #define clr(x,c) memset(x,c,sizeof(x))
    int read(){
    	int x=0;char c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    }
    
    int as(int x){
    	return x>=0?x:-x;
    }
    int dp[12][10],bit[12];
    void init(){
    	rep(i,0,9) dp[1][i]=1;
    	rep(i,2,11) rep(j,0,9) rep(k,0,9) if(as(j-k)>=2) dp[i][j]+=dp[i-1][k];
    }
    
    int work(int x){
    	int tmp=x,cnt=0,ans=0;
    	while(tmp) bit[++cnt]=tmp%10,tmp/=10;
    	rep(i,1,cnt-1) rep(j,1,9) ans+=dp[i][j];
    	rep(i,1,bit[cnt]-1) ans+=dp[cnt][i];
    	dwn(i,cnt-1,1){
    		rep(j,0,bit[i]-1) if(as(j-bit[i+1])>=2) ans+=dp[i][j];
    		if(as(bit[i]-bit[i+1])<2) break;
    	}
    	return ans;
    }
    
    int main(){
    	int A=read(),B=read();init();
    	printf("%d
    ",work(B+1)-work(A));
    	return 0;
    }
    

      

    1026: [SCOI2009]windy数

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 5661  Solved: 2532
    [Submit][Status][Discuss]

    Description

      windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,
    在A和B之间,包括A和B,总共有多少个windy数?

    Input

      包含两个整数,A B。

    Output

      一个整数

    Sample Input

    【输入样例一】
    1 10
    【输入样例二】
    25 50

    Sample Output

    【输出样例一】
    9
    【输出样例二】
    20

    HINT

    【数据规模和约定】

    100%的数据,满足 1 <= A <= B <= 2000000000 。

    Source

     
    [Submit][Status][Discuss]
  • 相关阅读:
    python的函数修饰符(装饰器)
    hdu1175连连看(dfs+细节)
    hdu2553N皇后问题(dfs,八皇后)
    hdu1045Fire Net(经典dfs)
    hdu1050Moving Tables(贪心)
    hdu2037今年暑假不AC(贪心,活动安排问题)
    hdu1052Tian Ji -- The Horse Racing(贪心,细节多)
    hdu1009FatMouse' Trade(贪心)
    hdu1455Sticks(经典dfs+剪枝)
    hdu2509Be the Winner(反nim博弈)
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5720363.html
Copyright © 2020-2023  润新知