zoukankan      html  css  js  c++  java
  • [SCOI2009]windy数

    题目

    洛谷
    BZOJ

    做法

    一眼题系列打半天结果循环写反了

    套路:
    (1、)预处理(dp[i][j])(i)位为(j)的方案数
    (2、Solve(r)-Solve(l-1))
    (~~~~)(高位不动处理低位,最高位(1)~(x-1),前导(0)情况)

    My complete code

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    LL l,r;
    LL dp[15][10],a[15];
    inline void Calc(){
    	for(LL i=0;i<=9;++i) dp[1][i]=1;
    	for(LL i=2;i<=10;++i)
    	    for(LL j=0;j<=9;++j)
    	        for(LL k=0;k<=9;++k)
    	            if(abs(j-k)>=2) 
    				    dp[i][j]+=dp[i-1][k];
    }
    inline LL Solve(LL x){
    	LL len(0),tmp(x),ret(0);
    	while(tmp) a[++len]=tmp%10,tmp/=10;
    	for(LL i=len-1;i>=1;--i){
    	    for(LL j=0;j<a[i];++j) 
    		    if(abs(j-a[i+1])>=2)
    			    ret+=dp[i][j];
    		if(abs(a[i]-a[i+1])<2) break;
    	} 
    	for(LL i=1;i<a[len];++i) ret+=dp[len][i];
    	for(LL i=1;i<len;++i) 
    	    for(LL j=1;j<=9;++j)
    		    ret+=dp[i][j];
    	return ret;
    }
    int main(){
    	Calc();
    	scanf("%lld%lld",&l,&r);
    	printf("%lld",Solve(r+1)-Solve(l));
    	return 0;
    }
    
  • 相关阅读:
    CSS
    CSS
    CSS
    CSS
    CSS
    CSS
    FLASK
    人物
    关于反射
    释放c盘空间
  • 原文地址:https://www.cnblogs.com/y2823774827y/p/10385132.html
Copyright © 2011-2022 走看看