题意

题目链接

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. Angular06 组件、模块、父子组件之间的数据传递

    1 创建组件 进入到angular项目的根目录,执行如下命令 ng g component test-component 注意:执行完上述命令后在angular项目的src/app文件夹下就会多出一个 ...

  2. PCLVisualizer可视化类(2)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=163 可视化点云颜色特征 所示,点赋予不同的颜色表征其对应的z轴值不同.PC ...

  3. 16、SGE作业调度系统的简介

    转载:http://www.zilhua.com/2222.html http://gridscheduler.sourceforge.net/htmlman/ SGE作业调度系统的简介 一.常见的几 ...

  4. 各版本Google浏览器下载地址

    各版本谷歌浏览器下载地址 https://www.chromedownloads.net/chrome64win/

  5. struts2的package和result的标签的属性

    package的属性 1.name: 配置package元素时必须指定name属性,这是引用该包的唯一标识. 2.extends: 可选属性,指定该包继承的父包,子包可以从一个或多个父包中继承到拦截器 ...

  6. Windows form UI skinEngine的使用方法

    1.安装SkinEngine(这里安装的是3.4.7) 链接: https://pan.baidu.com/s/1-kZ5KgYclshWc17jbuke5w 提取码: bp7n 复制这段内容后打开百 ...

  7. OC 中的 weak 属性是怎么实现的?

    OC 中的 weak 属性是怎么实现的,为什么在对象释放后会自动变成 nil?本文对这个问题进行了一点探讨.环境 mac OS Sierra 10.12.4 objc709参考答案 搜索后发现runt ...

  8. Tomcat底层通过全类名创建对象的实现

    示例: //com.neuedu.baier.entity.User为User类的全类名 //要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 Class<?> user ...

  9. 关于STL库中的max min swap

    嗯...   不得不说c++中的STL库是一个神奇的东西   可以使你的代码显得更加简洁....   今天就只讲STL中的三个鬼畜:   max       min       swap   具体操作 ...

  10. Luogu P4901 排队 fib数列+树状数组+倍增

    这题让我升华..还好只重构了一遍 首先我们发现:$n$较小时,整个队伍的形态 跟 $n$ 比较大时的局部是一样的 所以我们预处理出这个队伍的形态,和每一行每个位置的质因子个数的前缀和,$O(nlogn ...