HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛
2017-08-20 12:19
555 查看
普通的数位DP计算回文串个数
/* HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 2-36进制下回文串个数 */ #include <bits/stdc++.h> using namespace std; #define LL long long int t, L, R, l, r, base; int dig[40], tmp[40]; LL dp[40][40][40][2]; LL DFS(int pos, int start, bool state, bool limit) { if (pos < 0) return state; if (!limit && dp[base][pos][start][state] != -1) return dp[base][pos][start][state]; int end = (limit ? dig[pos] : base-1); LL res = 0; for (int i = 0; i <= end; i++) { tmp[pos] = i; if (pos == start && i == 0) { res += DFS(pos-1, start-1, state, limit && (i == end)); } else if (state && pos < (start+1)/2) { res += DFS(pos-1, start, tmp[start-pos] == i, limit && (i == end)); } else { res += DFS(pos-1, start, state, limit&&(i == end)); } } if (!limit) dp[base][pos][start][state] = res; return res; } LL Cal(LL x) { int len = 0; while (x) { dig[len++] = x % base; x /= base; } return DFS(len-1, len-1, 1, 1); } LL solve() { LL num = (Cal(R) - Cal(L-1)); return num*base + (R-L+1-num); } int main() { memset(dp, -1, sizeof(dp)); scanf("%d", &t); for (int tt = 1; tt <= t; tt++) { scanf("%d%d%d%d", &L, &R, &l, &r); LL ans = 0; for (int i = l; i <= r; i++) { base = i; ans += solve(); } printf("Case #%d: %lld\n", tt, ans); } }
相关文章推荐
- 2017中国大学生程序设计竞赛 - 网络选拔赛 && HDU 6156 Palindrome Function 【数位DP】
- 【2017中国大学生程序设计竞赛 - 网络选拔赛】Palindrome Function
- HDU 6156 2016ICPC网络赛 G: Palindrome Function(数位DP)
- HDU-2017中国大学生程序设计竞赛-网络选拔赛-1004-A Secret
- HDU-2017中国大学生程序设计竞赛-网络选拔赛-部分题解及代码
- hdu 6156 Palindrome Function【数位dp求回文数】
- HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛
- Hdu 6156 Palindrome Function【数位Dp】
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph 暴暴暴暴力
- Palindrome Function HDU - 6156 数位DP
- 【2017中国大学生程序设计竞赛 - 网络选拔赛 && hdu 6154】CaoHaha's staff
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6156 数位DP
- 【2017中国大学生程序设计竞赛 - 网络选拔赛 hdu 6150】Vertex Cover
- hdu 6156 Palindrome Function 数位DP
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6154 CaoHaha's staff 思维
- HDU-2017中国大学生程序设计竞赛-网络选拔赛-1001-Vertex Cover
- hdu--6154--CaoHaha's staff(2017中国大学生程序设计竞赛 - 网络选拔赛)
- HDU-2017中国大学生程序设计竞赛-网络选拔赛-1003-Friend-Graph
- HDU 6156 Palindrome Function【数位dp】
- HDU 6150 - Vertex Cover | 2017 中国大学生程序设计竞赛 - 网络选拔赛