一开始题看错了。。。dp[pos][sets][viss],其中sets表示出现次数,viss表示出现没有。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long t,l,r,dp[][][],bit[],ret=;
void get_bit(long long x)
{
ret=;
while (x) {bit[++ret]=x%;x/=;}
}
long long check(long long sets,long long viss)
{
for (long long i=;i<=;i++)
{
if (!(viss&(<<i))) continue;
if ((i&) && (sets&(<<i))) return ;
if ((!(i&)) && (!(sets&(<<i)))) return ;
}
return ;
}
long long dfs(long long pos,long long sets,long long viss,bool flag)
{
if (!pos) return check(sets,viss);
if ((!flag) && (~dp[pos][sets][viss])) return dp[pos][sets][viss];
long long ans=,up=flag?bit[pos]:;
for (long long i=;i<=up;i++)
ans+=dfs(pos-,sets^(<<i),viss|(<<i),flag&&(i==up));
if (!flag) dp[pos][sets][viss]=ans;
return ans;
}
long long work(long long x)
{
if (!x) return ;
get_bit(x);long long ans=;
for (long long i=;i<=ret-;i++)
for (long long j=;j<=;j++)
ans+=dfs(i-,<<j,<<j,);
for (long long j=;j<=bit[ret]-;j++)
ans+=dfs(ret-,<<j,<<j,);
ans+=dfs(ret-,<<bit[ret],<<bit[ret],);
return ans;
}
int main()
{
scanf("%lld",&t);memset(dp,-,sizeof(dp));
for (long long i=;i<=t;i++)
{
scanf("%lld%lld",&l,&r);
printf("%lld\n",work(r)-work(l-));
}
return ;
}

最新文章

  1. 【清华集训】楼房重建 BZOJ 2957
  2. Spring3.0目录
  3. c++ 中static关键字
  4. Java 最简单的批处理
  5. 【转】火火火火火!看HomeKit如何改变物联网和智能家居?
  6. python运维开发(二十)----models操作、中间件、缓存、信号、分页
  7. 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
  8. Java学习网站大全
  9. 【Docker笔记】-开启TCP管理端口
  10. leetcode — remove-duplicates-from-sorted-list-ii
  11. Django create和save方法
  12. [NOIP2014D2]
  13. Win32 SDK:ListBox 为什么不整个 LB_SETTEXT
  14. haploview画出所有SNP的LD关系图
  15. 现在越来越喜欢用ajax传值了,这样能让网站的体验性很好,今天就总结了一下常用的
  16. nfs 客户端挂住
  17. Python: TypeError: &#39;dict&#39; object is not callable
  18. loadrunner怎么解决录制完成后脚本为空
  19. def函数之另类用法
  20. Metal Programming Guide

热门文章

  1. 解决PowerDesigner 生成Sql2005-2012 找不到sysproperties表的问题
  2. 【转】Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道
  3. js中const,var,let区别
  4. 隐式意图Intent
  5. placeholder兼容ie8
  6. Python Locust性能测试框架实践
  7. filebeat 多行日志的处理
  8. WebForm水印照片
  9. [问题2014A01] 解答一(第一列拆分法,由张钧瑞同学提供)
  10. 关于Youtube URL的十个技巧