HDU 4352 XHXJ's LIS (数位DP+状态压缩)
来源:互联网 发布:最新网络语 编辑:程序博客网 时间:2024/05/20 22:28
最长递增子序列很自然就想到二分(nlogn)的算法,用状态S存储二分后的答案,第i位为1就是i存在于二分的答案中。
注意前导0。
我的代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;typedef __int64 LL;const int inf = 0x3f3f3f3f;LL dp[20][1<<10][11],l,r,k;LL bit[20],top;int tm[20];int get_news(int s,int d){ fill(tm,tm+20,inf); int i,j; for(i=0,j=0;i<10;i++) if(s>>i&1) tm[j++] = i; *lower_bound(tm,tm+20,d) = d; int news = 0; for(i=0;i<10;i++) if(tm[i]!=inf) news |= (1 << tm[i]); return news;}int cnt(int s){ int res = 0,i; for(i=0;i<10;i++) if(s>>i&1) res++; return res;}LL dfs(int i,int s,bool e,bool z){ if(i == -1) return cnt(s) == k ? 1LL : 0; if(!e&&dp[i][s][k] != -1) return dp[i][s][k]; LL res = 0; int d,u = e ? bit[i] : 9; for(d = 0 ; d <= u ; d++){ res += dfs(i-1,z&&(d==0) ? 0 : get_news(s,d),e&&(d==u),z&&(d==0)); } return e?res:dp[i][s][k]=res;}LL solve(LL n){ top = 0; for(;n;n/=10) bit[top++] = n%10; return dfs(top-1,0,1,1);}int main(){ int cas; scanf("%d",&cas); memset(dp,-1,sizeof(dp)); for(int T=1;T<=cas;T++){ scanf("%I64d%I64d%I64d",&l,&r,&k); printf("Case #%d: %I64d\n",T,solve(r)-solve(l-1)); } return 0;}
0 0
- 数位dp+LIS+状态压缩-hdu-4352-XHXJ's LIS
- hdu 4352 XHXJ's LIS --- 数位dp 状态压缩
- [数位dp+状态压缩] hdu 4352 XHXJ's LIS
- HDU 4352 XHXJ's LIS (数位DP+状态压缩)
- HDU 4352 XHXJ's LIS(数位dp&状态压缩)
- HDU 4352 XHXJ's LIS(状态压缩+数位dp)
- hdu 4352 XHXJ's LIS(数位dp进阶,LIS, 状态压缩)
- HDU 4352 XHXJ's LIS(数位DP+LIS+状态压缩)
- hdu 4352 XHXJ's LIS (数位+状态DP)
- hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
- 【HDU】4352 XHXJ's LIS 数位DP
- 【数位DP】【hdu 4352】XHXJ's LIS
- HDU 4352 XHXJ's LIS 数位dp
- HDU 4352 XHXJ's LIS(数位DP)
- hdu 4352 XHXJ's LIS(数位dp)
- HDU 4352 XHXJ's LIS【数位DP】
- hdu4352---XHXJ's LIS(状态压缩数位dp)
- hdu4352 XHXJ's LIS 数位DP+状态压缩
- 全程解析Win7各个版本的主要区别
- c++11标准范围for语句的尝试
- 黑马程序员——java基础——反射机制的学习
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- angular-ui-route遇到Error: fnPtr is not a function或Error: m is not a function
- HDU 4352 XHXJ's LIS (数位DP+状态压缩)
- 枚举进程的两种方式
- mybatis按时间查询oracle数据
- Kafka深度解析
- win7远程桌面连接ubuntu14.04
- HDU 5289 Assignment(多校2015 RMQ 单调(双端)队列)
- 网络扫描工具nc&nmap
- opencv配置指南
- Spark 学习资源收集【Updating】