题意

题目链接

Sol

刚开始的思路是\(f[i][j]\)表示到第\(i\)位,LIS长度为\(j\)的方案。

然而发现根本不能转移,除非知道了之前的状态然后重新dp一遍。。

题解,,,挺暴力的把,直接把求LIS过程中的单调栈当成一个状态压进去了。。

自己真是不长记性,明明已经被这个单调栈坑过一次了。。

考虑到\(k\)非常小,于是直接对\(k\)进行状压

设\(f[i][sta][j]\)表示长度为\(i\),单调栈内状态为\(sta\), LIS长度为\(k\)的方案数

最后一维如果是单组数据的话是不必要的。但是考虑到时多组数据,就一起加进来吧。

转移的时候枚举一下这一位放了什么,然后暴力的改一下LIS的状态。

#include<bits/stdc++.h>
#define LL long long
#define int long long
using namespace std;
const int MAXN = 1e5 + 10;
LL T, l, r, K;
int f[64][1 << 10][11];//长度为i,lis为k的方案数
int a[MAXN], num;
int change(int S, int x) {//向状态s中加入一个数x
for(int i = x; i <= 9; i++)
if(S & (1 << i)) {S ^= (1 << i); break;}
return S | (1 << x);
}
int dfs(int now, int lim, int lead, int s) {
// printf("%d %d %d %d\n", now, lim, lead, s);
if(!now) return (__builtin_popcount(s) == K);
if(!lim && f[now][s][K] != -1) return f[now][s][K];
int ans = 0;
for(int i = 0; i <= (lim ? a[now] : 9); i++)
ans += dfs(now - 1, lim && i == a[now], lead && (!i), (lead && (!i)) ? 0 : change(s, i));
if(!lim) f[now][s][K] = ans;
return ans;
}
LL solve(LL x) {
num = 0;
while(x) a[++num] = x % 10, x /= 10;
// cout << num << endl;
dfs(num, 1, 1, 0);
}
main() {
memset(f, -1, sizeof(f));
cin >> T;
for(int i = 1; i <= T; i++) {
cin >> l >> r >> K;
printf("Case #%d: ", i);
cout << solve(r) - solve(l - 1) << endl;
}
return 0;
}

HDU4352 XHXJ's LIS(LIS 状压)的更多相关文章

  1. 【数位dp+状压】XHXJ 's LIS

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

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

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

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

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

  4. 【HDU】4352 XHXJ's LIS(数位dp+状压)

    题目 传送门:QWQ 分析 数位dp 状压一下现在的$ O(nlogn) $的$ LIS $的二分数组 数据小,所以更新时直接暴力不用二分了. 代码 #include <bits/stdc++. ...

  5. hdu4352-XHXJ's LIS状压DP+数位DP

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 题意:传送门  原题目描述在最下面.  在区间内把整数看成一个阿拉伯数字的集合,此集合中最长严格上升子序列的长度为k的个数. 思路: ...

  6. BZOJ 3864 Hero meet devil (状压DP)

    最近写状压写的有点多,什么LIS,LCSLIS,LCSLIS,LCS全都用状压写了-这道题就是一道状压LCSLCSLCS 题意 给出一个长度为n(n<=15)n(n<=15)n(n< ...

  7. 「BZOJ 5161」最长上升子序列「状压DP」

    题意 求一个\(1\sim n\)的排列LIS的期望长度,\(n\leq 28\) 题解 考虑朴素的LIS:\(f[i] = min(f[j]) + 1\) 记\(mx[i]\)为\(f\)的前缀最大 ...

  8. bzoj5161 最长上升子序列 状压DP(DP 套 DP) + 打表

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5161 题解 回顾一下以前用二分求 LIS 的方法:令 \(f[i]\) 表示长度为 \(i\) ...

  9. 洛谷 P4484 - [BJWC2018]最长上升子序列(状压 dp+打表)

    洛谷题面传送门 首先看到 LIS 我们可以想到它的 \(\infty\) 种求法(bushi),但是对于此题而言,既然题目出这样一个数据范围,硬要暴搜过去也不太现实,因此我们需想到用某种奇奇怪怪的方式 ...

  10. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

随机推荐

  1. unreal3对象管理模块分析二

    上一篇主要记了UClass的创建,现在总结一下UObject的创建,可以从几个不同角度来理解. 从途径上看,可以根据UObject的构造函数来分个类: // Constructors. UObject ...

  2. jquery选择器中的find和空格,children和>的区别、及父节点兄弟节点,还有判断是否存在的写法

     一.find和空格,children和>及其它的区别   空格:$('parent childchild')表示获取parent下的所有的childchild节点(所有的子孙). 等效成  = ...

  3. 更改数据,ExecuteNonQuery()

    using (mycon) { mycon.Open(); string MyTime; DateTime dtDate; MyTime = textBox1.Text.ToString(); str ...

  4. OC官方文档翻译-Working-with-Protocols-协议的使用

    查看全部文档翻译,请浏览https://github.com/L1l1thLY/Programming-with-Objective-C-in-Chinese,blog仅收录本人翻译的两章. 简述 在 ...

  5. linux添加软件的service start/stop快捷服务(简单版)

    首先我们先需要一款软件,例如“apache” 安装解压至相应目录“/home/aaa/apache” 开始操作:进入“/etc/init.d/”中,新建一个service服务运行脚本“tomcat”, ...

  6. Educational Codeforces Round 52F(树形DP,VECTOR)

    #include<bits/stdc++.h>using namespace std;int n,k;vector<int>son[1000007];int dp[100000 ...

  7. GoWeb开发_Iris框架讲解(二):Get、Post、Put等请求及数据返回格式

    数据请求方式的分类 所有的项目中使用的请求都遵循HTTP协议标准,HTTP协议经过了1.0和1.1两个版本的发展. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP ...

  8. Baidu - Echarts 地图实例测试,并绘制平滑圆弧路径

    百度Echarts实例地址: http://echarts.baidu.com/examples.html 同事想做一个地图,地图上的几个点通过动态的线连接起来.但是在实例里没找到类似的. 然后仔细分 ...

  9. ios json转model的简单现实

    在android开发中,可用第三方的转换库如gson等.当然在ios也有一些库如MJExtensiond等.在这里,我简单实现一下. 一.先建一个model并且继承NSObject,代码如下: cla ...

  10. SSM整合文档

    SSM整合文档 v2 一. 文件说明 文件名 描述 spring-servlet.xml 配置SpringMvc框架相关 applicationContext.xml 配置Spring容器 sprin ...