按照nlogn求lis的方法,把lis的状态压缩了,每次新加一个数就把它右边第一个数的位置置为0,然后把这个数加进去

一个需要注意的地方,如果前面都是0,那么状态s中代表0的位置不可以是1,因为这种情况下0不可以被算作是lis里的一位

/*
dp[i][j][k]表示后面还有i位,前面的lis状态是j,要求lis长度为k的个数
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k,a[],dp[][<<][];
ll update(ll x,ll s){
for(int i=x;i<;i++)
if(s&(<<i))
return (s^(<<i))|(<<x);
return s|(<<x);
}
ll calc(ll s){
ll res=;
for(int i=;i<=;i++)
if(s&(<<i))res++;
return res;
}
ll dfs(ll pos,ll s,ll lim,int zero){//zero=1表示前面都是0
if(pos<=)return calc(s)==k;
if(!lim && dp[pos][s][k]!=-)return dp[pos][s][k]; ll res=,num=lim?a[pos]:;
for(int i=;i<=num;i++){
int z=zero&&(i==);
res+=dfs(pos-,z?:update(i,s),lim&&i==num,z);
}
if(!lim)dp[pos][s][k]=res;
return res;
}
ll solve(ll x){
if(x<)return ;
int len=;
memset(a,,sizeof a);
while(x){
a[++len]=x%;
x/=;
}
return dfs(len,,,);
}
int main(){
int t;
cin>>t;
memset(dp,-,sizeof dp);
ll a,b;
for(int tt=;tt<=t;tt++){
cin>>a>>b>>k;
printf("Case #%d: ",tt);
cout<<solve(b)-solve(a-)<<endl;
}
}

hdu4352 数位dp+状态压缩+一个tip的更多相关文章

  1. hdu_4352_XHXJ's LIS(数位DP+状态压缩)

    题目连接:hdu_4352_XHXJ's LIS 题意:这题花大篇篇幅来介绍电子科大的一个传奇学姐,最后几句话才是题意,这题意思就是给你一个LL范围内的区间,问你在这个区间内最长递增子序列长度恰为K的 ...

  2. hdu 4352 数位dp + 状态压缩

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]

    题目链接:http://www.spoj.com/problems/BALNUM/en/ Time limit: 0.123s Source limit: 50000B Memory limit: 1 ...

  4. 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 ...

  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 (数位DP+状态压缩+LIS)

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. SPOJ BALNUM Balanced Numbers(数位DP+状态压缩)题解

    思路: 把0~9的状态用3进制表示,数据量3^10 代码: #include<cstdio> #include<map> #include<set> #includ ...

  8. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  9. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...

随机推荐

  1. VUE 绑定背景图片的写法

    <div v-bind:style='{"background-image":"url("+imgUrl+")"}' >< ...

  2. nginx代理部署Vue与React项目

    nginx代理部署Vue与React项目 一,介绍与需求 1.1,介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由 ...

  3. 一、Swagger配置

    一.Swagger配置 1.注解不显示 SwaggerConfig文件下   //c.IncludeXmlComments(GetXmlCommentsPath()):  内下面添加: c.Inclu ...

  4. 题解-洛谷P1303 A*B Problem(高精)

    https://www.luogu.org/problemnew/show/P1303(题目传送门) 看到数据范围,显然要用高精度算法(乘法). 首先用字符串读下这最多达10^2000的数,并判断符号 ...

  5. docker基本概念

    详细参考https://www.jianshu.com/p/9deb6f41d5bd

  6. Linux中的pipe(管道)与named pipe(FIFO 命名管道)

    catalogue . pipe匿名管道 . named pipe(FIFO)有名管道 1. pipe匿名管道 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常 ...

  7. Object is not a function

    如图报了一个这样的错,百度好多都说是函数名和html元素重名的问题.可是这个问题我想我这里是不存在的 可以看到就一个绑定事件,而且id名不是关键字 报错是在$.ajax这一行,索性就把submit-i ...

  8. golang net包使用

    创建简单的响应服务器 package main import ( "net/http" ) func handlerFunc(w http.ResponseWriter, r *h ...

  9. 第一节:.Net版基于WebSocket的聊天室样例

    一. 说在前面的话 该篇文章为实时通讯系列的第一节,基于WebSocket编写了一个简易版聊天样例,主要作用是为引出后面SignalR系列的用法及其强大方便之处,通过这个样例与后续的SignalR对比 ...

  10. MySQL无法插入中文的解决方案

    本人在做数据库的连接过程中,发现无法插入中文值.原因是mysql的默认编码是latin1,只须将编码改为utf8即可. 在mysql的命令行窗口中输入 status 会出现当前的编码.在mysql的安 ...