国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ1026: [SCOI2009]windy數(數位dp)

2019-11-14 13:00:52
字體:
來源:轉載
供稿:網友
Description  windy定義了一種windy數。不含前導零且相鄰兩個數字之差至少為2的正整數被稱為windy數。 windy想知道,在A和B之間,包括A和B,總共有多少個windy數?Input  包含兩個整數,A B。Output  一個整數Sample Input【輸入樣例一】1 10【輸入樣例二】25 50Sample Output【輸出樣例一】9【輸出樣例二】20HINT【數據規模和約定】100%的數據,滿足 1 <= A <= B <= 2000000000 。dp[i][j]表示長度為i,最高位為0的數的windy數的個數。這道題是不計前導零的,由于第一次接觸這個,卡在這里好久了。果然還是要多多刷題。題意很簡單,不過值得思考,加油,先睡了。/************************************************************** PRoblem: 1026 User: _ostreamBaba Language: C++ Result: Accepted Time:0 ms Memory:1296 kb****************************************************************/#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cctype>#include<cmath>#include<ctime>#include<string>#include<stack>#include<deque>#include<queue>#include<list>#include<set>#include<map>#include<cstdio>#include<limits.h>#define MOD 1000000007#define fir first#define sec second#define fin freopen("H://input.txt", "r", stdin)#define fout freopen("H://output.txt", "w", stdout)#define mes(x, m) memset(x, m, sizeof(x))#define Pii pair<int, int>#define Pll pair<ll, ll>#define INF 1e9+7#define inf 0x3f3f3f3f#define Pi 4.0*atan(1.0)#define lowbit(x) (x&(-x))#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1typedef long long ll;typedef unsigned long long ull;const double eps = 1e-12;const int maxn = 36;using namespace std;inline int read(){ int x(0),f(1); char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}ll dp[20][10];int bit[20];int k;inline ll dfs(int pos,int extra,bool flag,bool zero){ if(pos==0){ return 1; } if(!zero&&!flag&&~dp[pos][extra]){ return dp[pos][extra]; } ll ret=0; int x=flag?bit[pos]:9; for(int i=0;i<=x;++i){ if(zero||(!zero&&abs(extra-i)>1)){ ret+=dfs(pos-1,i,flag&&i==bit[pos],zero&&!i); } } if(!flag&&!zero){ dp[pos][extra]=ret; } return ret;}ll cacl(ll n){ k=0; while(n){ bit[++k]=n%10; n/=10; } return dfs(k,0,true,true);}int main(){ mes(dp,-1); ll l,r; while(~scanf("%lld%lld",&l,&r)){ printf("%lld/n",cacl(r)-cacl(l-1));} return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溆浦县| 池州市| 定西市| 辽源市| 青浦区| 贺兰县| 大姚县| 镇康县| 兴和县| 荔浦县| 长汀县| 大冶市| 剑阁县| 稻城县| 巫溪县| 达拉特旗| 固镇县| 安仁县| 天峻县| 吉首市| 南投县| 甘谷县| 闽侯县| 黔东| 剑阁县| 黄龙县| 札达县| 漳州市| 施甸县| 阿瓦提县| 平原县| 开封县| 石家庄市| 洪泽县| 屏东市| 长岭县| 鄂州市| 东乌| 乌拉特中旗| 虹口区| 广汉市|