思路:

数位dp的操作是dfs+记忆化,我们dp开四维:位置,长度,进制,是否回文。然后每次暴搜记录下每个位置的数字是什么,搜到对称轴另一边需要检查是否符合回文。

终于把友谊赛的题目都补完了...没做出来的都是学过的,做出来的都是没学过骚操作过的...学以不致用...

代码:

#include<cstdio>
#include<set>
#include<stack>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 1000+5;
const int INF = 0x3f3f3f3f;
ll dp[40][40][40][2];
int bit[100],num[100];
ll dfs(int pos,int len,int k,int sta,bool limit){
if(pos < 0) return sta? k : 1;
if(!limit && dp[pos][len][k][sta] != -1) return dp[pos][len][k][sta];
int top = limit? bit[pos] : (k - 1);
ll ret = 0;
for(int i = 0;i <= top;i++){
num[pos] = i;
if(i == 0 && pos == len){ //前导〇
ret += dfs(pos - 1,len - 1,k,sta,limit && i == top);
}
else if(sta && pos < (len + 1)/2){
ret += dfs(pos - 1,len,k,i == num[len - pos],limit && i == top);
}
else{
ret += dfs(pos - 1,len,k,sta,limit && i == top);
}
}
if(!limit) dp[pos][len][k][sta] = ret;
return ret;
}
ll solve(int x,int k){
int pos = 0;
while(x){
bit[pos++] = x % k;
x /= k;
}
return dfs(pos - 1,pos - 1,k,1,true);
}
int main(){
int T,Case = 1;
int L,R,l,r;
scanf("%d",&T);
memset(dp,-1,sizeof(dp));
while(T--){
ll ans = 0;
scanf("%d%d%d%d",&L,&R,&l,&r);
for(int j = l;j <= r;j++){
ans += solve(R,j) - solve(L - 1,j);
}
printf("Case #%d: %lld\n",Case++,ans);
}
return 0;
}

最新文章

  1. 【SAP业务模式】之ICS(六):发票输出类型
  2. Python学习【第八篇】Set集合
  3. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)
  4. sysbench测试工具
  5. jQuery简单入门(四)
  6. 树莓派搭建安装mysql
  7. PHP执行系统命令
  8. rails关于utf8问题-------------------utf8申明必须置顶
  9. JSONP与JSON的关系
  10. Lucene 排序 Sort与SortField
  11. 《TCP/IP作品详细解释2:达到》注意事项--ARP:地址解析协议
  12. 卷积神经网络(CNN)反向传播算法
  13. [Usaco2015 Jan]Grass Cownoisseur 图论 tarjan spfa
  14. HTML基础-------HTML标签(3)
  15. [原创]创芯电子实验室iFPGA-Cable JTAG工具实物图
  16. 【Android基础】Fragment 详解之Fragment生命周期
  17. win7下MKVToolNix进行mkv字幕封装
  18. 第31节:Java基础-类与对象
  19. cSharp:use Activator.CreateInstance with an Interface?
  20. Homebrew&amp;Mongod

热门文章

  1. replace方法的深入理解
  2. Excel 2010 Alt+; (分号) --- “只选定当前选定区域中的可视单元格”
  3. 收集的可以下载css3字体图标的网站
  4. windows服务的默认启动类型和登录帐户
  5. nginx集群配置
  6. Python IDLE 安装与使用教程(调试、下载)
  7. Android复习
  8. 感知机PLA算法实现[转载]
  9. Python中被双下划线包围的魔法方法
  10. 爬取51job职位信息之编码问题