奇妙的题。

你先得会另外一个nlogn的LIS算法。(我一直只会BIT。。。。。)

然后维护下每个数码作为结尾出现过没有就完了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
long long t,l,r,k,ret=,bit[];
struct pnt
{
long long k[];
}dp[][<<];
void reset()
{
for (long long i=;i<=;i++)
for (long long j=;j<(<<);j++)
for (long long k=;k<=;k++)
dp[i][j].k[k]=-;
}
void get_bit(long long x)
{
ret=;
while (x) {bit[++ret]=x%;x/=;}
}
long long bit_cnt(long long x)
{
long long ret=;
while (x) {if (x&) ret++;x>>=;}
return ret;
}
long long get_sets(long long sets,long long x)
{
if (sets&(<<x)) return sets;
sets|=(<<x);
for (long long i=x+;i<=;i++)
{
if (sets&(<<i))
{
sets^=(<<i);
return sets;
}
}
return sets;
}
pnt comb(pnt x,pnt y)
{
for (long long i=;i<=;i++)
x.k[i]+=y.k[i];
return x;
}
pnt dfs(long long pos,long long sets,bool flag)
{
if (!pos)
{
long long now=bit_cnt(sets);pnt ret;
for (long long i=;i<=;i++)
{
if (i==now) ret.k[i]=;
else ret.k[i]=;
}
return ret;
}
if ((!flag) && (~dp[pos][sets].k[])) return dp[pos][sets];
pnt ans;long long up=flag?bit[pos]:;
for (long long i=;i<=;i++) ans.k[i]=;
for (long long i=;i<=up;i++)
ans=comb(ans,dfs(pos-,get_sets(sets,i),flag&&i==up));
if (!flag) dp[pos][sets]=ans;
return ans;
}
long long ask(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,).k[k];
for (long long j=;j<=bit[ret]-;j++)
ans+=dfs(ret-,<<j,).k[k];
ans+=dfs(ret-,<<bit[ret],).k[k];
return ans;
}
void work(long long x)
{
scanf("%lld%lld%lld",&l,&r,&k);
printf("Case #%lld: %lld\n",x,ask(r)-ask(l-));
}
int main()
{
scanf("%lld",&t);reset();
for (long long i=;i<=t;i++) work(i);
return ;
}

HDU 4352 XHXJ's LIS的更多相关文章

  1. HDU 4352 XHXJ's LIS 数位dp lis

    目录 题目链接 题解 代码 题目链接 HDU 4352 XHXJ's LIS 题解 对于lis求的过程 对一个数列,都可以用nlogn的方法来的到它的一个可行lis 对这个logn的方法求解lis时用 ...

  2. HDU 4352 XHXJ's LIS HDU(数位DP)

    HDU 4352 XHXJ's LIS HDU 题目大意 给你L到R区间,和一个数字K,然后让你求L到R区间之内满足最长上升子序列长度为K的数字有多少个 solution 简洁明了的题意总是让人无从下 ...

  3. hdu 4352 XHXJ's LIS 数位dp+状态压缩

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others ...

  4. HDU 4352 - XHXJ's LIS - [数位DP][LIS问题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  5. hdu 4352 XHXJ's LIS (数位dp+状态压缩)

    Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully readin ...

  6. HDU 4352 XHXJ's LIS HDU 题解

    题目 #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully reading the ent ...

  7. hdu 4352 XHXJ's LIS(数位dp+状压)

    Problem Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefull ...

  8. hdu 4352 "XHXJ's LIS"(数位DP+状压DP+LIS)

    传送门 参考博文: [1]:http://www.voidcn.com/article/p-ehojgauy-ot.html 题解: 将数字num字符串化: 求[L,R]区间最长上升子序列长度为 K ...

  9. HDU.4352.XHXJ's LIS(数位DP 状压 LIS)

    题目链接 \(Description\) 求\([l,r]\)中有多少个数,满足把这个数的每一位从高位到低位写下来,其LIS长度为\(k\). \(Solution\) 数位DP. 至于怎么求LIS, ...

随机推荐

  1. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  2. ajax完整结构

    $.ajax({ url:"服务器", data:{"key":所传数据}, type:"post", dataType:"jso ...

  3. [问题2014A04] 解答

    [问题2014A04]  解答 (1) 由条件可得 \(AB+BA=0\), 即 \(AB=-BA\), 因此 \[AB=A^2B=A(AB)=A(-BA)=-(AB)A=-(-BA)A=BA^2=B ...

  4. 各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转]

    各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转] 网站通过 Cookie 保存了我们访问网站的信息,在不同的浏览器中修改 Cookie 可以如下操作: Firef ...

  5. Chrome浏览器快捷键大全(新加了其他一些浏览器的独有)

    官方快捷键文档: https://support.google.com/chrome/answer/157179?hl=zh-Hans&ref_topic=14676   浏览器标签页和窗口快 ...

  6. 关于Java项目打包

    可以选择以下几种办法: 一.使用Eclipse,右键项目导出jar. 二.使用Eclipse,右键项目导出runnable jar. 三.使用Eclipse 插件fat jar,导出可执行的jar包. ...

  7. 微信小程序-视图

    数据绑定 <!--wxml--> <view> {{message}} </view> // page.js Page({ data: { message: 'He ...

  8. JQ写简单的伸缩菜单(内附效果图和源代码)

    效果如图: JQ代码就那么几句, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  9. onethink使用经验

    1 建议随时从oschina上下载onethink的最新版本,如果你遇到了怎么都解决不了的问题,比如菜单管理自定义菜单,左侧二级菜单不显示的问题,好像有一个历史版本就是有bug,好像是1.1开始的一个 ...

  10. mac pycharm配置 python

    一.首先查看自己安装的python的路径 在terminal运行 which python(which命令只是根据PATH环境变量找) 例如:/usr/bin/python 二.设置python版本 ...