多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > LightOJ 1205 - Palindromic Numbers (數(shù)位dp)

LightOJ 1205 - Palindromic Numbers (數(shù)位dp)

來源:程序員人生   發(fā)布時間:2014-09-08 21:12:14 閱讀次數(shù):3232次

http://www.lightoj.com/volume_showproblem.php?problem=1205


求[i,j]區(qū)間內(nèi)回文數(shù)的個數(shù)。


為了使得處理到第pos位時,前面的狀態(tài)是確定的,設(shè)置一個輔助數(shù)組num[ ]表示該回文數(shù)前mid位的數(shù),根據(jù)前mid位數(shù)去確定后面的數(shù)。

這樣題目就變得簡單了,只需再確定了回文數(shù)的長度,然后進行記憶化。

dp[i][j]表示處理到第i位回文數(shù)的長度為j的個數(shù)。


#include <stdio.h> #include <iostream> #include <map> #include <set> #include <list> #include <stack> #include <vector> #include <math.h> #include <string.h> #include <queue> #include <string> #include <stdlib.h> #include <algorithm> //#define LL __int64 #define LL long long #define eps 1e-12 #define PI acos(-1.0) using namespace std; const int INF = 0x3f3f3f3f; const int maxn = 4010; int dig[20]; LL dp[20][20]; int num[20]; LL dfs(int pos, int len, int first, int up) { if(pos == 0) return 1; if(!up && !first && dp[pos][len] != -1) return dp[pos][len]; int n = up ? dig[pos] : 9; LL res = 0; for(int i = 0; i <= n; i++) { if(first) { num[len] = i; if(i == 0) res += dfs(pos-1,len-1,1,up&&i==n); else res += dfs(pos-1,len,0,up&&i==n); } else { int mid = (len+1)>>1; if(len&1) { if(pos >= mid) { num[pos] = i; res += dfs(pos-1,len,first&&i==0,up&&i==n); } else { if(num[2*mid-pos] == i) res += dfs(pos-1,len,first&&i==0,up&&i==n); } } else { if(pos >= (mid+1)) { num[pos] = i; res += dfs(pos-1,len,first&&i==0,up&&i==n); } else { if(num[len+1-pos] == i) res += dfs(pos-1,len,first&&i==0,up&&i==n); } } } } if(!up && !first) dp[pos][len] = res; return res; } LL cal(LL num) { int len = 0; while(num) { dig[++len] = num%10; num/=10; } return dfs(len,len,1,1); } int main() { int test; LL a,b; scanf("%d",&test); memset(dp,-1,sizeof(dp)); for(int item = 1; item <= test; item++) { scanf("%lld %lld",&a,&b); if(a > b) swap(a,b); printf("Case %d: %lld ",item,cal(b) - cal(a-1) ); } return 0; }


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲天堂日韩在线 | 老司机午夜免费福利视频 | 亚洲精品国产三级在线观看 | 欧美一区二区另类有声小说 | 2022国内精品免费福利视频 | 美xxxx| v天堂网 | 香蕉超级碰碰碰97视频在线观看 | 黑人又大又粗又长又深受不了 | 国产福利第一视频 | 羞羞动漫视频在线观看 | 日本欧美一区二区三区视频 | 亚洲视频精品在线 | 欧美精品高清 | 美女牲交毛片一级视频 | 日本午夜精品一本在线观看 | 国产无套免费网站 | 高清欧美不卡一区二区三区 | 麻豆精品不卡国产免费看 | 麻豆一区二区免费播放网站 | 淫欲影院 | 日本三级成人午夜视频网 | 欧美天堂视频 | 亚洲国产精品激情在线观看 | 亚拍精品一区二区三区 | 国产午夜精品片一区二区三区 | 亚洲免费观看 | 亚洲免费视频网站 | 国产精品福利自产拍网站 | 97欧美在线看欧美视频免费 | 亚洲乱码卡三乱码新区 | 久久不卡精品 | 日日夜夜天天久久 | 日韩一区二区三区四区区区 | www.日本在线观看 | 看一级毛片免费观看视频 | 欧美老人巨大xxxx做受视频 | 天堂色网站 | 亚洲国产成人精品女人久久久 | 最近新中文字幕大全高清 | 羞羞网站免费 |